【发布时间】:2019-07-09 19:49:32
【问题描述】:
BackCube.position = cameraEye.position - cameraEye.forward * 2;
float back = cameraEye.position.z - 2f;
BackCube.position = new Vector3(BackCube.position.x, BackCube.position.y, back);
var lookPosBack = cameraEye.position - BackCube.position;
lookPosBack.y = 0;
var rotationBack = Quaternion.LookRotation(lookPosBack);
BackCube.rotation = Quaternion.Slerp(BackCube.rotation, rotationBack, 1);
所以,我希望我的BackCube 向cameraEye 的前向矢量旋转。上面的代码着眼于cameraEye,而不是cameraEye 的前向向量。我希望两个指向对方的前向向量彼此相距 2 个单位。我只能控制BackCube
【问题讨论】:
-
BackCube 是游戏对象、变换还是其他东西?您的代码中有
BackCube.transform和BackCube.position,所以很难说。 cameraEye 怎么样? -
对不起!修复!两者都是
Transform -
如果您可以使用场景编辑器安排一些您想要的结果示例,并在问题中附上一些屏幕截图,以帮助解决问题。
-
你的解释有点令人困惑,看你的代码......我知道你希望立方体被放置在
cameraEye的对面,它们的前向指向对方......那为什么您是否将立方体camerEye.forward * 2f置于 cameraEye 位置而不是置于前面? -
我会简单地使用
BackCube.position = cameraEye.position + cameraEye.forward * 2; BackCube.LookAt(cameraEye);,而不是它们相隔2个单位并互相看着......
标签: c# unity3d vector rotation quaternions