着地している時だけジャンプできる仕組みをつくってみましょう。
地面に触れている状態で、クリックすればCubeがジャンプできますが、いくら空中でクリックしてもジャンプはできません。
関連記事:
着地していればジャンプ可能(Raycast)
オブジェクトに触れていれば動く
キャラクターをジャンプさせるしくみ
オブジェクトから離れるとイベント発生
クリックした方向へジャンプする
ジャンプした距離を表示する
ジャンプで壁に触れると引っ付く
シフトキーでジャンプの高さを2倍にする
ジャンプの方向をランダムにする
マウス長押しでジャンプ力を溜める
接地している時だけ実行可能
平面とCubeを作成します。
CubeのY座標を0.5にして、リジッドボディを追加します。
Cubeにわかりやすい色をつけます。
シーンビューではこのように配置されています。
CubeUp.csを作成し、Cubeに追加します。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeUp : MonoBehaviour { private Rigidbody rb; private int upForce; private bool isGround; void Start() { rb = GetComponent<Rigidbody>(); upForce = 500; isGround = false; } void Update() { if(Input.GetMouseButtonDown(0) && isGround) { rb.AddForce(new Vector3(0,upForce,0 )); } } void OnCollisionEnter(Collision collision) { if (collision.gameObject.name == "Plane" ) { isGround = true; } } void OnCollisionExit(Collision collision) { if (collision.gameObject.name == "Plane" ) { isGround = false; } } } |
ゲームプレイして、クリックしてみましょう。
着地状態でジャンプしますが、空中状態でクリックしても、それ以上ジャンプはできません。
関連記事:
着地していればジャンプ可能(Raycast)
オブジェクトに触れていれば動く
キャラクターをジャンプさせるしくみ
オブジェクトから離れるとイベント発生
クリックした方向へジャンプする
ジャンプした距離を表示する
ジャンプで壁に触れると引っ付く
シフトキーでジャンプの高さを2倍にする
ジャンプの方向をランダムにする
マウス長押しでジャンプ力を溜める