Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity3d四元数LookRotation未返回正确的值_C#_Unity3d_Quaternions_Euler Angles_Projectile - Fatal编程技术网

C# Unity3d四元数LookRotation未返回正确的值

C# Unity3d四元数LookRotation未返回正确的值,c#,unity3d,quaternions,euler-angles,projectile,C#,Unity3d,Quaternions,Euler Angles,Projectile,我想要一个投射物来观察目标对象,为此我使用四元数LookRotation,如下所示 targetRotation = Quaternion.LookRotation(targetPosition - projectile.transform.position); if(targetRotation.eulerAngles.magnitude <= 60) projectile.transform.rotation = targetRotation; targetRotation=Qu

我想要一个投射物来观察目标对象,为此我使用四元数LookRotation,如下所示

targetRotation = Quaternion.LookRotation(targetPosition - projectile.transform.position);
if(targetRotation.eulerAngles.magnitude <= 60)
  projectile.transform.rotation = targetRotation;
targetRotation=Quaternion.LookRotation(targetPosition-sparket.transform.position);

if(targetRotation.eulerAngles.magnitude
四元数.LookRotation(targetPosition-Spolder.transform.position)
表示“给我一个四元数,表示向量从上到
targetPosition-Spolder.transform.position的旋转。”.
eulerAngles
只是旋转的另一种表示形式,从它的大小中不会得到任何有意义的东西

我怀疑你不想这样。相反,我怀疑你想知道抛射体是否需要从其当前前进方向旋转60度以上。在这种情况下,你可能需要检查抛射体的前进方向向量和朝向目标的方向向量之间的角度

我没有打开Unity,所以我不知道它是否编译,但它应该是这样的:

var directionToTarget = targetPosition - projectile.transform.position;
var angleToTarget = Vector3.Angle(projectile.transform.forward, directionToTarget);
if (angleToTarget < 60) ...
var directionToTarget=targetPosition-sparket.transform.position;
var angleToTarget=矢量3.角度(投射、变换、前进、方向ToTarget);
如果(角度目标<60)。。。

你提到你想要一个更“真实”的转弯。如果弹丸超过60度,你希望它做什么?

四元数。LookRotation(targetPosition-sparket.transform.position)
的意思是“给我一个四元数,它表示向量从上向上旋转
目标位置-投射物.transform.position
eulerAngles
只是旋转的另一种表示,它的大小没有任何意义

我怀疑你不想这样。相反,我怀疑你想知道抛射体是否需要从其当前前进方向旋转60度以上。在这种情况下,你可能需要检查抛射体的前进方向向量和朝向目标的方向向量之间的角度

我没有打开Unity,所以我不知道它是否编译,但它应该是这样的:

var directionToTarget = targetPosition - projectile.transform.position;
var angleToTarget = Vector3.Angle(projectile.transform.forward, directionToTarget);
if (angleToTarget < 60) ...
var directionToTarget=targetPosition-sparket.transform.position;
var angleToTarget=矢量3.角度(投射、变换、前进、方向ToTarget);
如果(角度目标<60)。。。

你提到你想要一个更“现实”的"转弯。如果弹丸高度超过60度,你想让它做什么?

太酷了!让我试试这个,对于你的答案,如果超过60度,我让弹丸朝最后一个转弯方向移动。太酷了!让我试试这个,对于你的答案,如果超过60度,我让弹丸朝我移动最后一个转弯方向。