2016-08-17 2 views
1

Ich schrieb ein Skript in C# für die Bewegung von Charakter mit Rigidbody2D velocity.Jedoch manchmal, wenn ich versuche zu bewegen, mein Charakter bewegt sich dann plötzlich friert und nicht vorwärts.Nur rückwärts. Ich überprüfte die Collider und sie sind alle gleich und geschnappt. Ich habe sogar AddForce versucht, aber es friert immer noch.Einheit 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

Haben Sie versucht, forcemode anzugeben? 'rigidbody2D.AddForce (neuer Vector2 (hor * speed, 0), ForceMode2D.Impulse);' – Shakra

+0

Nein, aber ich glaube nicht, dass es wirklich wichtig ist. –

Antwort

0

Geht Ihr Charakter von einem Collider zum anderen? Wenn das der Fall ist, überprüfe, ob die Kreuzung zwischen den Colliders deinen Charakter zurückhält.

+0

Ja, tut er! Ich werde dir das Bild zeigen. –

+0

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

+0

Stellen Sie sicher, dass die vorwärts fahrenden Beschleuniger nicht höher sind als die vor ihnen. Es könnte dafür sorgen, dass der Charakter weiter gegen den nächsten Collider läuft. – Teun