Unity3d:将游戏对象旋转到另一个游戏对象的前向向量

Unity3d: Rotate a gameobject towards forward vector of another gameobject

        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);

所以,我希望我的 BackCubecameraEye 的前向矢量旋转。上面的代码着眼于 cameraEye,但没有朝向 cameraEye 的前向向量。我希望两个指向彼此的前向矢量彼此相隔 2 个单位。我只能控制 BackCube

这成功了!

Vector3 direction = Vector3.ProjectOnPlane(cameraEye.forward, Vector3.up);


BackCube.transform.position = cameraEye.position - direction.normalized * 2;


var lookPosBack = cameraEye.position - BackCube.position;
lookPosBack.y = 0;
var rotationBack = Quaternion.LookRotation(lookPosBack);
BackCube.rotation = Quaternion.Slerp(BackCube.rotation, rotationBack, 1);