Суббота, 20 Апреля 2024, 12:57

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » AI и комната.
AI и комната.
zzzzzaДата: Понедельник, 30 Апреля 2012, 01:24 | Сообщение # 1
участник
Сейчас нет на сайте
AI хорошее сделал, осталось только сделать так, чтобы моб не мог выйти за границы комнаты. Вот это я как раз не знаю как сделать.
Помогите пожалуйста)
elis1112Дата: Понедельник, 30 Апреля 2012, 01:38 | Сообщение # 2
Igni et ferro
Сейчас нет на сайте
в чем проблема?
other-outside room
-
напиши подробно что делает бот и что он должен сделать выйдя за пределы
zzzzzaДата: Понедельник, 30 Апреля 2012, 01:44 | Сообщение # 3
участник
Сейчас нет на сайте
Code
switch round(direction/90)
      {
      case 0: sprite_index=spr_WolfRight;
              break;
      case 1: sprite_index=spr_WolfUp;
              break;
      case 2: sprite_index=spr_WolfLeft;
              break;
      case 3: sprite_index=spr_WolfDown;
              break;
      }

Все не буду скидывать, потому что там много всего, это самое главное.
Нужно, чтобы он не мог выйти за пределы комнаты(если объект находится около края комнаты, то повернуть его на 90 градусов), а лучше, чтобы ходил в определенной местности. Интересно будет посмотреть как сделать и то, и другое.

Кстати, чуть не забыл, direction задается в creat моба и равен он 360(это так, на всякий случай, вдруг пригодится).


Сообщение отредактировал zzzzza - Понедельник, 30 Апреля 2012, 01:45
elis1112Дата: Понедельник, 30 Апреля 2012, 02:09 | Сообщение # 4
Igni et ferro
Сейчас нет на сайте
zzzzza, сейчас подумаю, хотя сейчас ночь и спать собираюсь по этому скорее всего завтра напишу,
но если осенит то может и сейчас
AGENTX001Дата: Понедельник, 30 Апреля 2012, 10:22 | Сообщение # 5
почётный гцупер
Сейчас нет на сайте
zzzzza, както так:
Code

if (x<=0+sprite_xoffset) or (x>=room_width-sprite_xoffset) or (y<=0+sprite_yoffset) or (y>=room_height-sprite_yoffset)
     then direction := direction + 180;


Сообщение отредактировал AGENTX001 - Понедельник, 30 Апреля 2012, 10:23
AGENTX001Дата: Понедельник, 30 Апреля 2012, 10:24 | Сообщение # 6
почётный гцупер
Сейчас нет на сайте
Ссори за паскальный синтаксис, привычка:) Но гамак поймёт:)
zzzzzaДата: Понедельник, 30 Апреля 2012, 11:15 | Сообщение # 7
участник
Сейчас нет на сайте
AGENTX001, не работает, все равно заходит(
FadeBakerДата: Понедельник, 30 Апреля 2012, 12:37 | Сообщение # 8
JavaSE Game Developer
Сейчас нет на сайте
В Step:
Code
x = median(x, 0, room_width);
y = median(y, 0, room_height);


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
AGENTX001Дата: Понедельник, 30 Апреля 2012, 15:47 | Сообщение # 9
почётный гцупер
Сейчас нет на сайте
zzzzza, кинь сорц в ЛС.
AGENTX001Дата: Понедельник, 30 Апреля 2012, 15:50 | Сообщение # 10
почётный гцупер
Сейчас нет на сайте
Так должно работать.
Code

if (x<=0+sprite_xoffset) or (x>=room_width-sprite_xoffset) or (y<=0+sprite_yoffset) or (y>=room_height-sprite_yoffset) {  
       direction := direction + 180;  
       x = xprevious;
       y = yprevious;
}
zzzzzaДата: Вторник, 01 Мая 2012, 12:34 | Сообщение # 11
участник
Сейчас нет на сайте
Fade, спасибо, работает, но вариант AGENTX001'а лучше, потому что он сразу поворачивает на 180 градусов, а если брать твой пример, то объект может несколько секунд просто идти в стенку, получается не очень, но все равно спасибо)
AGENTX001, спасибо, а можешь еще объяснить, что такое sprite_x(y)offset ?
А как сделать, чтобы объект ходил только в определенной местности? Сразу говорю, что paths'ами ни разу не пользовался и не знаю как они работают.
AGENTX001Дата: Вторник, 01 Мая 2012, 18:30 | Сообщение # 12
почётный гцупер
Сейчас нет на сайте
Quote (zzzzza)
а можешь еще объяснить, что такое sprite_x(y)offset

Это смещение спрайта. То, что ты настраиваешь при загрузке спрайта (крестик на картинке).
Quote (zzzzza)
А как сделать, чтобы объект ходил только в определенной местности?

Ну, как самый простой вариант, сделай невилимый объект (сними галочку с Visible) с чёрным спрайтом, и у бота в коллизии с этим объектом пиши
Code

        direction := direction + 180;   
        x = xprevious;  
        y = yprevious;  

И этим объектом "отгороди" местность в которой должен ползать бот:)
ps zzzzza, можешь плюсик поставить:)
zzzzzaДата: Вторник, 01 Мая 2012, 21:02 | Сообщение # 13
участник
Сейчас нет на сайте
AGENTX001, спасибо)
плюсанул)
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » AI и комната.
  • Страница 1 из 1
  • 1
Поиск:

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