MoveObject
#1

MoveObject(objectid, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX = -1000.0, Float:RotY = -1000.0, Float:RotZ = -1000.0);

Параметры RotX RotY RotZ - углы конечного положения объекта.

Особенность.
Для того чтобы объект двигался вокруг своей оси надо хоть одной из координат добавить минимальное приращение.
MoveObject(objectid, X,Y, Z+0.001, Speed, RotX, RotY, RotZ);

Но после первого вращения объект начинает вести себя как при обычной ф-ии SetObjectRot

Поставил StopObject перед всеми MoveObject. Не помогло.
Поставил StopObject в public OnObjectMoved(objectid). Не помогло.
В чем проблема?
Reply
#2

Разобрался в чем проблема.
Оказывается координаты X, Y, Z не должны быть одинаковы при повторном использовании MoveObject.
Т.е. для открытия шлагбаумма используем Z+0.001
а для закрытия Z+0.002
Reply
#3

И получим взлетающий шлагбаумм)))
Reply
#4

закрывать на начальные координаты можно
Reply
#5

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

Также заметил, что если приращение очень мало, то скорость надо увеличивать.
Допустим при приращении 0.01, скорость 0.005.
А при при приращении 0.001, скорость нужно сделать 0.001, чтобы движение объекты было примерно одинаково.

Кстати шлагбаумы у меня не летают и не летали.
Но StopObject в public OnObjectMoved(objectid) должно быть для надёжности.
Reply
#6

Если ты открываешь на Z+0.001, то закрывай на Z. Иначе шлакбаум будет вверх уезжать, как Стёпа сказал.
Reply
#7

Quote:
Originally Posted by OKStyle
View Post
Стёпа
Reply
#8

OKStyle, да я понял, просто за долгое время игры оно наращивается и центр смещает потихоньку. Хоть это сразу и не заметно.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)