【问题标题】:Player is not looking at correct direction玩家没有看正确的方向
【发布时间】:2020-06-22 06:37:19
【问题描述】:

我的敌人/机器人朝向错误的方向,如所附屏幕截图 1 所示。基本上我想要的是敌人/机器人的枪应该直接面对玩家,而不是敌人/机器人自己。

注意:图中白线代表瞄准方向 是正确的。

这是我的代码:

Vector3 targetPosition = kbcrd.playerToEngage.thirdPersonPlayerModel.shootTarget.position;
targetPosition .y = 0;

Vector3 botPosition = pb.thirdPersonPlayerModel.gunDirection.position;
botPosition.y = 0;

Quaternion targetRotation = Quaternion.LookRotation(targetPosition - botPosition);

//pb is Bot which is holding transform and other scripts.
pb.transform.rotation = Quaternion.RotateTowards(pb.transform.rotation, targetRotation, kbcrd.lookingInputSmooth);

我从上面的代码中得到的是:(截图#1)

我想要的是这个:(截图#2)

枪和玩家方向:

瞄准动画状态下的枪位和玩家位置。

感谢任何帮助。我知道它的简单问题,但我现在很挣扎。 :(

【问题讨论】:

  • 您的机器人枪是否与其transform.forward 轴对齐?
  • 是的。我正在添加参考图像。
  • 嗯,这就是非动画/装配模型的情况......动画状态也是如此吗?
  • 玩家和机器人都是动画的。
  • 是的,但是在瞄准状态下,敌方物体的局部前轴看起来如何?它仍然与枪的方向匹配吗?你怎么画白线?也许你可以插入一个Debug.DrawLine(botPosition, targetPosition - botPosition, Color.red);,它应该与所需的方向匹配

标签: c# unity3d rotation quaternions


【解决方案1】:

正如您在添加的屏幕截图中看到的那样,枪的方向与机器人的前轴(蓝色矢量)不匹配。

您可以将此差异添加到您的目标轮换中,例如

var targetPosition = kbcrd.playerToEngage.thirdPersonPlayerModel.shootTarget.position;
targetPosition.y = 0f;

var botPosition = pb.thirdPersonPlayerModel.gunDirection.position;
botPosition.y = 0f;

var gunForward = gunDirection.forward;
gunForward.y = 0f;

var botForward = pb.transform.forward;
botForward.y = 0f;

// Get the offset between the bot's and the gun's forward vectors
var gunBotOffset = Vector3.SignedAngle(gunForward, botForward, Vector3.up);
// Get a rotation to rotate back from the gun to the player direction
var gunToBotRotation = Quaternion.AngleAxis(gunBotOffset, Vector3.up);

// Add the back rotation to the target rotation
var targetRotation = Quaternion.LookRotation(targetPosition - botPosition) * gunToBotRotation;

pb.transform.rotation = Quaternion.RotateTowards(pb.transform.rotation, targetRotation, kbcrd.lookingInputSmooth);

还有一个问题是 Gun 模型甚至不匹配 gunDirection 的前向向量,所以仍然会有一个偏移量!


【讨论】:

  • 呃。非常感谢,它解决了这个问题。上帝,我希望如果我像你一样擅长数学。 :)
猜你喜欢
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多