(1)下準備
- Sphereを作成・・・>名前を「Ball」に変更
- Planeを作成・・・>名前を「Floor」に変更
- 「Ballオブジェクト」に「Rigidbody」を追加する。
(2)スクリプトの作成
- 新規にC# スクリプトを作成
- 名前を「BallJump」に変更
- 下記のコードを書いてチェック
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallJump : MonoBehaviour { public float jumpPower; private Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { if(Input.GetKeyDown(KeyCode.Space)) { rb.velocity = Vector3.up * jumpPower; } } }
(3)設定
- スクリプトをBallオブジェクトに追加
- Jump Powerを設定
- 設定が完了したらゲーム再生
- スペースキーでジャンプすれば成功です。
(3)二段ジャンプ(空中ジャンプ)の禁止
- BallJumpスクリプトを改良する。
- 「★追加」部分のコードを追加する。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallJump : MonoBehaviour { public float jumpPower; private Rigidbody rb; // ★追加 private bool isJumping = false; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { // ★追加 if(Input.GetKeyDown(KeyCode.Space) && !isJumping) { rb.velocity = Vector3.up * jumpPower; // ★追加 isJumping = true; } } }
- ゲームを再生して確認
- 「1回だけ」ジャンプできれば成功です。
(4)ジャンプを復活させる
- Floorに触れたらジャンプが復活するようにします。
- FloorにTagを設定する。
- BallJumpスクリプトを改良する。
- 「★★追加」部分のコードを追加する。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallJump : MonoBehaviour { public float jumpPower; private Rigidbody rb; private bool isJumping = false; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { if(Input.GetKeyDown(KeyCode.Space) && !isJumping) { rb.velocity = Vector3.up * jumpPower; isJumping = true; } } // ★★追加 private void OnCollisionEnter(Collision collision) { if(collision.gameObject.CompareTag("Floor")) { isJumping = false; } } }
- ゲームを再生して確認
- 「空中ではジャンプできない」「床に触れたらジャンプ復活する」で成功です。