У меня есть скрипт 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
.
Спасибо!