Показать сообщение отдельно
Старый 29.06.2011, 10:22   #1
Nazgul
Нуждающийся
 
Регистрация: 14.01.2011
Сообщений: 72
Написано 9 полезных сообщений
(для 44 пользователей)
MouseOrbit по эллипсу

Стандартный скрипт MouseOrbit вращает камеру вокруг объекта по окружности. Что в нем изменить, чтобы он вращал камеру по эллипсу?
Ниже приведу код стандартного скрипта MouseOrbit:
var target Transform;
var 
distance 10.0;

var 
xSpeed 250.0;
var 
ySpeed 120.0;

var 
yMinLimit = -20;
var 
yMaxLimit 80;

private var 
0.0;
private var 
0.0;
/* Параметры эллипса
private var a = 5;
private var b = 3;
*/
@script AddComponentMenu("Camera-Control/Mouse Orbit")

function 
Start () {
    var 
angles transform.eulerAngles;
    
angles.y;
    
angles.x;

    
// Make the rigid body not change rotation
       
if (rigidbody)
        
rigidbody.freezeRotation true;
}

function 
LateUpdate () {
    if (
target) {
        
+= Input.GetAxis("Mouse X") * xSpeed 0.02;
        
-= Input.GetAxis("Mouse Y") * ySpeed 0.02;
         
         
ClampAngle(yyMinLimityMaxLimit);
                
        var 
rotation Quaternion.Euler(yx0);
        var 
position rotation Vector3(0.00.0, -distance) + target.position;
        
        
transform.rotation rotation;
        
transform.position position;
    }
}

static function 
ClampAngle (angle floatmin floatmax float) {
    if (
angle < -360)
        
angle += 360;
    if (
angle 360)
        
angle -= 360;
    return 
Mathf.Clamp (angleminmax);

(Offline)
 
Ответить с цитированием