Unityジャンプの実装(動画あり)
今回はジャンプの実装を紹介します。
~ public class Jump : MonoBehaviour { [SerializeField] bool JumpFlag; //ジャンプ中にたてる [SerializeField] float Gravity; // 重力 [SerializeField] float JumpPow; // ジャンプ力 float StartTime; //ジャンプし始めの時間を入れる // Start is called before the first frame update void Start() { JumpFlag = false; } // Update is called once per frame void Update() { if(!JumpFlag) { if(Input.GetKey(KeyCode.Space)) { JumpFlag = true; StartTime = Time.time; //ゲーム開始からの時間を入れる } } else { PlayerGravity(Gravity); // 重力 PlayerJump(JumpPow); // ジャンプ PlayerLand(); // 着地処理 } } //重力移動 void PlayerGravity(float _Gravity) { //落下量=滞空時間×加速度(-重力) //重力の力を時間が経つにつれて強くする var YAxis = (Time.time-StartTime) * (-1 * _Gravity * Time.deltaTime); //重力の移動 transform.position += new Vector3(0, YAxis, 0); } //ジャンプ void PlayerJump(float _JumpPower) { var YAxis = _JumpPower * Time.deltaTime; //重力を考えないで上に行く処理のみ transform.position += new Vector3(0, YAxis, 0); } //着地の判定 void PlayerLand() { //今回は高さが0以下になった場合 if(transform.position.y<=0) { JumpFlag = false; } } } ~
ジャンプをさせたいオブジェクトにアタッチをして
- Gravity(重力の大きさ)
- JumpPow(ジャンプ力)
の数値を入れれば動きます。
着地はY軸(高さ)が0以下になったらという条件にしてますが、コライダーやスクリプトで当たり判定をすると段差でのジャンプも可能です。