2016-06-21 11 views
0

私はUnity2dスプライトに取り組んでいますが、何かが間違っています。私のコードでは、ジャンプボタンを押すと私のキャラクターはテレポートのようにジャンプし、上方向に非常に速く進みます。重力が9であると私Rigidbody2d質量は1. [マイコードでこれです:あなたのジャンプが高すぎるとUnity2dテレポートのようにジャンプ

if(isGrounded == true && moveH == 0) { 

    if (Input.GetKeyDown(KeyCode.J)) { 

     anim.SetBool("str_jump", true); 
     //rgBody.velocity = new Vector2(0,jumpHeight);     
     //rgBody.AddForce(Vector2.up * jumpHeight);     
     transform.position = new Vector2(transform.position.x, 
             transform.position.y * jumpHeight); 
     isGrounded = false; 

    } 

} 

答えて

2

、あなたはジャンプの高さを変更するために変数を使用する必要があります。あなたの場合、ジャンプの高さを変更する変数としてjumpHeightを使用しています。

jumpHeightを減らす必要があります。を解決してください。 jumpHeightがpublic(public float jumpHeight;)として宣言されている場合、変数が宣言されたときに割り当てられた番号を使用しないため、エディタまたは関数から変数を変更する必要があります。それはエディタから割り当てられたものを使用します。あなたはpublic float jumpHeight = 4;を持っていますが、値がエディタに0に設定されている場合、例えば

は、0は値ではありません4として使用されます。

また、rgBody.AddForce(Vector2.up * jumpHeight);を使用する必要があります。コメントを解除し、transform.position = new Vector2(transform.position.x,transform.position.y *jumpHeight);行のコードを削除します。

これで問題が解決しない場合は、完全なコードで質問を更新する必要があります。

0

いいジャンプの場合は、rgBody.AddForce((Vector2.up * jumpHeight), ForceMode2D.Impulse);を使用することもできます。これは、オブジェクトへの影響をシミュレートし、素晴らしいジャンプシミュレーションを取得します。

「プログラマー」のようにpublic float jumpHeigt = 4f;を宣言することを忘れないでください。

私はそれがあなたを助けてくれることを願っています。

関連する問題