Страница 1 из 1

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

СообщениеДобавлено: 11 мар 2017, 17:59
A1g0
Как проверить скорость определенного объекта? Что-то типа из разряда:
if(скорость объекта == 0)
{
Destroy(gameObject).
}

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

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

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

СообщениеДобавлено: 11 мар 2017, 23:25
waruiyume
Дельту позиции ещё нужно разделить на дельту времени.

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

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

Физический. Как это можно написать на C#?

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

СообщениеДобавлено: 19 мар 2017, 06:34
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;
 

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

СообщениеДобавлено: 19 мар 2017, 18:30
A1g0
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'

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

СообщениеДобавлено: 19 мар 2017, 18:41
waruiyume
velocity- это вектор, чтобы получить его длину можно написать velocity.magnitude.

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

СообщениеДобавлено: 19 мар 2017, 20:24
Lolipop
Каюсь, ошибся извините(

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

СообщениеДобавлено: 23 мар 2017, 21:57
A1g0
waruiyume писал(а):velocity- это вектор, чтобы полутачить его длину можно написать velocity.magnitude.

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

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

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