Unity3D笔记 愤怒的小鸟六 弹弓发射小鸟
生活随笔
收集整理的這篇文章主要介紹了
Unity3D笔记 愤怒的小鸟六 弹弓发射小鸟
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
要實(shí)現(xiàn)的目標(biāo)
實(shí)現(xiàn)個(gè)性化的鼠標(biāo)
實(shí)現(xiàn)彈弓
選擇小鳥(niǎo)、拉升彈弓、發(fā)射小鳥(niǎo)
彈弓橡皮筋
聲音
?
1、實(shí)現(xiàn)個(gè)性化鼠標(biāo)
?
效果
?
2、添加彈弓
建立兩個(gè)材質(zhì)
創(chuàng)建一個(gè)空GameObject 把兩個(gè)shoot拖進(jìn)來(lái)統(tǒng)一管理
3、建一個(gè)空GameObject 彈弓slingShot
3.1把投擲中心移動(dòng)到彈弓發(fā)射中心,就是小鳥(niǎo)發(fā)射架
3.2創(chuàng)建一個(gè)Sphere碰撞體
調(diào)整好radius=0.2大小
4、拉伸彈弓、發(fā)射小鳥(niǎo)代碼
?
using UnityEngine; using System.Collections;public class slingShot : MonoBehaviour {/// <summary>/// 小鳥(niǎo)/// </summary>public GameObject bird;/// <summary>/// 彈弓拉伸的聲音/// </summary>public AudioClip slingShotSound;/// <summary>/// 飛行聲音/// </summary>public AudioClip flyingSound;/// <summary>/// 彈弓橡皮筋顏色/// </summary>public Color myColor;/// <summary>/// 是否按下鼠標(biāo)/// </summary>private bool isClick = false;/// <summary>/// 發(fā)射出去的小鳥(niǎo)/// </summary>private GameObject shot;/// <summary>/// 拉伸彈弓小鳥(niǎo)的位置/// </summary>private Vector3 lastKnowPosition;private Vector3 direction;/// <summary>/// [?m?gn?tju:d] n. 巨大,廣大;重大,重要;量級(jí);(地震)級(jí)數(shù) /// </summary>private float magnitude;/// <summary>/// 小鳥(niǎo)運(yùn)動(dòng)的軌跡線(xiàn)/// </summary>public static bool isDrawing = false;/// <summary>/// 小鳥(niǎo)發(fā)出去后下一個(gè)小鳥(niǎo)是否上彈弓/// </summary>public static bool isJump = false;/// <summary>/// 飛出去的小鳥(niǎo)/// </summary>public static GameObject myBird;/// <summary>/// 發(fā)射的是那只小鳥(niǎo)/// </summary>public static int birdNumber;/// <summary>/// 畫(huà)彈弓的橡皮筋/// </summary>private LineRenderer lineRenderer;private int index = 0;private Vector3 position;// Use this for initializationvoid Start(){birdNumber = -1;lineRenderer = gameObject.AddComponent<LineRenderer>();//添加對(duì)象 畫(huà)兩條線(xiàn)lineRenderer.material.color = myColor;lineRenderer.SetWidth(0.1f, 0.1f);//設(shè)置寬度lineRenderer.SetVertexCount(3);//橡皮筋兩個(gè)點(diǎn)+小鳥(niǎo)一個(gè)點(diǎn) ['v?:teks] n. 最高點(diǎn);頂點(diǎn);<數(shù)>(三角形、圓錐體等與底相對(duì)的)頂;(三角形、多邊形等的)角的頂點(diǎn) }// Update is called once per framevoid Update(){bool isMouseDown = Input.GetMouseButton(0);if (!isClick)//拖放小鳥(niǎo) 沒(méi)有點(diǎn)擊 {if (isMouseDown){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//把鼠標(biāo)的點(diǎn)定義一個(gè)射線(xiàn)RaycastHit hit;//光線(xiàn)投射碰撞if (collider.Raycast(ray, out hit, 10.0f))//光線(xiàn)投射 選擇小鳥(niǎo) [distance光線(xiàn)的長(zhǎng)度。] {isClick = true;if (birdNumber <= 1){//Instantiate()克隆原始物體,位置設(shè)置在position,設(shè)置旋轉(zhuǎn)在rotation,返回的是克隆后的物體//Quaternion.identity:返回恒等式旋轉(zhuǎn)(只讀)。這個(gè)四元數(shù)對(duì)于“無(wú)旋轉(zhuǎn)”:這個(gè)物體完全對(duì)齊于世界或父軸。shot = Instantiate(bird, transform.position, Quaternion.identity) as GameObject;//動(dòng)態(tài)的生成被發(fā)射的小鳥(niǎo) [?ns't?n??e?t] 實(shí)例化 //Physics.IgnoreCollision 忽略碰撞:使碰撞體1和碰撞體2的碰撞偵測(cè)無(wú)效。Physics.IgnoreCollision(shot.collider, GetComponent<Collider>()); //忽略小鳥(niǎo)碰撞體shot.rigidbody.isKinematic = true;//運(yùn)動(dòng)屬性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();//規(guī)范化當(dāng)規(guī)范化時(shí),一個(gè)向量保持相同的方向,但它的長(zhǎng)度為1.0。magnitude = Mathf.Min(Vector3.Distance(transform.position, lastKnowPosition), 2.5f);//最小值:橡皮筋拉伸距離;返回兩個(gè)或更多值中最小的值。shot.transform.position = transform.position + direction * (-magnitude);lineRenderer.enabled = true;//LineRenderer :線(xiàn)渲染器 如果啟用,使被渲染的物體可見(jiàn)//三點(diǎn):小鳥(niǎo)+彈弓兩點(diǎn)lineRenderer.SetPosition(0, new Vector3(-5.1f, 2.2f, 0.1f));//彈弓橡皮筋點(diǎn)lineRenderer.SetPosition(1, shot.transform.position);//小鳥(niǎo)點(diǎn)lineRenderer.SetPosition(2, new Vector3(-5.6f, 1.2f, -0.1f));//彈弓橡皮筋點(diǎn)if (direction != lastDirection){if (!audio.isPlaying){PlaySound(slingShotSound);} }}else//發(fā)射 {birdNumber++;if (birdNumber<=2){GameObject birdObject2 = GameObject.FindWithTag("birdClone");//實(shí)例化的小鳥(niǎo)也就是飛出去的小鳥(niǎo)if (birdObject2!=null){Destroy(birdObject2, 1.0f);////加載物體1秒后銷(xiāo)毀游戲物體 }lineRenderer.enabled = false;//不顯示橡皮筋了shot.collider.isTrigger = false;shot.rigidbody.isKinematic = false;// 是否動(dòng)力學(xué):[?k?n?'m?t?k] adj. 運(yùn)動(dòng)學(xué)的,運(yùn)動(dòng)學(xué)上的shot.rigidbody.velocity = direction * 7.0f * magnitude;//速度shot.rigidbody.useGravity = true;if (audio.isPlaying){audio.Stop();}PlaySound(flyingSound); shot.tag = "birdClone";isClick = false;}}}/// <summary>/// 小鳥(niǎo)拉伸發(fā)生聲音/// </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、最終效果
?
轉(zhuǎn)載于:https://www.cnblogs.com/PEPE/p/3553281.html
總結(jié)
以上是生活随笔為你收集整理的Unity3D笔记 愤怒的小鸟六 弹弓发射小鸟的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于DB2 MQT 增量更新,出错代码详
- 下一篇: 数据结构——线性表之链式存储结构