我目前正在开发一款 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);
}
我尝试过切换刚体类型、将刚体添加到墙上、编辑碰撞器,但没有任何帮助。
有什么想法吗?
无论角色与墙壁发生碰撞,您都会更新角度。您应该根据角色移动的结果来更新角度。
_rb.MovePosition(_startPosition + position * _radius);
_angle = Vector2.Angle(Vector2.right, _rb.transform.position - _startPosition);