ダブルジャンプできる仕組みを作ってみましょう。
着地の状態から、クリックでジャンプ。
空中でクリックすると、2段ジャンプが可能になります。
今回、床オブジェクトの接触判定は、Raycastで作成しています。
関連記事:
スペースキーを連打すれば実行可能
ボタン連打による急激なジャンプを制御
クリックした方向へジャンプする
CharacterController.Moveによるジャンプ移動
クリックすればオブジェクトが浮上するしくみ
2段ジャンプのスクリプト
PlaneとCubeを作成します。
Cubeにリジドボディを追加します。
PlayerJump.csを作成し、Cubeに追加します。
PlayerJump.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerJump : MonoBehaviour { private Rigidbody rb; private int upForce; private float distance; private bool doubleJump; void Start() { rb = GetComponent<Rigidbody>(); upForce = 300; distance = 1.0f; } void Update() { Vector3 rayPosition = transform.position + new Vector3(0.0f, 0.0f, 0.0f); Ray ray = new Ray(rayPosition, Vector3.down); bool isGround = Physics.Raycast(ray, distance); Debug.DrawRay(rayPosition, Vector3.down * distance, Color.red); if(isGround) { doubleJump = true; } if(Input.GetMouseButtonDown(0)) { if(isGround) rb.AddForce(new Vector3(0,upForce,0 )); else { if(doubleJump) rb.AddForce(new Vector3(0,upForce,0 )); doubleJump = false; } } } } |
ゲームプレイして、クリックしましょう。
床に接地している時にはジャンプ可能。
空中にいるときも、クリックで一度だけジャンプできます。
関連記事:
スペースキーを連打すれば実行可能
ボタン連打による急激なジャンプを制御
クリックした方向へジャンプする
CharacterController.Moveによるジャンプ移動
クリックすればオブジェクトが浮上するしくみ