2016-08-17 2 views
1

Я написал сценарий в C# для движения символов с использованием скорости Rigidbody2D. Однако иногда, когда я пытаюсь двигаться, мой персонаж перемещается, а затем внезапно замерзает и не будет двигаться вперед. Только назад. Я проверил коллайдеры и все они равны и привязаны. Я пробовал даже 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 (новый Vector2 (hor * speed, 0), ForceMode2D.Impulse);' – Shakra

+0

Нет, но я не думаю, что это действительно имеет значение. –

ответ

0

Проходит ли ваш персонаж от коллайдера к другому? Если это так, проверьте, не пересекается ли перекресток между коллайдерами, удерживая символ.

+0

Да, он делает! Я покажу вам фотографию. –

+0

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

+0

Убедитесь, что коллайдеры, идущие вперёд, не выше, чем перед ним. Это может сделать так, чтобы персонаж продолжал идти против следующего коллайдера. – Teun