private void LookAtMouse()
{
if (Physics.Raycast(mainCamera.ScreenPointToRay(mouseLook), out var raycastHit, Mathf.Infinity))
{
_direction = (raycastHit.point - transform.position).normalized;
_direction.y = 0;
transform.forward = _direction;
}
}
每当我在update中调用这个函数时,它就会杀死我的移动。如果我不运行这个函数,一切都会完美地工作。我试过在移动中使用transform.LookAt()我试过使用transform.Translate(),Rigidbody.MovePosition(),改变其他任何东西都没有帮助。
如果我注解掉这个变换。forward = _direction;那么一切都很完美。是什么让我的移动运行游戏慢得惊人
我已经尝试了一切可能的事情,我可以找到网上解决这个问题,没有任何帮助。
2条答案
按热度按时间c90pui9n1#
只要涉及到任何物理特性,您就不希望通过
Transform
设置,因为这会破坏物理特性和碰撞检测。您应该将
Rigidbody.MoveRotation
与FixedUpdate
中的Quaternion.LookRotation
结合使用elcex8rz2#
尝试调用它在FixedUpdate一般,我使用更新只是为了捕捉键输入,因为它可能会被称为+1000时间,如果你的设备是强大的,在另一方面固定的更新是更好地做物理。iv它是一个尝试和重播,如果它没有帮助思考在其他解决方案;