Понедельник, 25 Ноября 2024, 21:50

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема
михаДата: Воскресенье, 30 Октября 2011, 17:36 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Значит: ПРОБЛЕМА! В общем суть вся в том, что я делаю все эти многострадальчесские танки, а точнее вообще транспорт. И вот вопросы:
1) Представьте, что мы имеем танк, составленный 3мя объектами: ходовая часть, дуло, пулемет м249 (стоит на крыше танка). И вот проблема в том, что как только пуля вылетает из дула пулемета, она тут же удаляется. Происходит это из - за того, что ходовая часть танка имеет родителя obj_block, а значит является таким же препятствием, как и железный ящик (например). Я бы и рад создать для ходовых частей танков отдельного родителя, и сделать так, чтобы пули летали сквозь него, а враги видели его как препятствие, но не тут то было. Если сделать так, то пули будут точно так же пролетать и сквозь другие танки. Мне нужно чтобы пуля пролета только сквозь ходовую часть танка, выпустившего её, а чрез остальные - нет.
2) Тут уже сложнее, но это уже не так важно, и относиться это не только к танкам. Как мы все с вами знаем - если маска не круглая, то объект застрявает в стенах. Эту проблему я решил таким путем: как только танк врезается в твердый объект он сразу же меняет своЁ image_anglЁ на предыдущее. Но тут такая проблема: при такой

реализации движения, при столкновении бок в бок танк останавливается, что подло нарушает все законы физики. По идее он должен продолжать движение, при этом выправляясь противоположенную сторону. Т. е. он просто не должен останавливаться, и одновременно не должен въезжать внутрь объекта, с которым столкнулся.

Добавлено (30.10.2011, 16:36)
---------------------------------------------
Всем заранее спасибо

SyankДата: Воскресенье, 30 Октября 2011, 19:02 | Сообщение # 2
участник
Сейчас нет на сайте
Поставь маленький будильник с переменной. Чтобы в этом будильнике либо пуля становилась твёрдой либо переменная какая либо менялась на истинну(а если истина, то при столкновении - уничтожение.) Я так делаю.
Это на 1:D
А со вторым я хз честно что делать, однако если так - это значит что маска куском наложилась на твёрдый объект и всё. Не имел дело. А вообще зачем маска, я по уроку проверяю place_meeting. Хотя с видом сверху это не покатит.
Только если проверять координаты с двух краёв. В общем - точно хз.


Сообщение отредактировал Syank - Воскресенье, 30 Октября 2011, 19:09
михаДата: Воскресенье, 30 Октября 2011, 19:11 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Quote
Поставь маленький будильник с переменной. Чтобы в этом будильнике либо пуля становилась твёрдой либо переменная какая либо менялась на истинну(а если истина, то при столкновении - уничтожение.) Я так делаю.
Это на 1:D

Не знаю. Из - за этого можно получить баги. У меня скорость пули - 40.
SyankДата: Воскресенье, 30 Октября 2011, 19:18 | Сообщение # 4
участник
Сейчас нет на сайте
тогда одному танку один родительский объект другому другой. Как я понял, у тебя можно садиться в разные танки? Если так, то если танк активен(ну игрок может управлять), то можно менять родительский объект. Только хз можно ли это делать кодом.

Добавлено (30.10.2011, 18:18)
---------------------------------------------
сожеление - не написано про смену родительских объектов. Тогда надо добавить что то вроде, что при столкновении с танком пуля уничтожается только если он не активен. Только у меня почему то как только проверяешь столкновение, объекты друг за друга цепляются. В таком случае всё таки поможет place_meeting

ApatiДата: Воскресенье, 30 Октября 2011, 19:35 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
1) В объекте пули создаешь переменную, в которой хранишь id танка, из которого была выпущена пуля. При пересечении пули с танком просто проверяешь, совпадает ли id танка с id, хранящемся в переменной пули, если совпало - пуля летит дальше, если нет - попадание в танк.
2) Опиши подробнее. Что значит "при столкновении бок в бок"? А лучше дай исходник. Можешь попробовать еще координаты танка возвращать на предыдущие.
михаДата: Понедельник, 31 Октября 2011, 16:40 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Apati, а по моему можно проще - активированная ходовая часть хранит переменную in_tank=1. Остальные хранят in_tank=0. Может стоит проверять при столкновении пули с ход. частью переменную in_tank? Я сам пока недотумкал если кто знает как, отпишитесь плиз!

Добавлено (31.10.2011, 16:40)
---------------------------------------------
Apati, На счет второго... тут сложно объяснить. Представь: стоит 2 танка. Подходит игрок, и садиться в один из них. Стоять остается только один, а второй ездит. Игрок (который в танке) хочет проехать рядом со вторым танком так, что их бока при малейшем повороте могут соприкоснуться. То есть параллельно 2ому танку. Стоит немного повернуть, и угол танка, управляемого игроком врежется в бок неподвижного танка. В реальном мире при этом управляемый танк будет продолжать движение, обскабливаясь при этом об 2ой танк. В моем же случае управляемый танк просто тупо врезается и останавливается. Хочу чтобы было как в реале.

ApatiДата: Понедельник, 31 Октября 2011, 16:58 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Quote (миха)
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
михаДата: Понедельник, 31 Октября 2011, 17:01 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
Quote
Теперь понятно. Тут надо определять точки пересечения и "выталкивать" танки друг из друга.
Вот хорошая статья на эту тему: http://www.metanetsoftware.com/technique/tutorialA.html

Эх! Я бы и рад, но я немецкий учу(
Quote
Так можно, только тогда танк героя и танк врага должны стрелять разными пулями - у пули из танка героя в условии столкновения if(in_tank==1), а у пули из танка врага - if(in_tank==0).

Ясно. А почему == а не просто =?
ApatiДата: Понедельник, 31 Октября 2011, 17:04 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Quote (миха)
Ясно. А почему == а не просто =?

Потому что я привык к C++, а там = - это оператор присваивания, а никак не сравнения.
Quote (миха)
Эх! Я бы и рад, но я немецкий учу(

Там кстати есть flash-приложения для иллюстрации, можно потыкать мышкой, по перемещать параметры, посмотреть изменения. Очень удобно.
EshfordДата: Понедельник, 31 Октября 2011, 17:11 | Сообщение # 10
Богиня Гамака ♥
Сейчас нет на сайте
Quote (Apati)
Потому что я привык к C++, а там = - это оператор присваивания

В гм = и есть оператор присваивания wink
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг