【Unity3D】用滑鼠點選事件、AddForce完成跳躍與二段跳
阿新 • • 發佈:2019-02-01
遊戲裡面的跳躍和二段跳真的不是很難,尤其是Unity3D直接提供力量模擬引擎更是可以用極其簡短的程式碼完成這一切。
下面的程式將加一個對滑鼠左鍵點選的監聽,實現兩個球的跳躍與二段跳的功能,主要思想還是處理球在跳躍的時候,應該是不允許再跳躍的,而在球落地之後才重新開啟跳躍功能。二段跳則要判斷兩個狀態。其實就是《【Cocos2dx】精靈觸控跳躍功能》(點選開啟連結)的思想照搬過來。
程式具體如下圖所示:
場景佈置如下圖,非常簡單,就2個球,加上剛體屬性,1個平面,加一個Plane的tag,1個燈光,使其看起來沒這麼暗,同時再設定一個純色材質賦予給這些元件。不懂的可以參考《【Unity3D】物體、材質的設定、物體位移與旋轉》( 點選開啟連結)。
對於跳躍指令碼Jump.cs如下所示,關鍵是立個isJump的flag,防止使用者用瘋狂點滑鼠,瘋狂對球加一個向上的250的力。跳躍中收起,碰到再立起。Unity3D的碰撞事件可以參考《【Unity3D】利用物體碰撞檢測、鍵盤輸入處理完成平衡球遊戲》(點選開啟連結)。
這裡的力不知道怎麼算的,反正Unity3D剛體預設的力量是1,不知道單位是什麼,加一個250的向上的力才上升目測2-3個單位左右……
而對於二段跳的小球的指令碼DoubleJump.cs如下所示,思想基本與跳躍指令碼Jump.cs類似,只是flag變成2個:using UnityEngine; using System.Collections; public class Jump : MonoBehaviour { float force = 250; bool isJump = false; void Start() { } void Update() { if (Input.GetMouseButtonDown(0)) { if (!isJump)//如果還在跳躍中,則不重複執行 { rigidbody.AddForce(Vector3.up * force); isJump = true; } } } // 碰撞開始 void OnCollisionEnter(Collision collision) { if (collision.collider.tag == "Plane")//碰撞的是Plane { isJump = false; } } }
using UnityEngine; using System.Collections; public class DoubleJump : MonoBehaviour { float force = 250; bool isJump = false; bool isDoubleJump = false; void Start() { } void Update() { if (Input.GetMouseButtonDown(0)) { if (!isJump)//如果還在跳躍中,則不重複執行 { rigidbody.AddForce(Vector3.up * force); isJump = true; } else { if (isDoubleJump)//判斷是否在二段跳 { return;//否則不能二段跳 } else { isDoubleJump = true; rigidbody.AddForce(Vector3.up * force); } } } } // 碰撞開始 void OnCollisionEnter(Collision collision) { if (collision.collider.tag == "Plane")//碰撞的是Plane { isJump = false; isDoubleJump = false; } } }