Четверг, 28 Марта 2024, 18:17

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Несколько объектов
Несколько объектов
B@rneyДата: Пятница, 15 Июня 2012, 17:06 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Всем привет, сразу к делу biggrin
как сделать, чтобы при этом коде показывался только один объект 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.

мффф, спасибо happy
А во втором случае.. допустим у меня есть радар, когда я вижу объект (например spiderp) он должен у меня отображаться на радаре.
Но так как объектов несколько, из них всех отображается только один. (obj1=spiderp).


Правильного решения порой нет, но лучшее решение есть всегда.
AnarchystДата: Пятница, 15 Июня 2012, 21:16 | Сообщение # 4
Chaotic Evil
Сейчас нет на сайте
При создании объекта пуш его в массив и доставай оттуда. Все же просто.

Good отстой, Neutral - параша, Evil, хой, победа наша!
B@rneyДата: Пятница, 15 Июня 2012, 21:21 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
на словах я не очень воспринимаю всю эту информацию, лучше примером бы показал, если так просто happy
(примером кода)


Правильного решения порой нет, но лучшее решение есть всегда.
SaladinДата: Суббота, 16 Июня 2012, 00:16 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Да просто рисуй точно так же в радар из обьекта spiderp.

if visible
draw_circle(x,y,r,outline)

Только координаты используй те, что ты используешь для отрисовки на радаре.


Анбаннэд. Хэлоу эгин =)
B@rneyДата: Суббота, 16 Июня 2012, 15:49 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
ммм... с этим разобрался, спасибо happy
есть еще 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 создается только один раз и больше не хочет, в чем проблема? happy


Правильного решения порой нет, но лучшее решение есть всегда.
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 еще выше wacko


Правильного решения порой нет, но лучшее решение есть всегда.
GameMixДата: Суббота, 16 Июня 2012, 16:09 | Сообщение # 10
старожил
Сейчас нет на сайте
B@rney, кстати, третий аргумент - lava or wall. Разве так можно?

Как альтернативу этой проверке можно использовать проверку на попадание точки с указанными координатами в пределы квадрата образованного размерами спрайта объекта. Понял, о чем я? happy


Steel Standoff - 2D аркада.
Мои статьи


Сообщение отредактировал GameMix - Суббота, 16 Июня 2012, 16:10
B@rneyДата: Суббота, 16 Июня 2012, 16:14 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
GameMix, ну не знаю.. в первый раз создался-то объект lava рядом и в свободных клетках, но только один раз wink
Не совсем понял cry


Правильного решения порой нет, но лучшее решение есть всегда.
AGDMFGДата: Суббота, 16 Июня 2012, 16:53 | Сообщение # 12
участник
Сейчас нет на сайте
Quote
кстати, третий аргумент - lava or wall. Разве так можно?


surprised СтОит "лаве" и "стенке" родителя общего поставить и на него ссылаться.

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)
---------------------------------------------
шаманил-шаманил, да вот ничерта не вышло, то ли я не правильно квадраты рисую для проверки, то ли... бред вообщем, есть другие решения? happy
код кстати:

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... wacko


Правильного решения порой нет, но лучшее решение есть всегда.
AGDMFGДата: Суббота, 16 Июня 2012, 18:22 | Сообщение # 16
участник
Сейчас нет на сайте
Quote
3 объекта, 3х2+1=7, а должно быть 15...
wacko
Тоже ничего не понял)

Создай обьект 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, теперь все пошло happy только num в глобальную переменную засунул, ну да это не важно, спасибо biggrin

Правильного решения порой нет, но лучшее решение есть всегда.
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Несколько объектов
  • Страница 1 из 1
  • 1
Поиск:

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