GTA Builder Форум
GTA Vice City => Скриптинг => Тема начата: Prographer от Июнь 19, 2016, 01:05:35 am
-
Всем привет! Недавно начал писать новый скрипт и появилась необходимость как-то исхитриться и проверить то, соприкоснулся объект с землёй или нет. Коли нет такого опкода, решил пойти по пути изменения координат, но почему-то тоже не вышло. Подскажите, как это сделать?
-
Пробовал проверять разницу между координатой Z объекта и координатой Z-ground под объектом?
-
Если объект динамический(прописан в object.dat, имеет коллизию из шаров) - можно проверять, соприкоснулся ли объект с землей так:
Сначала, перед циклом проверки, нужно врубить это:
04D9: object $TELO set_scripted_collision_check 1 // тут, думаю, всё понятно - без включения этой опции нельзя будет проверить касание объекта $TELO до чего-либо
В цикле проверки проверять касание земли так:
04DA: has_object $TELO collided
Когда закончили - вырубить проверку(если в дальнейшем нам объект еще понадобится)
04D9: object $TELO set_scripted_collision_check 0
P.S. переменная у меня глобальная, т.к. код выдран из мэйна. Если работаешь с CLEO - юзай локальные.
-
Если объект динамический(прописан в object.dat, имеет коллизию из шаров) - можно проверять, соприкоснулся ли объект с землей так:
Сначала, перед циклом проверки, нужно врубить это:
04D9: object $TELO set_scripted_collision_check 1 // тут, думаю, всё понятно - без включения этой опции нельзя будет проверить касание объекта $TELO до чего-либо
В цикле проверки проверять касание земли так:
04DA: has_object $TELO collided
Когда закончили - вырубить проверку(если в дальнейшем нам объект еще понадобится)
04D9: object $TELO set_scripted_collision_check 0
P.S. переменная у меня глобальная, т.к. код выдран из мэйна. Если работаешь с CLEO - юзай локальные.
Я так понимаю, вот так?
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
while 04DA: has_object 5@ collided
wait 0
/* какой-то_код */
end
[условие выполнено]
-
У CPhysical есть метод GetHasCollidedWith(), который проверяет соприкосновение с другим обьектом.
-
Я так понимаю, вот так?
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
while 04DA: has_object 5@ collided
wait 0
/* какой-то_код */
end
[условие выполнено]
Ну, я не люблю такой вид кода, но вроде правильно...
У CPhysical есть метод GetHasCollidedWith(), который проверяет соприкосновение с другим обьектом.
Шик, вот про это не знал)
-
Я так понимаю, вот так?
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
while 04DA: has_object 5@ collided
wait 0
/* какой-то_код */
end
[условие выполнено]
Ну, я не люблю такой вид кода, но вроде правильно...
А как бы ты написал?
-
А как бы ты написал?
Ну, типа такого:
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
:Ololo
wait 0
if
04DA: has_object 5@ collided
jf @Ololo
код
и если снова понадобится чекать, то
04D9: object 5@ set_scripted_collision_check 0
wait 0
04D9: object 5@ set_scripted_collision_check 1
jump @Ololo
-
Ну, типа такого:
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
:Ololo
wait 0
if
04DA: has_object 5@ collided
jf @Ololo
код
и если снова понадобится чекать, то
04D9: object 5@ set_scripted_collision_check 0
wait 0
04D9: object 5@ set_scripted_collision_check 1
jump @Ololo
Не знаю. Такой вариант, конечно, типичен для Cleo-синтаксиса, но его не удобно читать, по крайней мере мне.
-
Не знаю. Такой вариант, конечно, типичен для Cleo-синтаксиса, но его не удобно читать, по крайней мере мне.
Ну - это дело вкуса) Я просто и не пишу по-другому, поэтому за правильность твоего варианта не смогу поручиться(я просто не шарю в этом)