我是Unity的新手,我尝试旋转箭头以指向特定的对象(在我的情况下,是屏幕截图中的左三角形)。我使用了lookRotation()函数,但不知道为什么它不能正常工作。这是一些屏幕截图。有什么建议吗?
public Transform target;
public Transform source;
public GameObject bigArrow;
void Start()
{
}
void Update()
{
Vector3 direction = target.position - source.position;
Quaternion rotation = Quaternion.LookRotation(direction);
source.rotation = rotation;
// ...
}
答案 0 :(得分:0)
进一步评论以回答问题。
您要将箭头GameObject放在一个空的GameObject内,以便可以将其定向在世界坐标内以指向前方。
喜欢
然后,您可以将Quaternion.LookRotation
的箭头固定器以其向前的方向作为其指向的方向旋转。
答案 1 :(得分:0)
如果您不想将箭头包裹在一个空的游戏对象中,另一种解决方案是考虑箭头所指向的方向。
箭头指向Vector3.left
的局部方向。您可以看出来,因为箭头的尖端与本地红色轴箭头相反。
因此,我们可以使用Quaternion.FromToRotation
进行旋转,以将箭头的尖端(指向Vector3.left
的方向)旋转到局部Vector3.forward
的方向。然后,我们将LookRotation
的结果乘以修改后的旋转,以生成我们感兴趣的旋转:
void Update()
{
Vector3 direction = target.position - source.position;
Quaternion rotation = Quaternion.LookRotation(direction);
rotation *= Quaternion.FromToRotation(Vector3.left, Vector3.forward);
source.rotation = rotation;
// ...
}