как узнать скорость объекта?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

как узнать скорость объекта?

Сообщение RestFall 27 мар 2012, 19:16

как узнать скорость движения объекта? я не могу использовать ригидбоди.велосити.магнитуде, у объекта нет ригидбоди.
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: как узнать скорость объекта?

Сообщение Левш@ 27 мар 2012, 19:27

Элементарно замерить, можно в FixedUpdate().
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: как узнать скорость объекта?

Сообщение RestFall 27 мар 2012, 19:28

Левш@ писал(а):Элементарно замерить, можно в FixedUpdate().

подскажите как?
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: как узнать скорость объекта?

Сообщение seaman 27 мар 2012, 19:31

Вы физику вообще изучали? Что такое скорость?= Расстояние/время
(position_new - position_old)/Time.deltatime
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: как узнать скорость объекта?

Сообщение RestFall 27 мар 2012, 19:51

seaman писал(а):Вы физику вообще изучали? Что такое скорость?= Расстояние/время
(position_new - position_old)/Time.deltatime

да ёпта, знаю я что такое скорость, мне нужно как узнать её unity script'ом?????? трансформ позитион или че там...?
Синтаксис:
Используется javascript
if((vertical_button > 0)&&(здесь скорость, которая > 0)){и действие;}
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: как узнать скорость объекта?

Сообщение alexsilent 27 мар 2012, 19:55

у rigidbody есть velocity
rigidbody.velocity, но это вектор
надо его еще сложить как-то в единую скорость,
но я дизайнер, а не математик) я использовал magnitude, но может неправильно делаю XD
чтобы не мучатся с запоминанием старых координат
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: как узнать скорость объекта?

Сообщение seaman 27 мар 2012, 19:56

да ёпта, знаю я что такое скорость

Значит Вы не знаете что такое расстояние? Иначе непонятны Ваши вопросы.
Расстояние = длина вектора из новой точки расположения в старую.
у rigidbody есть velocity

Вы вообще вопрос читали? Не использует он ригидбоди!
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: как узнать скорость объекта?

Сообщение alexsilent 27 мар 2012, 19:58

seaman писал(а):Вы физику вообще изучали? Что такое скорость?= Расстояние/время
(position_new - position_old)/Time.deltatime


Ого! Делить на Дельта тайм? А я по своей наивности умножал в своем скрипте ^_^'
Синтаксис:
Используется javascript
//Slow the speed of NPC
rigidbody.velocity = (rigidbody.velocity * .985 * Time.deltaTime * 50);
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: как узнать скорость объекта?

Сообщение alexsilent 27 мар 2012, 19:59

seaman писал(а):
у rigidbody есть velocity

Вы вообще вопрос читали? Не использует он ригидбоди!


Да! Эту часть я пропустил, виноват :D

Тогда нужно вводить дополнительную переменную Vector3 для запоминания последнего местоположения.

хм, что-то вроде

Синтаксис:
Используется javascript
var speed:Vector3;
var old_position:Vector3 = transform.position;

function FixedUpdate() {
   
    speed = (transform.position - old_position)/Time.DeltaTime; //запоминаем скорость;
    old_position = transform.position; //берем новую "старую" позицию
    if (vertical_button > 0 && speed.magnitude>0){и действие;} //делаем еще что-то
}


я мог перепутать кое-что, только вспоминаю как работать на Юньке ^_^'
alexsilent
UNIверсал
 
Сообщения: 440
Зарегистрирован: 21 май 2011, 10:30

Re: как узнать скорость объекта?

Сообщение seaman 27 мар 2012, 20:19

1.
А я по своей наивности умножал в своем скрипте ^_^'

В приведенном скрипте Вы не вычисляете скорость, а плавно меняете ее.
2. Если Вы ведете расчеты в FixedUpdate, то и используйте Time.fixedDeltaTime
ЗЫ: Да, и не используйте таких вещей:
.985 * 50
Неизвестно оптимизирует ли это компилятор. Я понял если бы Вы использовали const, для удобочитаемости кода. А так - лучше перемножить самому для спокойствия.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: как узнать скорость объекта?

Сообщение RestFall 27 мар 2012, 20:54

seaman писал(а):
да ёпта, знаю я что такое скорость

Значит Вы не знаете что такое расстояние? Иначе непонятны Ваши вопросы.
Расстояние = длина вектора из новой точки расположения в старую.
у rigidbody есть velocity

Вы вообще вопрос читали? Не использует он ригидбоди!

да КИПЯТОК МНЕ В УХО!!!, так я и спрашиваю как наити скорость? с помощью чего? старая точка - новая точка? как в юнити скрипте они называются эти точки?....эх.... :[

спасибо alexsilent теперь знаю в какую сторону копать! но все равно ошибка... мозги уже не переваривают... придется завтра доделывать...
NullReferenceException: Object reference not set to an instance of an object
Boo.Lang.Runtime.RuntimeServices.InvokeBinaryOperator (System.String operatorName, System.Object lhs, System.Object rhs)
character_move.char_speed () (at Assets/scripts/character_move.js:370)
character_move.FixedUpdate () (at Assets/scripts/character_move.js:51)
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: как узнать скорость объекта?

Сообщение seaman 27 мар 2012, 21:11

как в юнити скрипте они называются эти точки?

Пройдите уроки:
viewforum.php?f=11
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: как узнать скорость объекта?

Сообщение RestFall 27 мар 2012, 22:42

seaman писал(а):
как в юнити скрипте они называются эти точки?

Пройдите уроки:
viewforum.php?f=11

мда уж... смысл создавать тогда тему, в разделе "почемучка"?... котакбас
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: как узнать скорость объекта?

Сообщение seaman 27 мар 2012, 22:49

viewtopic.php?f=105&t=7774&p=60702#p60702
Цитата:
Если вы не понимаете сарказма, то Почемучка это вообще-то именно тот форум, куда скидываются все темы, отвечать на которые не хочется из-за того, что отвечено на форуме сто раз уже, или созданные настолько ленивыми и наглыми (...) товарищами, что им "не досуг" читать справку, но зато досуг писать на форум.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: как узнать скорость объекта?

Сообщение Левш@ 27 мар 2012, 23:14

=))
Синтаксис:
Используется javascript
var spidometr : GUIText;
var startPoint : Vector3;
var finishPoint : Vector3;
var distance_1sec : float;
var order : boolean = true;

function Update () {
     if (order) {
          order = false;
          SpeedCalculator();
     }
}
function SpeedCalculator () {
          startPoint = transform.position;
          yield WaitForSeconds (1);
          finishPoint = transform.position;
          spidometr.text = Vector3.Distance(startPoint, finishPoint).ToString("f1") + " / 1 sec";
          order = true;
}
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

След.

Вернуться в Почемучка

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

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