forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   инерция для вращения камеры (http://forum.boolean.name/showthread.php?t=18224)

Alex_Witcher 31.05.2013 01:01

инерция для вращения камеры
 
Не немножко переделываю под себя fpc, суть в том что чем дальше курсор от центра экрана, тем быстрее вращается камера, для каждой из осей.
if (Vector3.Distance(Input.mousePosition,centr)>Radiu s)
{

speed= ((Input.mousePosition.x/Screen.width)-0.5f)* sensitivityX;



transform.Rotate(0,(speed), 0);

}
else
{

speed=0;
}
}

Но хочу добавить для камеры инерцию, что-бы суммарный вектор поворота менялся плавно. Подскажите как это сделать? Ну например если я дернул резко мышкой то придалось ускорение, если я перевел мышь в правую зону, то еще некоторое время по инерции камера вращается влево. Я думал вычислять моментальную скорость движения курсора и прибавлять к скорости вращения какую то суммарную инерцию, умноженную на коеффиценты.
if (Time.timeSinceLevelLoad-ts>dt)
{
speedYMoment=(Input.mousePosition.y-x1)/Time.deltaTime;

SummInerc=SummInerc+speedYMoment;
MomentSpeed();

}
Но получается пурга. Вообщем тут больше на логику, чем на код. Но я что-то туплю.

dsd 31.05.2013 02:48

Ответ: инерция для вращения камеры
 
if (Vector3.Distance(Input.mousePosition,centr)>Radiu s)
{

speed=0.95*speed +0.05* ((Input.mousePosition.x/Screen.width)-0.5f)* sensitivityX;



transform.Rotate(0,(speed), 0);

}
else
{

speed=0,95*speed;
}
}

как то так наверно. Типа есть скорость вращения уже. И есть текущее ускорение этой угловой скорости. Когда тормозит то есть курсор не придает ускорения то на скорость вращения действует сила трения, то есть с каждым кадром скорость вращения падает на какую то величину. А если курсор придает ускорение то уменьшаем скорость вокруг старой оси вращения и прибавляем часть от скорости вокруг новой оси вращения каждый кадр.

Alex_Witcher 31.05.2013 06:26

Ответ: инерция для вращения камеры
 
не совсем то, наверно я не правильно изложил свои мысли.
Надо как-то, что-бы если резко провести мышью, то камера еще по инерции крутилась в ту сторону чуть быстрее, постепенно замедляясь.

pax 31.05.2013 14:38

Ответ: инерция для вращения камеры
 
Я бы взял скрипт Smooth Follow и повесил на камеру с нулевым оффсетом, добавил бы вспомогательный объект - цель и его бы вращал, а камера пусть следит за ним.

Alex_Witcher 02.06.2013 13:59

Ответ: инерция для вращения камеры
 
шикарно,настроил, то что нужно) спасибо)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot