Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 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 
x = 0.0;
private var 
y = 0.0;
/* Параметры эллипса
private var a = 5;
private var b = 3;
*/
@script AddComponentMenu("Camera-Control/Mouse Orbit")

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 
LateUpdate () {
    if (
target) {
        
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
        
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
         
         
y = ClampAngle(y, yMinLimit, yMaxLimit);
                
        var 
rotation = Quaternion.Euler(y, x, 0);
        var 
position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
        
        
transform.rotation = rotation;
        
transform.position = position;
    }
}

static function 
ClampAngle (angle : float, min : float, max : float) {
    if (
angle < -360)
        
angle += 360;
    if (
angle > 360)
        
angle -= 360;
    return 
Mathf.Clamp (angle, min, max);
} 
(Offline)
 
Ответить с цитированием
Старый 29.06.2011, 11:05   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: MouseOrbit по эллипсу

Сообщение от Nazgul Посмотреть сообщение
...
...
static function 
ClampAngle (angle : float, min : float, max : float) {
    if (
angle < -360)
        
angle += 360;
    if (
angle > 360)
        
angle -= 360;
    return 
Mathf.Clamp (angle, min, max);
} 
http://forum.boolean.name/showthread.php?t=1480
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 09:44.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com