Несколько объектов
| |
B@rney | Дата: Пятница, 15 Июня 2012, 17:06 | Сообщение # 1 |
заслуженный участник
Сейчас нет на сайте
| Всем привет, сразу к делу как сделать, чтобы при этом коде показывался только один объект spiderp Code if distance_to_object(spiderp)<115 {spiderp.visible=true; vis=1} else {spiderp.visible=false; vis=0} и наоборот, чтобы при этом рисовались все видимые объекты spiderp: Code if vis=1 { pen_color = c_black brush_color = c_red draw_set_color(brush_color) obj1=spiderp xc = obj1.x yc = obj1.y draw_rectangle(x+vleft+xc/scale+4,y+vtop+yc/scale+4,x+vleft+xc/scale+4+5,y+vtop+yc/scale+4+5,0) }
Правильного решения порой нет, но лучшее решение есть всегда.
|
|
| |
Saladin | Дата: Пятница, 15 Июня 2012, 20:38 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Я, честно сказать, не понял, что нужно во втором случае, а в первом нужно плясать от обратного. То есть ты должен делать проверку внутри обьекта spiderp.
Вот это нужно запихать внутрь: Quote if distance_to_object('второй обьект проверки')<115 {visible=true; vis=1} else {visible=false; vis=0}
Анбаннэд. Хэлоу эгин =)
Сообщение отредактировал Saladin - Пятница, 15 Июня 2012, 20:39 |
|
| |
B@rney | Дата: Пятница, 15 Июня 2012, 21:06 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Quote (Saladin) Я, честно сказать, не понял, что нужно во втором случае, а в первом нужно плясать от обратного. То есть ты должен делать проверку внутри обьекта spiderp. мффф, спасибо А во втором случае.. допустим у меня есть радар, когда я вижу объект (например spiderp) он должен у меня отображаться на радаре. Но так как объектов несколько, из них всех отображается только один. (obj1=spiderp).
Правильного решения порой нет, но лучшее решение есть всегда.
|
|
| |
Anarchyst | Дата: Пятница, 15 Июня 2012, 21:16 | Сообщение # 4 |
Chaotic Evil
Сейчас нет на сайте
| При создании объекта пуш его в массив и доставай оттуда. Все же просто.
Good отстой, Neutral - параша, Evil, хой, победа наша!
|
|
| |
B@rney | Дата: Пятница, 15 Июня 2012, 21:21 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| на словах я не очень воспринимаю всю эту информацию, лучше примером бы показал, если так просто (примером кода)
Правильного решения порой нет, но лучшее решение есть всегда.
|
|
| |
Saladin | Дата: Суббота, 16 Июня 2012, 00:16 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Да просто рисуй точно так же в радар из обьекта spiderp.
if visible draw_circle(x,y,r,outline)
Только координаты используй те, что ты используешь для отрисовки на радаре.
Анбаннэд. Хэлоу эгин =)
|
|
| |
B@rney | Дата: Суббота, 16 Июня 2012, 15:49 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| ммм... с этим разобрался, спасибо есть еще 1 вопрос: Есть объект Lava, при создании стоит alarm[0]=30; num+=1;, а в alarm[0]: Code alarm[0]=30 if num<15 { if !place_meeting(lava.x+32,lava.y,lava or wall) {instance_create(lava.x+32,lava.y,lava)} if !place_meeting(lava.x-32,lava.y,lava or wall) {instance_create(lava.x-32,lava.y,lava)} if !place_meeting(lava.x,lava.y+32,lava or wall) {instance_create(lava.x,lava.y+32,lava)} if !place_meeting(lava.x,lava.y-32,lava or wall) {instance_create(lava.x,lava.y-32,lava)} } Если место свободное, то объект lava создается только один раз и больше не хочет, в чем проблема?
Правильного решения порой нет, но лучшее решение есть всегда.
|
|
| |
GameMix | Дата: Суббота, 16 Июня 2012, 16:01 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| B@rney, скорее всего, lava контактирует с другими объектами lava. И поэтому остальные условия не выполняются.
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
B@rney | Дата: Суббота, 16 Июня 2012, 16:05 | Сообщение # 9 |
заслуженный участник
Сейчас нет на сайте
| GameMix, поставил большее расстояние.. не получилось, объект сам 32х32 и, допустим, если сверху ничего нету, то по условию Code if !place_meeting(lava.x,lava.y+32,lava or wall) он ведь должен создавать объект lava еще выше
Правильного решения порой нет, но лучшее решение есть всегда.
|
|
| |
GameMix | Дата: Суббота, 16 Июня 2012, 16:09 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| B@rney, кстати, третий аргумент - lava or wall. Разве так можно?
Как альтернативу этой проверке можно использовать проверку на попадание точки с указанными координатами в пределы квадрата образованного размерами спрайта объекта. Понял, о чем я?
Steel Standoff - 2D аркада. Мои статьи
Сообщение отредактировал GameMix - Суббота, 16 Июня 2012, 16:10 |
|
| |
B@rney | Дата: Суббота, 16 Июня 2012, 16:14 | Сообщение # 11 |
заслуженный участник
Сейчас нет на сайте
| GameMix, ну не знаю.. в первый раз создался-то объект lava рядом и в свободных клетках, но только один раз Не совсем понял
Правильного решения порой нет, но лучшее решение есть всегда.
|
|
| |
AGDMFG | Дата: Суббота, 16 Июня 2012, 16:53 | Сообщение # 12 |
участник
Сейчас нет на сайте
| Quote кстати, третий аргумент - lava or wall. Разве так можно?
СтОит "лаве" и "стенке" родителя общего поставить и на него ссылаться.
Code collision_rectangle(x1,y1,x2,y2,obj,prec,notme) столкновение квадратом
Первая доделанная игра: Putin V.S. Humanity
|
|
| |
B@rney | Дата: Суббота, 16 Июня 2012, 17:24 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| AGDMFG, например: Code collision_rectangle(lava.x,lava.y+32,lava.x+32,lava.y,wall,1,1) как я понял, это идет проверка квадрата 32х32 сверху.. сейчас буду шаманитьДобавлено (16.06.2012, 17:24) --------------------------------------------- шаманил-шаманил, да вот ничерта не вышло, то ли я не правильно квадраты рисую для проверки, то ли... бред вообщем, есть другие решения? код кстати: Code if collision_rectangle(lava.x,lava.y+32,lava.x,lava.y+32,lava or wall,1,1) {instance_create(lava.x,lava.y+32,lava)} if collision_rectangle(lava.x-32,lava.y,lava.x-32,lava.y,lava or wall,1,1) {instance_create(lava.x-32,lava.y,lava)} if collision_rectangle(lava.x+32,lava.y,lava.x+32,lava.y,lava or wall,1,1) {instance_create(lava.x,lava.y+32,lava)} if collision_rectangle(lava.x,lava.y-32,lava.x,lava.y-32,lava or wall,1,1) {instance_create(lava.x,lava.y-32,lava)}
Правильного решения порой нет, но лучшее решение есть всегда.
|
|
| |
AGDMFG | Дата: Суббота, 16 Июня 2012, 17:37 | Сообщение # 14 |
участник
Сейчас нет на сайте
| Code if !collision_rectangle(x,y,x,y+32,lava,1,1) {instance_create(x,y+32,lava);} if !collision_rectangle(x,y,x-32,y,lava,1,1) {instance_create(x-32,y,lava);} if !collision_rectangle(x,y,x+32,y,lava,1,1) {instance_create(x+32,y,lava);} if !collision_rectangle(x,y,x,y-32,lava,1,1) {instance_create(x,y-32,lava);}
Квадрат 32*32 с центром в 16*16
Первая доделанная игра: Putin V.S. Humanity
|
|
| |
B@rney | Дата: Суббота, 16 Июня 2012, 17:42 | Сообщение # 15 |
заслуженный участник
Сейчас нет на сайте
| хм... в условии стоит еще if num<15 то происходят эти действия, в создании Lava стоит num+=1 но создается только 3 объекта, 3х2+1=7, а должно быть 15...
Правильного решения порой нет, но лучшее решение есть всегда.
|
|
| |
AGDMFG | Дата: Суббота, 16 Июня 2012, 18:22 | Сообщение # 16 |
участник
Сейчас нет на сайте
| Quote 3 объекта, 3х2+1=7, а должно быть 15... Тоже ничего не понял)
Создай обьект controller и в нем проверяй к-во кубов лавы и.т.п.и.т.д. Code controller.num=1; //допустим на карте один куб. От него создадим еще 14.
Обьект lava. Событие степ, нажатие клавиши и.т.п: Code if controller.num<15 {if !collision_rectangle(x,y,x,y+32,lava,1,1) {instance_create(x,y+32,lava); controller.num+=1;}} if controller.num<15 {if !collision_rectangle(x,y,x-32,y,lava,1,1) {instance_create(x-32,y,lava);controller.num+=1;}} if controller.num<15 {if !collision_rectangle(x,y,x+32,y,lava,1,1) {instance_create(x+32,y,lava);controller.num+=1;}} if controller.num<15 {if !collision_rectangle(x,y,x,y-32,lava,1,1) {instance_create(x,y-32,lava);controller.num+=1;}} Сделаем для каждого куба лавы отдельную проверку, чтобы не создалось больше чем нужно.
Первая доделанная игра: Putin V.S. Humanity
|
|
| |
B@rney | Дата: Суббота, 16 Июня 2012, 18:30 | Сообщение # 17 |
заслуженный участник
Сейчас нет на сайте
| AGDMFG, теперь все пошло только num в глобальную переменную засунул, ну да это не важно, спасибо
Правильного решения порой нет, но лучшее решение есть всегда.
|
|
| |
|