我有一个基于标准资产脚本的 MouseOrbit 脚本,我需要对其进行自定义以将相机放置在轨道中的特定位置。
下面是 Unity3d 附带的标准脚本的基础知识:
function Start () { var angles = transform.eulerAngles; x = angles.y; y = angles.x; // Make the rigid body not change rotation if (rigidbody) rigidbody.freezeRotation = true; } function onUpdate(){ x += Input.GetAxis("Mouse X") * xSpeed; y -= Input.GetAxis("Mouse Y") * ySpeed; var rotation = Quaternion.Euler(y, x,0); var position = rotation * Vector3(0.0, 0.0, cameraDelta); transform.rotation = rotation; transform.position = position; }
我需要做的是将相机放置在目标物体周围的几个位置0,0
。
第一个是直接在对象后面。x:7,:y0,z:0
.
这是我认为可行的方法:
function TransformCamera(x,y,z){ //set position of camera transform.position = new Vector3(x, y, z); var angles = transform.eulerAngles; y = angles.y; x = angles.x; z = angles.z; var rotation = Quaternion.Euler(y, x, z); var position = rotation * Vector3(0.0, 0.0, cameraDelta); //adjusted_target; transform.rotation = rotation; transform.position = position; }
这个脚本很接近......它转换相机并旋转它以查看对象,但它没有将相机放置在正确的位置7,0,0
。
谢谢!