Четверг, 18 Апреля 2024, 22:14

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Выход за границы комнаты. Как исправить?
Выход за границы комнаты. Как исправить?
Just1uckyДата: Вторник, 17 Июня 2014, 21:58 | Сообщение # 1
частый гость
Сейчас нет на сайте
Для того, чтобы объект не выходил за границы комнаты, я используют невидимые стены. Так же я это делаю для того, чтобы объект не выходил за середину комнаты. Вопрос, можно ли сделать так, чтобы когда объект доходит до середины комнаты, то его скорость равняется нулю? Думаю, что задавать значения надо по координатам. попытался написать код:
Код
if place_meeting(x,y,obj)
{
speed=0
}


Но он не выполняется. Объект скорость не меняет на ноль.

P.S. speed задан в create.
aFriendДата: Вторник, 17 Июня 2014, 22:50 | Сообщение # 2
участник
Сейчас нет на сайте
Цитата Just1ucky ()
чтобы объект не выходил за границы комнаты


я вот такой использую
Код
if(y < 0 + sprite_get_yoffset(sprite_index)){y = 0 + sprite_get_yoffset(sprite_index)}
if(x < 0 + sprite_get_xoffset(sprite_index)){x = 0 + sprite_get_xoffset(sprite_index)}

if(y > room_height - sprite_get_height(sprite_index) + sprite_get_yoffset(sprite_index)){y = room_height  - sprite_get_height(sprite_index) + sprite_get_yoffset(sprite_index)}
if(x > room_width - sprite_get_width(sprite_index) + sprite_get_xoffset(sprite_index)){x = room_width  - sprite_get_width(sprite_index) + sprite_get_xoffset(sprite_index)}
XDominatorДата: Вторник, 17 Июня 2014, 23:20 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Ну ты и намалевал простыню biggrin

Вот ограничения по координате x, скажем, на левую часть комнаты.

в n подставляешь любое значение(скажем, у нас это room_width/2 - середина)

Код

if x+dx > n
{
  x = n;
}
else
{
  x += dx;
}


Под dx тут подразумевается переменная, которая хранит твою скорость. Если же ты используешь speed\direction систему движения, то тут все усложняется. Нельзя просто писать speed = 0 для какой то координаты, это вызовет прилипание. Тут уже нужно определять координаты, и проверять направление потенциального движения объекта. Используем ту же ситуацию что и выше
Код

if x + dx > 0
{
  if direction <90 or direction > 270
  {
    speed = 0
  }
  else
  {
   speed = dx
  }
}
else
{
  speed = dx
}


Код aFriend вроде на первый взгляд работоспособен, но он вдобавок учитывает размер спрайта объекта, а это не помогает читаемости wink


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
aFriendДата: Вторник, 17 Июня 2014, 23:34 | Сообщение # 4
участник
Сейчас нет на сайте
Цитата XDominator ()
код aFriend вроде на первый взгляд работоспособен

Уверяю, он работоспособен
Цитата XDominator ()
но он вдобавок учитывает размер спрайта объекта

точнее, смещение спрайта
Цитата XDominator ()
а это не помогает читаемости

упор в первую очередь ставил на качество, а не читаемость
К тому же, в твоем случае, если мы центр спрайта поставим по x, например 12, а по y 23, то ты заметишь, что твой обьект будет либо не доходить до заданных координат, либо проходить чуть больше необходимого


Сообщение отредактировал aFriend - Вторник, 17 Июня 2014, 23:34
XDominatorДата: Среда, 18 Июня 2014, 08:13 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Смысл помощи в том, чтобы объяснить принцип действия. А если поймет принцип, то дополнительные условия он и сам нарастит smile

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
Just1uckyДата: Среда, 18 Июня 2014, 12:18 | Сообщение # 6
частый гость
Сейчас нет на сайте
Цитата aFriend ()
я вот такой использую
Код
if(y < 0 + sprite_get_yoffset(sprite_index)){y = 0 + sprite_get_yoffset(sprite_index)}
if(x < 0 + sprite_get_xoffset(sprite_index)){x = 0 + sprite_get_xoffset(sprite_index)}

if(y > room_height - sprite_get_height(sprite_index) + sprite_get_yoffset(sprite_index)){y = room_height  - sprite_get_height(sprite_index) + sprite_get_yoffset(sprite_index)}
if(x > room_width - sprite_get_width(sprite_index) + sprite_get_xoffset(sprite_index)){x = room_width  - sprite_get_width(sprite_index) + sprite_get_xoffset(sprite_index)}


Вот этот код оказался более универсальным и на много легче и лучше. Получилось разобраться в нем и подстроить под себя! Спасибо:)
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Выход за границы комнаты. Как исправить?
  • Страница 1 из 1
  • 1
Поиск:

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