刚体物理

问题描述 投票:0回答:1

我目前正在开发一款 2D 游戏,其中角色绕圈移动,但目前它是用 rb.MovePosition() 制作的,我需要以其他方式使其以我想要的方式检测碰撞器。现在我的角色在墙边颤抖,只是穿过它。

这是我的代码:

private void Update()
{
    if (Input.GetKey(KeyCode.A))
    {
        _oldAngle = _angle;
        _angle += _speed * Time.deltaTime;
    }
    if (Input.GetKey(KeyCode.D))
    {
        _oldAngle = _angle;
        _angle -= _speed * Time.deltaTime;
    }
}

private void FixedUpdate()
{
    var position = new Vector2(Mathf.Cos(_angle * Mathf.Deg2Rad), 
    Mathf.Sin(_angle  * Mathf.Deg2Rad));
    _rb.MovePosition(_startPosition + position * _radius);
}

我尝试过切换刚体类型、将刚体添加到墙上、编辑碰撞器,但没有任何帮助。

有什么想法吗?

Character screenshot

c# game-physics unityscript collider
1个回答
0
投票

无论角色与墙壁发生碰撞,您都会更新角度。您应该根据角色移动的结果来更新角度。

_rb.MovePosition(_startPosition + position * _radius);
_angle = Vector2.Angle(Vector2.right, _rb.transform.position - _startPosition);
© www.soinside.com 2019 - 2024. All rights reserved.