0

リジッドボディに影響を与える力でプレーヤーをジャンプさせたいと思っています。現在、FixedUpdateループに次のコードがあります。

else if(Input.GetMouseButtonDown(0) &&( Input.mousePosition.y < Screen.height/3) && isGrounded == true)
{
    Debug.Log ("jump");
    isGrounded = false;
    if(!isGrounded)
        rigidbody.AddForce(Vector3.up * jumpSpeed);

    Debug.Log(isGrounded);
}
void OnCollisionStay(Collision collisionInfo)
{
    isGrounded = true;
}

画面上の適切な位置でマウス ボタンを押すと、すべての正しいデバッグ情報が表示されます。しかし、私のプレーヤーは動かない。jumpSpeed は 100 に設定されており、力が低すぎるかどうかを確認するために 1000 に設定してみました。しかし、何もありません。私はここでばかげたことをしていますか?

4

2 に答える 2

0

簡単な質問ですか?力を追加する前に、なぜ if (!isGrounded) のチェックがあるのですか? 直前に false に設定しているため、常に true と評価されます。ジャンプ入力のロジックチェック以外でチェックしたかったのかもしれません。

とにかく、答えに進みます。AddForceのドキュメントを読むと、これがどのタイプの力であるかを表すオプションのパラメーターがあることがわかります。デフォルトは「Force」で、必要なのは「impulse」なので、行を次のように変更します。

Debug.Log ("jump");
isGrounded = false;
rigidbody.AddForce(Vector3.up * jumpSpeed, ForceMode.Impulse);
于 2014-05-20T12:54:52.463 に答える
0

私はあなたのコードをテストしましたが、問題なく動作します。問題はコードの他の部分にあると思います。

于 2014-05-20T13:04:13.773 に答える