球员在碰撞后“滑动”没有明显的原因

时间:2018-03-30 21:16:48

标签: c# unity3d

我正在制作2D平台游戏,我还有一个事件发生在我的玩家与特定触发器碰撞时它应该停止移动。在大多数情况下工作得很好...但是,当我走路时精灵碰撞......我的角色一直在滑动,我无法弄清楚为什么。

我的播放器上有一个boxCollider 2D标记为触发器,还有一个Kinematic Rigidbody2D和一个带有动态Rigidbody2D的Circle Collider 2D,它与我的播放器接触。

public class MyCharacterControls : MonoBehaviour {

  //public GameObject player;
  //Get the Character
    public Rigidbody2D _rigidbody;
    public bool Stunned;
    public float StunnedFor = 5.0f;

    void FixedUpdate()
    {
        if (Stunned)
        {
            //  HandleStun();
            _rigidbody.velocity = new Vector3(0, 0, 0);
            _rigidbody.angularVelocity = 0;
            StartCoroutine(HandleStun());     
        }
    }

    private IEnumerator HandleStun()
    {
        //Stunned, De activate movement  
        CharacterHorizontalMovement moveScript = GetComponent<CharacterHorizontalMovement>();
        CharacterJump jumpScript = GetComponent<CharacterJump>();
        jumpScript.AbilityPermitted = false;
        moveScript.AbilityPermitted = false;
        _rigidbody.velocity = new Vector3(0, 0, 0);
        _rigidbody.angularVelocity = 0;

        yield return new WaitForSeconds(StunnedFor);
        jumpScript.AbilityPermitted = true;
        moveScript.AbilityPermitted = true;
        Stunned = false;
    }     

    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.gameObject.tag == "FallingObject")
        {
            Debug.Log("trigger with fallinng ball");
            Stunned = true;     
        }
    }
}

正如你所看到的,我已经尝试过设置速度和angularVelocity,但仍然没有停止滑动。

如果有人可以提供帮助,我会感激不尽。

此致

Ball Player

0 个答案:

没有答案