在统一中,我有一个箭头精灵,在箭头的开头带有枢轴。
现在我需要在 2d 中旋转该箭头,使其始终指向鼠标。
当我将鼠标移动得太快时,它需要完成lerp
,slerp
它不会跳到那里,而是会慢慢滑到那个位置。
在统一中,我有一个箭头精灵,在箭头的开头带有枢轴。
现在我需要在 2d 中旋转该箭头,使其始终指向鼠标。
当我将鼠标移动得太快时,它需要完成lerp
,slerp
它不会跳到那里,而是会慢慢滑到那个位置。
我刚刚在这里回答了一个非常相似的问题。为简单起见,以下代码是Unity 论坛中的一个示例,您可以使用它来围绕 z 轴旋转对象。
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
Vector3 dir = Input.mousePosition - pos;
float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
这是 slerp 的 Unity3D 文档,这是 lerp的文档。应该直接修改代码以从这些示例中执行您想要的操作。
这一切都取决于你的箭头是如何设置的,你可以使用rotateTowards吗?
如果是这样,您可以将ScreenToWorldPoint与 rotateTowards 一起使用
(ps,由于我在工作,因此未测试功能:P)
void Update() {
transform.rotateTowards(camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, camera.nearClipPlane));
}
至于 lerp 功能,你应该在这里检查速度变量的东西
快乐编码。