GTA Builder Форум

GTA Vice City => Скриптинг => Тема начата: Prographer от Июнь 19, 2016, 01:05:35 am

Название: Соприкосновение объекта с землёй
Отправлено: Prographer от Июнь 19, 2016, 01:05:35 am
Всем привет! Недавно начал писать новый скрипт и появилась необходимость как-то исхитриться и проверить то, соприкоснулся объект с землёй или нет. Коли нет такого опкода, решил пойти по пути изменения координат, но почему-то тоже не вышло. Подскажите, как это сделать?
Название: Re: Соприкосновение объекта с землёй
Отправлено: xanser от Июнь 19, 2016, 09:10:19 am
Пробовал проверять разницу между координатой Z объекта и координатой Z-ground под объектом?
Название: Re: Соприкосновение объекта с землёй
Отправлено: Shagg_E от Июнь 19, 2016, 04:56:19 pm
Если объект динамический(прописан в 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 - юзай локальные.
Название: Re: Соприкосновение объекта с землёй
Отправлено: Prographer от Июнь 20, 2016, 03:44:11 pm
Если объект динамический(прописан в 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
[условие выполнено]
Название: Re: Соприкосновение объекта с землёй
Отправлено: DK от Июнь 20, 2016, 08:07:15 pm
У CPhysical есть метод GetHasCollidedWith(), который проверяет соприкосновение с другим обьектом.
Название: Re: Соприкосновение объекта с землёй
Отправлено: Shagg_E от Июнь 20, 2016, 09:39:06 pm
Я так понимаю, вот так?
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(), который проверяет соприкосновение с другим обьектом.
Шик, вот про это не знал)
Название: Re: Соприкосновение объекта с землёй
Отправлено: Prographer от Июнь 21, 2016, 05:25:57 pm
Цитировать
Я так понимаю, вот так?
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
while 04DA: has_object 5@ collided
    wait 0
    /* какой-то_код */
end
[условие выполнено]
Ну, я не люблю такой вид кода, но вроде правильно...
А как бы ты написал?
Название: Re: Соприкосновение объекта с землёй
Отправлено: Shagg_E от Июнь 22, 2016, 10:26:16 am
А как бы ты написал?
Ну, типа такого:
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
Название: Re: Соприкосновение объекта с землёй
Отправлено: Prographer от Июнь 23, 2016, 08:36:19 pm
Ну, типа такого:
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-синтаксиса, но его не удобно читать, по крайней мере мне.
Название: Re: Соприкосновение объекта с землёй
Отправлено: Shagg_E от Июнь 24, 2016, 10:22:40 am
Не знаю. Такой вариант, конечно, типичен для Cleo-синтаксиса, но его не удобно читать, по крайней мере мне.
Ну - это дело вкуса) Я просто и не пишу по-другому, поэтому за правильность твоего варианта не смогу поручиться(я просто не шарю в этом)