私がしたいのは、スピードに応じて慣性を持った状態ジャンプすることです。
ジャンプをして操作を受け付けないように下記のようなスクリプトを組んだのですが、その場でジャンプをするだけで、不自然なジャンプとなってしまいます。
C#
1if (onGround == true) 2 { 3 Transform t = transform; 4 transform.position = t.position; 5 t.position += t.TransformDirection(Vector3.forward) * Input.GetAxis("Vertical") * mainSPEED; 6 t.position += t.TransformDirection(Vector3.right) * Input.GetAxis("Horizontal") * mainSPEED; 7 mainSPEED = tempSPEED; 8 if (Input.GetKey(KeyCode.LeftShift) && Input.GetKey(KeyCode.W)) 9 { 10 mainSPEED = mainSPEED * 2; 11 12 } 13 if (checkjump) 14 { 15 GetComponent<Rigidbody>().AddForce(Vector3.up * 1000f * JumpPow); 16 onGround = false; 17 checkjump = false; 18 } 19 }
こんな感じのコードで、if文を移動のプログラムに全てかけて、接地していない時はキーボードからの入力を受け付けないようにしています。
このスクリプトを適用しているキャラクターのrigibodyは
mass : 40
drag : 0
angular drag : 0.05
use gravity : true
is kinematic : false
interpolate : none
collision detection : discrete
です。
回答よろしくお願いします。
追記:なるべくAddForceは使いたくありません。
回答2件
あなたの回答
tips
プレビュー