前回の記事
前回までで基本的なFPSの視点操作を実装しました。
今回は物理演算(RigidBody)とジャンプを実装します。
①空のPlayerオブジェクトにRigidbodyコンポーネントとCapsule Colliderを追加。
設定は以下の通りです。
Use GravityにチェックをいれConstraintsのFreeze Rotationすべてにチェックを入れます。これで転がらなくなります。
Capsule ColliderはEdit Clliderをクリックし形を調整します。
CenterのYを調節し地面の高さより少し高くします。
床をすり抜ける場合は床にColliderが付いているかを確認してください。
②ジャンプを実装します。
新しいスクリプト、PlayerJump.csを作成し、Playerオブジェクトにアタッチします。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerJump : MonoBehaviour { public GameObject Player; private Rigidbody PlayerRigid;//PlayerオブジェクトのRigidbobyを保管する public float Upspeed; //ジャンプのスピード // Use this for initialization void Start () { PlayerRigid = Player.GetComponent<Rigidbody>(); } // Update is called once per frame void Update () { if (Input.GetKeyDown(KeyCode.Space)) { //上にジャンプする。 PlayerRigid.AddForce(transform.up * Upspeed); } } }34 |
インスペクターでの設定は以下の通りです。
PlayerにPlayerをアタッチし、Upseedはスペースキーを押したときの力の大きさです。調整してみてください。
以下のようになります。しかしこのスクリプトには問題があります。
上記のスクリプトの問題点
- 連打で連続して飛べてしまう。
次回はこの問題を解決してみます。