Обратиться к объекту столкновения.
|
|
Litas | Дата: Суббота, 03 Сентября 2016, 23:37 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Делал RPG. Есть разные объекты(цели). Есть объекты (fireballs, сгустки и прочая магия). Мне нужно как-нибудь обратиться к объекту, с которым будет сталкиваться магия, чтобы наносить ему урон. obj_zel.hp -= ... не катит. Т.е магия должна отнимать хп у объекта, с которым столкнулась(типа объектстолкновения.hp -= ...). Как получить название/айди этого объекта?
|
|
| |
Qvant | Дата: Суббота, 03 Сентября 2016, 23:58 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| в событии столкновения , объект с котором столкнулись - other
|
|
| |
Litas | Дата: Воскресенье, 04 Сентября 2016, 00:15 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| А можно сделать так, чтобы снаряд сам определял объект, с которым столкнулся, а потом обращался к нему. Совершенно разных существ в игре не мало, проделывать collision event для каждого не очень. Потому и создал тему. Можно ли так сделать? Ex. if collision_point(x,y,объект столкновения, который определяется,0,0) { объект столкновения, который определяется.hp -= ... } Думаю, нужно сделать переменную (target), которая будет равняться объекту с которым было столкновение, но как так сделать?
|
|
| |
Qvant | Дата: Воскресенье, 04 Сентября 2016, 00:47 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| просто в событии other и будет id объекта с которым он солкнулся
|
|
| |
Litas | Дата: Воскресенье, 04 Сентября 2016, 01:02 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| В событии collision у меня только список объектов. Написал так в степе магии
Код if collision_point(x,y,other,0,0) { instance_destroy() other.hp -= ... } но это не правильно и столкновение не происходит.
|
|
| |
Леонид | Дата: Воскресенье, 04 Сентября 2016, 08:44 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Other работает так, как написал тебе Qvant, , только в событии столкновения. Если ты не хочешь его использовать (я, правда, не вижу на то причин), то можно сделать и через степ. Функции проверки столкновений (в твоем случае collision_point) сами возвращают id объекта, с которым происходит столкновение (или noone, если его не происходит). Также, тебе следует создать родительский объект для всех противников и проверять столкновения с ним. В итоге код должен выглядеть как-то так:
Код enemy = collision_point(x,y,obj_enemy_parent,0,0); //значение enemy приравнивается к id объекта, с которым сталкиваемся (если его родительский объект - obj_enemy_parent) if enemy != noone // если столкновение произошло { enemy.hp -= dmg; } Не проверял, но должно работать (если верить справке Game Maker Studio).
П.С. Что за список объектов у тебя в событии collision?
Сообщение отредактировал Леонид - Воскресенье, 04 Сентября 2016, 08:45 |
|
| |
Litas | Дата: Воскресенье, 04 Сентября 2016, 17:04 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Спасибо, Леонид +. Все работает, как я хотел. Спасибо, Qvant +. Но почему не получается сделать через collision? Вроде все правильно. Other в событии столкновения. Может, я не правильно его использую? Можете примерчик написать, если не сложно. Буду очень благодарен+.
|
|
| |
Леонид | Дата: Воскресенье, 04 Сентября 2016, 19:04 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| Было бы легче, если бы ты выложил.
Цитата Litas ( ) Но почему не получается сделать через collision? Вроде все правильно. Other в событии столкновения. Ты же писал, что ты в step это вставлял, а не в столкновение.
|
|
| |
Litas | Дата: Воскресенье, 04 Сентября 2016, 21:45 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Я потом исправил. Записал это в столкновение, но снаряд никак вообще не реагирует на цель. А так вообще можно?
Код if collision_point(x,y,other,0,0) { instance_destroy() other.hp -= ... }
|
|
| |
Tymonr | Дата: Воскресенье, 04 Сентября 2016, 21:56 | Сообщение # 10 |
With OpenSource forever♥
Сейчас нет на сайте
| Litas, если он движется слишком быстро и является слишком маленьким - то будет пролетать насквозь. Используй длинные палки, длина которых равна скорости движения
Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы. Как правильно задавать вопросы в технических форумах
|
|
| |
Litas | Дата: Воскресенье, 04 Сентября 2016, 22:23 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Цитата Tymonr ( ) Litas, если он движется слишком быстро и является слишком маленьким - то будет пролетать насквозь. Используй длинные палки, длина которых равна скорости движения Не в этом дело. Для теста я сделал следование магии за мышкой. И при наведении на цель, магия просто залетает на спрайт цели
|
|
| |
Tymonr | Дата: Воскресенье, 04 Сентября 2016, 23:23 | Сообщение # 12 |
With OpenSource forever♥
Сейчас нет на сайте
| Litas, коллайдеры-то поставил?)
Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы. Как правильно задавать вопросы в технических форумах
|
|
| |