Движение врага.
|
|
Интернет | Дата: Пятница, 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 ничего не писал, но попробую Это куда-нибудь в 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
|
|
| |