Unity3d 如何使单位变换轴看向特定方向

Unity3d 如何使单位变换轴看向特定方向,unity3d,rotation,transform,Unity3d,Rotation,Transform,我有这样的层次结构: --gun \--bullet 在unity3d中,我希望子弹特定轴与枪特定轴相交 像这样: --gun \--bullet 注意蓝色(z轴) 这是枪的变形 我想旋转球的变换,使球的Z轴与Y轴重合 像这样: --gun \--bullet 那我该怎么做呢?谢谢一个简单的方法可以完成这项工作: bullet.transform.LookAt( bullet.transform.position + gun.transform.up ) ; 看看

我有这样的层次结构:

 --gun
  \--bullet
在unity3d中,我希望子弹特定轴与枪特定轴相交

像这样:

 --gun
  \--bullet

注意蓝色(
z轴

这是枪的变形

我想旋转球的变换,使球的Z轴与Y轴重合

像这样:

 --gun
  \--bullet

那我该怎么做呢?谢谢

一个简单的方法可以完成这项工作:

bullet.transform.LookAt( bullet.transform.position + gun.transform.up ) ;
看看

旋转变换,使前向向量指向给定的世界位置

如果希望变换的上方向向量指向特定方向,可以指定一个附加向量。

一个简单的例子可以完成这项工作:

bullet.transform.LookAt( bullet.transform.position + gun.transform.up ) ;
看看

旋转变换,使前向向量指向给定的世界位置

如果希望变换的上方向向量指向特定方向,可以指定一个附加向量。

我认为使用可以解决问题

bullet.transform.rotation = Quaternion.LookRotation(gun.transform.forward, gun.transform.up);
它的作用是基于正向和向上矢量创建旋转。因此,您可能希望设置与我的示例不同的内容,但希望您能理解。

我认为使用可能会解决您的问题

bullet.transform.rotation = Quaternion.LookRotation(gun.transform.forward, gun.transform.up);

它的作用是基于正向和向上矢量创建旋转。因此,您可能希望设置一些与我的示例不同的内容,但希望您能理解。

谢谢,这是可行的,我知道
LookAt
方法,并在我提出问题之前尝试过,为什么它不起作用是我缺少
bullet.transform.position
部分,你能提供更多的细节为什么我们要把它添加到lookAt向量中吗?感谢
LookAt
方法需要世界空间中的一个点。因此,如果希望子弹的前向向量与枪的上向向量相同,则世界空间中满足此条件的唯一点是
bullet.transform.position+gun.transform.up
。仅提供
gun.transform.up
将为您提供点
(0,0,0)+gun.transform.up
。向量(方向)如
transform.up
与点之间的差异非常微妙。一般情况下:点+向量=点;(点-点)=向量;向量+向量=向量。但是点+点并不意味着什么。嗨,谢谢,我现在明白了,我们应该一直关注点,对吗真的。@MrDos的答案是另一种方法,使用四元数和方向向量(而不是点)谢谢,这是有效的,我知道
LookAt
方法,并尝试了在我提问之前,为什么它不起作用是我缺少
bullet.transform.position
部分,你能提供更多的细节为什么我们要把它添加到lookAt向量中吗?感谢
LookAt
方法需要世界空间中的一个点。因此,如果希望子弹的前向向量与枪的上向向量相同,则世界空间中满足此条件的唯一点是
bullet.transform.position+gun.transform.up
。仅提供
gun.transform.up
将为您提供点
(0,0,0)+gun.transform.up
。向量(方向)如
transform.up
与点之间的差异非常微妙。一般情况下:点+向量=点;(点-点)=向量;向量+向量=向量。但是点+点并不意味着什么。嗨,谢谢,我现在明白了,我们应该一直关注点,对吗真的。@MrDos的答案是另一种方法,使用四元数和方向向量(而不是点)