Unity3D笔记 愤怒的小鸟六 弹弓发射小鸟
生活随笔
收集整理的這篇文章主要介紹了
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笔记 愤怒的小鸟六 弹弓发射小鸟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于DB2 MQT 增量更新,出错代码详
- 下一篇: 数据结构——线性表之链式存储结构