Raycastを使って接地判定を作成し、着地している時だけジャンプできる仕組みを作ります。
床オブジェクトに触れている間はクリックでジャンプ可能。空中でクリックしてもジャンプはできません。
関連記事:
着地していればジャンプ可能(Collider)
Raycastによる接地判定
クリックした方向へジャンプする
バウンドの高さをスクリプトから調整
AddForceを使ったジャンプとvelocityによるジャンプ
キャラクターをジャンプさせるしくみ
ジャンプの方向をランダムにする
マウス長押しでジャンプ力を溜める
並べたPrefabを左から順に発射
Rayが当たっていれば実行可能
PlaneとCubeを作成します。
Cubeにリジドボディを追加します。
PlayerJump.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerJump : MonoBehaviour { private Rigidbody rb; private int upForce; private float distance; 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(Input.GetMouseButtonDown(0)) { if(isGround) rb.AddForce(new Vector3(0,upForce,0 )); } } } |
ゲームプレイしてみましょう。
Cubeの下側に、Raycastが可視化されています。
ゲームビューをクリック。
RaycastがPlaneに触れていれば、ジャンプ可能。
触れていなければ、ジャンプはできません。
関連記事:
着地していればジャンプ可能(Collider)
Raycastによる接地判定
クリックした方向へジャンプする
バウンドの高さをスクリプトから調整
AddForceを使ったジャンプとvelocityによるジャンプ
キャラクターをジャンプさせるしくみ
ジャンプの方向をランダムにする
マウス長押しでジャンプ力を溜める