Передвижение объекта

Программирование на Юнити.

Передвижение объекта

Сообщение goodwin 30 апр 2011, 01:27

Есть герой и камера со скриптом MouseOrbit. Хочу сделать следующее:
При нажатие W герой поворачивался на такой же угол на какой повернулась камера относительно героя и после герой начинал движение в этом направлении.
Реализовал только поворот,подскажите, как сделать плавный поворот и чтобы только по окончанию поворота герой начал движение.
Синтаксис:
Используется javascript
var target: Transform;
var target1:GameObject;
function Update () {
if(Input.GetKey("w")){
var pov = target1.transform.rotation.y;
target.rotation.y = pov;
}
}
 
Изображение
FenceRoadCreator v2.0 - ограждения для дороги? легко!
Аватара пользователя
goodwin
UNIт
 
Сообщения: 62
Зарегистрирован: 29 апр 2011, 22:22

Re: Передвижение объекта

Сообщение waruiyume 30 апр 2011, 03:23

Синтаксис:
Используется javascript
var m:CharacterMotor;                     //|
m=GetComponent(CharacterMotor); //| я хз чем вы его двигаете
var cam:Transform;//камера
function Update ()
{
        if (Input.GetAxis ("Vertical")>0)
        {
                var dir:Vector3 = cam.forward;
                dir.y=0;
                var rot:Quaternion=Quaternion.LookRotation(dir);
                transform.rotation=Quaternion.RotateTowards (transform.rotation, rot, 2);
                if (Quaternion.Angle(transform.rotation,rot)<5)
                {
                        m.canControl=true;
                }
                else
                {
                        m.canControl=false;
                }
        }
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Передвижение объекта

Сообщение goodwin 30 апр 2011, 08:49

Что за класс такой CharacterMotor? Что то у меня его нет? выдает ошибку :(
Изображение
FenceRoadCreator v2.0 - ограждения для дороги? легко!
Аватара пользователя
goodwin
UNIт
 
Сообщения: 62
Зарегистрирован: 29 апр 2011, 22:22

Re: Передвижение объекта

Сообщение waruiyume 30 апр 2011, 09:07

Из пака Character Controllers, там вообще много интересного :D
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Передвижение объекта

Сообщение goodwin 30 апр 2011, 09:36

Вообщем оставил так:
Синтаксис:
Используется javascript
var cam:Transform;
function Update ()
{
        if (Input.GetAxis ("Vertical")>0)
        {
                var dir:Vector3 = cam.forward;
                dir.y=0;
                var rot:Quaternion=Quaternion.LookRotation(dir);
                transform.rotation=Quaternion.RotateTowards (transform.rotation, rot, 2);
        }
}
 

Поворот стал плавный, но Как бы сделать так, чтобы при нажатие клавиши W один раз он поворачивал в ту сторону 1 нажатием. И сделать это по дольше, т.е. например большой объект слишком быстро повернется если он весит тону.
что вроде
Синтаксис:
Используется javascript
var povorot: boolean;
function Update(){
if (Input.GetAxis ("Vertical")>0){
запоминаем куда направлен вектор камеры по Y;
povorot=true;
}
if(povorot){
поворачиваем объект медленно на заданный угол между вектором камеры и вектором героя;
 if(угол между двумя векторами равен 0){
   povorot=false;
 }
}
}
Изображение
FenceRoadCreator v2.0 - ограждения для дороги? легко!
Аватара пользователя
goodwin
UNIт
 
Сообщения: 62
Зарегистрирован: 29 апр 2011, 22:22

Re: Передвижение объекта

Сообщение waruiyume 30 апр 2011, 10:43

...И сделать это по дольше...
Использовать волшебную в любую (полная Ж) затычку *Time.deltaTime.
Синтаксис:
Используется javascript
var cam:Transform;
var rotate:boolean;
var rot:Quaternion;

function RotateToDir()
{
        if (Quaternion.Angle(transform.rotation,rot)!=0)
        {
                transform.rotation=Quaternion.RotateTowards (transform.rotation, rot, 90*Time.deltaTime);
        }
        else
        {
                rotate=false;
        }
}

function Update ()
{
        if (Input.GetAxis ("Vertical")>0)
        {
                        var dir:Vector3 = cam.forward;
                        dir.y=0;
                        rot=Quaternion.LookRotation(dir);
                        rotate=true;
        }
                if (rotate==true)
                {
                        RotateToDir();
                }
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Передвижение объекта

Сообщение goodwin 30 апр 2011, 10:51

waruiyume, спасибо большое :) теперь узнал новые команды.

Может ты пользуешься какой нибудь документацией где описаны все команды и их синтаксис с параметрами? Подскажи :)

И если можно, что за команда Input.GetAxis ("Vertical") ? почему не GetKey("w"), в чем логика между Vertical и буквой W?? :)
Последний раз редактировалось goodwin 30 апр 2011, 10:53, всего редактировалось 1 раз.
Изображение
FenceRoadCreator v2.0 - ограждения для дороги? легко!
Аватара пользователя
goodwin
UNIт
 
Сообщения: 62
Зарегистрирован: 29 апр 2011, 22:22

Re: Передвижение объекта

Сообщение waruiyume 30 апр 2011, 10:53

=))
help->Scripting Reference
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Передвижение объекта

Сообщение goodwin 30 апр 2011, 10:56

Я еще новичок, не смейся :) программировал лишь на Visual Basic, AS(Flash),PHP, а из игровых движков юзал только Blitz.
Решил вот Unity попробовать. :)

И все таки почему Vertical?
Изображение
FenceRoadCreator v2.0 - ограждения для дороги? легко!
Аватара пользователя
goodwin
UNIт
 
Сообщения: 62
Зарегистрирован: 29 апр 2011, 22:22

Re: Передвижение объекта

Сообщение waruiyume 30 апр 2011, 10:59

Интересно, а как вы писали не заглянув в справку (эспер походу :ymalien: )?
И все таки почему Vertical?

Поддержка геймпада.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Передвижение объекта

Сообщение goodwin 30 апр 2011, 11:05

Я обычно учусь на примерах, беру чужой проект и сижу смотрю зачем и почему нужна команда, как действует какие параметры :) просто проектов не могу найти от Unity в интернете, где куча команд с комментариями.

Хорошо что есть форумы, где люди готовы помочь начинающим :)
Изображение
FenceRoadCreator v2.0 - ограждения для дороги? легко!
Аватара пользователя
goodwin
UNIт
 
Сообщения: 62
Зарегистрирован: 29 апр 2011, 22:22

Re: Передвижение объекта

Сообщение waruiyume 30 апр 2011, 11:33

Ветка уроки.
Обычно всех посылают пройти 3D Platform Tutorial.
Буржуйские видеоуроки unity3dstudent.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8