简体   繁体   English

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

So, I want the my BackCube to rotate towards the forward vector of cameraEye . 所以,我想我的BackCube朝正向旋转矢量cameraEye The code above looks at the cameraEye , but not towards the forward vector of cameraEye . 上面的代码看起来在cameraEye ,但不是朝着正向矢量cameraEye I want the forward vectors of both pointing at each other being 2 units apart from each other. 我希望彼此指向的正向向量彼此相距2个单位。 I have control only over the BackCube 我只能控制BackCube

This worked! 这工作了!

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM