Значит: ПРОБЛЕМА! В общем суть вся в том, что я делаю все эти многострадальчесские танки, а точнее вообще транспорт. И вот вопросы: 1) Представьте, что мы имеем танк, составленный 3мя объектами: ходовая часть, дуло, пулемет м249 (стоит на крыше танка). И вот проблема в том, что как только пуля вылетает из дула пулемета, она тут же удаляется. Происходит это из - за того, что ходовая часть танка имеет родителя obj_block, а значит является таким же препятствием, как и железный ящик (например). Я бы и рад создать для ходовых частей танков отдельного родителя, и сделать так, чтобы пули летали сквозь него, а враги видели его как препятствие, но не тут то было. Если сделать так, то пули будут точно так же пролетать и сквозь другие танки. Мне нужно чтобы пуля пролета только сквозь ходовую часть танка, выпустившего её, а чрез остальные - нет. 2) Тут уже сложнее, но это уже не так важно, и относиться это не только к танкам. Как мы все с вами знаем - если маска не круглая, то объект застрявает в стенах. Эту проблему я решил таким путем: как только танк врезается в твердый объект он сразу же меняет своЁ image_anglЁ на предыдущее. Но тут такая проблема: при такой
Quote
if in_tank=1 {if keyboard_check(ord("S")) {speed=5 direction=image_angle-180}
if keyboard_check_released(ord("S")) {speed=0}
if keyboard_check(ord("W")) {speed=5 direction=image_angle}
if keyboard_check_released(ord("W")) {speed=0}
if keyboard_check(ord("A")) {imgprevios=image_angle image_angle+=3}
if keyboard_check(ord("D")) {imgprevios=image_angle image_angle-=3}}
if in_tank=0 {speed=0}
реализации движения, при столкновении бок в бок танк останавливается, что подло нарушает все законы физики. По идее он должен продолжать движение, при этом выправляясь противоположенную сторону. Т. е. он просто не должен останавливаться, и одновременно не должен въезжать внутрь объекта, с которым столкнулся.
Добавлено (30.10.2011, 16:36) --------------------------------------------- Всем заранее спасибо
Поставь маленький будильник с переменной. Чтобы в этом будильнике либо пуля становилась твёрдой либо переменная какая либо менялась на истинну(а если истина, то при столкновении - уничтожение.) Я так делаю. Это на 1:D А со вторым я хз честно что делать, однако если так - это значит что маска куском наложилась на твёрдый объект и всё. Не имел дело. А вообще зачем маска, я по уроку проверяю place_meeting. Хотя с видом сверху это не покатит. Только если проверять координаты с двух краёв. В общем - точно хз.
Сообщение отредактировал Syank - Воскресенье, 30 Октября 2011, 19:09
Поставь маленький будильник с переменной. Чтобы в этом будильнике либо пуля становилась твёрдой либо переменная какая либо менялась на истинну(а если истина, то при столкновении - уничтожение.) Я так делаю. Это на 1:D
Не знаю. Из - за этого можно получить баги. У меня скорость пули - 40.
тогда одному танку один родительский объект другому другой. Как я понял, у тебя можно садиться в разные танки? Если так, то если танк активен(ну игрок может управлять), то можно менять родительский объект. Только хз можно ли это делать кодом.
Добавлено (30.10.2011, 18:18) --------------------------------------------- сожеление - не написано про смену родительских объектов. Тогда надо добавить что то вроде, что при столкновении с танком пуля уничтожается только если он не активен. Только у меня почему то как только проверяешь столкновение, объекты друг за друга цепляются. В таком случае всё таки поможет place_meeting
1) В объекте пули создаешь переменную, в которой хранишь id танка, из которого была выпущена пуля. При пересечении пули с танком просто проверяешь, совпадает ли id танка с id, хранящемся в переменной пули, если совпало - пуля летит дальше, если нет - попадание в танк. 2) Опиши подробнее. Что значит "при столкновении бок в бок"? А лучше дай исходник. Можешь попробовать еще координаты танка возвращать на предыдущие.
Apati, а по моему можно проще - активированная ходовая часть хранит переменную in_tank=1. Остальные хранят in_tank=0. Может стоит проверять при столкновении пули с ход. частью переменную in_tank? Я сам пока недотумкал если кто знает как, отпишитесь плиз!
Добавлено (31.10.2011, 16:40) --------------------------------------------- Apati, На счет второго... тут сложно объяснить. Представь: стоит 2 танка. Подходит игрок, и садиться в один из них. Стоять остается только один, а второй ездит. Игрок (который в танке) хочет проехать рядом со вторым танком так, что их бока при малейшем повороте могут соприкоснуться. То есть параллельно 2ому танку. Стоит немного повернуть, и угол танка, управляемого игроком врежется в бок неподвижного танка. В реальном мире при этом управляемый танк будет продолжать движение, обскабливаясь при этом об 2ой танк. В моем же случае управляемый танк просто тупо врезается и останавливается. Хочу чтобы было как в реале.
Apati, а по моему можно проще - активированная ходовая часть хранит переменную in_tank=1. Остальные хранят in_tank=0. Может стоит проверять при столкновении пули с ход. частью переменную in_tank
Так можно, только тогда танк героя и танк врага должны стрелять разными пулями - у пули из танка героя в условии столкновения if(in_tank==1), а у пули из танка врага - if(in_tank==0).
Quote (миха)
Стоит немного повернуть, и угол танка, управляемого игроком врежется в бок неподвижного танка.
Теперь понятно. Тут надо определять точки пересечения и "выталкивать" танки друг из друга. Вот хорошая статья на эту тему: http://www.metanetsoftware.com/technique/tutorialA.html
Теперь понятно. Тут надо определять точки пересечения и "выталкивать" танки друг из друга. Вот хорошая статья на эту тему: http://www.metanetsoftware.com/technique/tutorialA.html
Эх! Я бы и рад, но я немецкий учу(
Quote
Так можно, только тогда танк героя и танк врага должны стрелять разными пулями - у пули из танка героя в условии столкновения if(in_tank==1), а у пули из танка врага - if(in_tank==0).