Проверка скорости объекта

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

Проверка скорости объекта

Сообщение A1g0 11 мар 2017, 17:59

Как проверить скорость определенного объекта? Что-то типа из разряда:
if(скорость объекта == 0)
{
Destroy(gameObject).
}
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: Проверка скорости объекта

Сообщение samana 11 мар 2017, 19:25

Если ваш объект физический, то у его rigidBody есть свойство velocity (скорость).
А если объект не физический, то скорость можно узнать, по формуле
скорость = предыдущаяПозиция - текущаяПозиция.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Проверка скорости объекта

Сообщение waruiyume 11 мар 2017, 23:25

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

Re: Проверка скорости объекта

Сообщение A1g0 18 мар 2017, 22:54

samana писал(а):Если ваш объект физический, то у его rigidBody есть свойство velocity (скорость).
А если объект не физический, то скорость можно узнать, по формуле
скорость = предыдущаяПозиция - текущаяПозиция.

Физический. Как это можно написать на C#?
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: Проверка скорости объекта

Сообщение Lolipop 19 мар 2017, 06:34

Синтаксис:
Используется csharp
If (GetComponent<Rigidbody>().velocity == 0) {
GameObject.Destroy(this.gameObject);
}


Ну и для полноты сообщения:
Если не физический(авось пригодиться)
Синтаксис:
Используется csharp
If(Vector3.Magnitude(transform.position - LastPos) == 0) {
GameObject.Destroy(this.gameObject);
}
LastPos = transform.position;
 
ЭЩКЕРЕ!
Аватара пользователя
Lolipop
UNIт
 
Сообщения: 141
Зарегистрирован: 05 окт 2016, 14:21

Re: Проверка скорости объекта

Сообщение A1g0 19 мар 2017, 18:30

Lolipop писал(а):
Синтаксис:
Используется csharp
If (GetComponent<Rigidbody>().velocity == 0) {
GameObject.Destroy(this.gameObject);
}


Ну и для полноты сообщения:
Если не физический(авось пригодиться)
Синтаксис:
Используется csharp
If(Vector3.Magnitude(transform.position - LastPos) == 0) {
GameObject.Destroy(this.gameObject);
}
LastPos = transform.position;
 

Assets/scripts/Jump.cs(41,47): error CS0019: Operator `==' cannot be applied to operands of type `UnityEngine.Vector3' and `int'
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: Проверка скорости объекта

Сообщение waruiyume 19 мар 2017, 18:41

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

Re: Проверка скорости объекта

Сообщение Lolipop 19 мар 2017, 20:24

Каюсь, ошибся извините(
ЭЩКЕРЕ!
Аватара пользователя
Lolipop
UNIт
 
Сообщения: 141
Зарегистрирован: 05 окт 2016, 14:21

Re: Проверка скорости объекта

Сообщение A1g0 23 мар 2017, 21:57

waruiyume писал(а):velocity- это вектор, чтобы полутачить его длину можно написать velocity.magnitude.

Работает. НО. На моем 2D Объекте весит скрипт, который дает скорость ВСЕГДА и только в одну сторону. Вот, мой объект застрял в текстуре ( и как раз тут должен включатся мой скрипт уничтожения объекта ), но ничего не происходит. Происходит что-то если только выключить тот скрипт, в котором включается скорость. Как это исправить?
Синтаксис:
Используется csharp
                        GetComponent<Rigidbody2D>().velocity = new Vector2(speed, GetComponent<Rigidbody2D>().velocity.y); // скрипт, который дает скорость
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: Проверка скорости объекта

Сообщение A1g0 24 мар 2017, 16:01

closed
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23


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

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 22