日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。