2016-08-17 18 views
1

Rigidbody2Dベロシティを使ってキャラクタームーブメントのためにC#でスクリプトを書いたことがあります。しかし、時々私が動こうとすると、キャラクターの動きが突然凍って前進しません。後ろ向きです。彼らはすべて平等で、スナップされています。私はAddForceでも試しましたが、それでもフリーズします。Unity Rigidbody2D Velocity Sudden Freeze

using UnityEngine; 
using System.Collections; 

public class CharacterController2D : MonoBehaviour { 

[SerializeField] 
float speed = 5; 
[SerializeField] 
float jumpForce = 500; 
[SerializeField] 
LayerMask whatisground; 
[SerializeField] 
bool isGrounded = false; 
Transform groundCheck; 

private Rigidbody2D rb2d; 

// Use this for initialization 
void Start() { 
    rb2d = gameObject.GetComponent<Rigidbody2D>(); 
    groundCheck = gameObject.transform.GetChild (0); 
} 

void FixedUpdate(){ 
    float hor = Input.GetAxis ("Horizontal"); 
    rb2d.AddForce (new Vector2 (hor * speed,0)); 

    //rb2d.velocity = new Vector2(hor*speed,rb2d.velocity.y); 
    isGrounded = Physics2D.OverlapCircle (groundCheck.position, 0.15F); 
} 
// Update is called once per frame 
void Update() { 

} 
} 
+0

forcemodeを指定しようとしましたか? 'rigidbody2D.AddForce(new Vector2(hor * speed、0)、ForceMode2D.Impulse);' – Shakra

+0

いいえ、本当に重要ではないと思います。 –

答えて

0

あなたのキャラクターは、コライダーから別のものに歩いていますか? その場合、あなたのキャラクターを保持しているコライダー間の交差点を確認してください。

+0

はい、彼はそうです!私はあなたにその絵を見せます。 –

+0

http://imgur.com/a/mPQzh –

+0

前方に向かうコライダーが前のコライダーよりも高くないことを確認してください。キャラクターが次のコライダーと歩き続けられるようにすることができます。 – Teun