日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Unity3D笔记 愤怒的小鸟六 弹弓发射小鸟

發布時間:2025/5/22 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3D笔记 愤怒的小鸟六 弹弓发射小鸟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要實現的目標

  實現個性化的鼠標
  實現彈弓
  選擇小鳥、拉升彈弓、發射小鳥
  彈弓橡皮筋
  聲音

?

1、實現個性化鼠標

?

效果

?

2、添加彈弓

建立兩個材質

創建一個空GameObject 把兩個shoot拖進來統一管理

3、建一個空GameObject 彈弓slingShot

  3.1把投擲中心移動到彈弓發射中心,就是小鳥發射架

  

  3.2創建一個Sphere碰撞體

  調整好radius=0.2大小

4、拉伸彈弓、發射小鳥代碼

?

using UnityEngine; using System.Collections;public class slingShot : MonoBehaviour {/// <summary>/// 小鳥/// </summary>public GameObject bird;/// <summary>/// 彈弓拉伸的聲音/// </summary>public AudioClip slingShotSound;/// <summary>/// 飛行聲音/// </summary>public AudioClip flyingSound;/// <summary>/// 彈弓橡皮筋顏色/// </summary>public Color myColor;/// <summary>/// 是否按下鼠標/// </summary>private bool isClick = false;/// <summary>/// 發射出去的小鳥/// </summary>private GameObject shot;/// <summary>/// 拉伸彈弓小鳥的位置/// </summary>private Vector3 lastKnowPosition;private Vector3 direction;/// <summary>/// [?m?gn?tju:d] n. 巨大,廣大;重大,重要;量級;(地震)級數 /// </summary>private float magnitude;/// <summary>/// 小鳥運動的軌跡線/// </summary>public static bool isDrawing = false;/// <summary>/// 小鳥發出去后下一個小鳥是否上彈弓/// </summary>public static bool isJump = false;/// <summary>/// 飛出去的小鳥/// </summary>public static GameObject myBird;/// <summary>/// 發射的是那只小鳥/// </summary>public static int birdNumber;/// <summary>/// 畫彈弓的橡皮筋/// </summary>private LineRenderer lineRenderer;private int index = 0;private Vector3 position;// Use this for initializationvoid Start(){birdNumber = -1;lineRenderer = gameObject.AddComponent<LineRenderer>();//添加對象 畫兩條線lineRenderer.material.color = myColor;lineRenderer.SetWidth(0.1f, 0.1f);//設置寬度lineRenderer.SetVertexCount(3);//橡皮筋兩個點+小鳥一個點 ['v?:teks] n. 最高點;頂點;<數>(三角形、圓錐體等與底相對的)頂;(三角形、多邊形等的)角的頂點 }// Update is called once per framevoid Update(){bool isMouseDown = Input.GetMouseButton(0);if (!isClick)//拖放小鳥 沒有點擊 {if (isMouseDown){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//把鼠標的點定義一個射線RaycastHit hit;//光線投射碰撞if (collider.Raycast(ray, out hit, 10.0f))//光線投射 選擇小鳥 [distance光線的長度。] {isClick = true;if (birdNumber <= 1){//Instantiate()克隆原始物體,位置設置在position,設置旋轉在rotation,返回的是克隆后的物體//Quaternion.identity:返回恒等式旋轉(只讀)。這個四元數對于“無旋轉”:這個物體完全對齊于世界或父軸。shot = Instantiate(bird, transform.position, Quaternion.identity) as GameObject;//動態的生成被發射的小鳥 [?ns't?n??e?t] 實例化 //Physics.IgnoreCollision 忽略碰撞:使碰撞體1和碰撞體2的碰撞偵測無效。Physics.IgnoreCollision(shot.collider, GetComponent<Collider>()); //忽略小鳥碰撞體shot.rigidbody.isKinematic = true;//運動屬性myBird = GameObject.FindWithTag("bird0");//拉伸位置的BirdmyBird.active = false;//隱藏 }}}}else if (isMouseDown){var lastDirection = direction;lastKnowPosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0.8f));direction = transform.position - lastKnowPosition;direction.Normalize();//規范化當規范化時,一個向量保持相同的方向,但它的長度為1.0。magnitude = Mathf.Min(Vector3.Distance(transform.position, lastKnowPosition), 2.5f);//最小值:橡皮筋拉伸距離;返回兩個或更多值中最小的值。shot.transform.position = transform.position + direction * (-magnitude);lineRenderer.enabled = true;//LineRenderer :線渲染器 如果啟用,使被渲染的物體可見//三點:小鳥+彈弓兩點lineRenderer.SetPosition(0, new Vector3(-5.1f, 2.2f, 0.1f));//彈弓橡皮筋點lineRenderer.SetPosition(1, shot.transform.position);//小鳥點lineRenderer.SetPosition(2, new Vector3(-5.6f, 1.2f, -0.1f));//彈弓橡皮筋點if (direction != lastDirection){if (!audio.isPlaying){PlaySound(slingShotSound);} }}else//發射 {birdNumber++;if (birdNumber<=2){GameObject birdObject2 = GameObject.FindWithTag("birdClone");//實例化的小鳥也就是飛出去的小鳥if (birdObject2!=null){Destroy(birdObject2, 1.0f);////加載物體1秒后銷毀游戲物體 }lineRenderer.enabled = false;//不顯示橡皮筋了shot.collider.isTrigger = false;shot.rigidbody.isKinematic = false;// 是否動力學:[?k?n?'m?t?k] adj. 運動學的,運動學上的shot.rigidbody.velocity = direction * 7.0f * magnitude;//速度shot.rigidbody.useGravity = true;if (audio.isPlaying){audio.Stop();}PlaySound(flyingSound); shot.tag = "birdClone";isClick = false;}}}/// <summary>/// 小鳥拉伸發生聲音/// </summary>/// <param name="soundName"></param>/// <returns></returns>public void PlaySound(AudioClip soundName){if (!audio.isPlaying){audio.clip = soundName;audio.Play(); new WaitForSeconds(audio.clip.length);} } }

?

5、最終效果

?

轉載于:https://www.cnblogs.com/PEPE/p/3553281.html

總結

以上是生活随笔為你收集整理的Unity3D笔记 愤怒的小鸟六 弹弓发射小鸟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。