Пятница, 19 Апреля 2024, 13:01

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Движение врага.
Движение врага.
ИнтернетДата: Пятница, 26 Июня 2015, 21:36 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Проблема в том, что враг должен двигатся от стены к стене, а при простой проверке place_free(x-1,y) он доходит до одной из стен и останавливается.
if place_free(x-1,y)
{ x-=3}

if not place_free(x-1,y)
{ x+=3}


Сообщение отредактировал Интернет - Пятница, 26 Июня 2015, 21:36
FumleadДата: Пятница, 26 Июня 2015, 22:04 | Сообщение # 2
участник
Сейчас нет на сайте
Описываю тебе же твой алгоритм:
1 Объект движется влево, пока слева есть свободное пространство
2 Как только рядом стена, он смещается вправо на 3 пикселя (или что там у GM с координатами)
3 Хоп! Слева теперь опять ничего нет, можно туда идти!
Пункты 2 и 3 повторяются до бесконечности


Параноик с гениальным планом по захвату мира.
ИнтернетДата: Пятница, 26 Июня 2015, 22:09 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Цитата Fumlead ()
Описываю тебе же твой алгоритм:
1 Объект движется влево, пока слева есть свободное пространство
2 Как только рядом стена, он смещается вправо на 3 пикселя (или что там у GM с координатами)
3 Хоп! Слева теперь опять ничего нет, можно туда идти!
Пункты 2 и 3 повторяются до бесконечности

а как его тогда остановить типо так
if place_free(x-1,y)
{ x-=3}

if not place_free(x-100,y)and place_free(x+1,y)
{ x+=3}


Сообщение отредактировал Интернет - Пятница, 26 Июня 2015, 22:10
FlyOfFlyДата: Пятница, 26 Июня 2015, 22:12 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Цитата Интернет ()
if place_free(x-1,y)
{ x-=3}

if not place_free(x-100,y)and place_free(x+1,y)
{ x+=3}

Код
if place_free(x-1,y)
{ x-=3}

else if not place_free(x-1,y)
{ x+=3}
ИнтернетДата: Пятница, 26 Июня 2015, 22:15 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Цитата FlyOfFly ()
if place_free(x-1,y)
{ x-=3}

else if not place_free(x-1,y)
{ x+=3}

не работает при столкновении со стеной объект останавливается и не движется в противоположную сторону.
FumleadДата: Пятница, 26 Июня 2015, 22:16 | Сообщение # 6
участник
Сейчас нет на сайте
Интернет, я на GM уже года 3 ничего не писал, но попробую
Код

left = true;

Это куда-нибудь в Create. Остальное в Step:
Код

if (left = true) {x-=3}
else {x+=3}
if not place_free(x+1, y) {left = true}
if not place_free(x-1, y) {left = false}

Да простят меня боги за такой код


Параноик с гениальным планом по захвату мира.
ИнтернетДата: Пятница, 26 Июня 2015, 22:21 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Цитата Fumlead ()
Интернет, я на GM уже года 3 ничего не писал, но попробую
Код

left = true;

Это куда-нибудь в Create. Остальное в Step:
Код

if (left = true) {x-=3}
else {x+=3}
if not place_free(x+1, y) {left = true}
if not place_free(x-1, y) {left = false}

Да простят меня боги за такой код

Да нет все работает мне главное ещё хотелось бы узнать про true и false в справке не нашёл =( как они работают типо начало и конец
FadeBakerДата: Пятница, 26 Июня 2015, 22:26 | Сообщение # 8
JavaSE Game Developer
Сейчас нет на сайте
Create:
Код
dir = 1; //или -1 для изначального движения влево

Step:
Код
if (place_free(x + dir * 3, y))   
     x += dir * 3;
else   
     dir *= -1;


Уроки по 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.
DarkEliphantДата: Пятница, 26 Июня 2015, 22:26 | Сообщение # 9
был не раз
Сейчас нет на сайте
попробуй сделать так:
Код

в событии создания врага:
sp=10 //скорость врага

в событии столкновения врага со стеной:
sp=sp*(-1) // то есть поменять знак у скорости, чтобы враг шел в обратном направлении( тут же кстати можно прописать "image_xscale= -1" для разворота спрайта)

в степе:
x+=sp
FumleadДата: Пятница, 26 Июня 2015, 22:26 | Сообщение # 10
участник
Сейчас нет на сайте
FadeBaker, не сработает. Объяснить почему?

Параноик с гениальным планом по захвату мира.
FadeBakerДата: Пятница, 26 Июня 2015, 22:33 | Сообщение # 11
JavaSE Game Developer
Сейчас нет на сайте
Fumlead, потому что я ошибочно написал dir = 0. Исправил давно.

Уроки по 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.
ИнтернетДата: Пятница, 26 Июня 2015, 22:34 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
эм мне бы хотелось узнать про true и false
FlyOfFlyДата: Пятница, 26 Июня 2015, 22:40 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Цитата Интернет ()
эм мне бы хотелось узнать про true и false

если у тебя вопрос про true и false, то иди учи программирование, а не переписывай код из примеров
https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%82%D0%B8%D0%BF вот про True и false
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Движение врага.
  • Страница 1 из 1
  • 1
Поиск:

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