"зашагивание" через блок
|
|
Dat_Spy | Дата: Четверг, 31 Июля 2014, 19:30 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| и даааа опять клон террарии но помощи все же попрошу, я пытался сделать зашагивание через блок как в террарии (те кто играл в нее поймут), сделал проверку на наличие блока сверху а как сделать само зашагивание не додумал, вот и прошу помощи
надо подробнее?
|
|
| |
Notin | Дата: Четверг, 31 Июля 2014, 20:12 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Попробуй тут. "Ходьба по неровной поверхности в платформере"
Twitter ВКонтакте
Сообщение отредактировал Notin - Четверг, 31 Июля 2014, 20:13 |
|
| |
JAMPER | Дата: Четверг, 31 Июля 2014, 20:17 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| place_free(x,y) с помощью этой функции проверить свободное ли пространство над блоком и делать шаг через добавление к y размера блока, если нет, то герой стоит на месте.
Zombie Day --- "Без шансов" Space Conflict --- игра на Gamiron #8 Kill your brain --- игра на Gamiron #10 Eat them all!--- игра на Gamiron #12
|
|
| |
Dat_Spy | Дата: Четверг, 31 Июля 2014, 20:38 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| JAMPER, даааа возможно я нубас полный но вот код, помоги закончить
Код if place_free(y-16,x-16) {..??..}
Сообщение отредактировал Dat_Spy - Четверг, 31 Июля 2014, 20:38 |
|
| |
JAMPER | Дата: Пятница, 01 Августа 2014, 00:23 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| Код для хождения вправо где-то так выглядит: Код if keybord_check ( vk_right) = true { if !place_free (x+1,y) { if place_free(x+1,y-1) {x+=1 y-=16} } else {x+=1} }
Для ходьбы влево возле х поменяй знаки на - и само собой vk_left. Писал с телефона, поэтому в работоспособности не очень уверен. Ну как шаблон можно использовать.
Zombie Day --- "Без шансов" Space Conflict --- игра на Gamiron #8 Kill your brain --- игра на Gamiron #10 Eat them all!--- игра на Gamiron #12
Сообщение отредактировал JAMPER - Пятница, 01 Августа 2014, 00:28 |
|
| |
SpeRdKeaR | Дата: Пятница, 01 Августа 2014, 07:24 | Сообщение # 6 |
KillerReborn
Сейчас нет на сайте
| Dat_Spy, где-то мой старый двиг завалялся, там есть движение по неровной поверхности. Могу в ЛС кинуть, разберешься сам как-нибудь?
А звезды, будто мириады стрел, Ловя на мушку силуэты снов. Смеется и злорадствует любовь, И мы с тобой попали в их прицел...
|
|
| |
mlpmmo | Дата: Пятница, 01 Августа 2014, 09:12 | Сообщение # 7 |
YBRONY
Сейчас нет на сайте
| А что мне понравилась идея с комиксами ценители альфа бета версий поймут
Простая арифметика (Web игра)
Сообщение отредактировал mlpmmo - Пятница, 01 Августа 2014, 09:13 |
|
| |
XDominator | Дата: Пятница, 01 Августа 2014, 10:11 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| Муахаха, комикс норм)
По теме - все просто, как обычно. Никаких особых знания или ума не нужно. Определяем для нашего игрока определенную точку в направлении взгляда. Эта точка должна быть на краю спрайта, на 1 пиксель дальше его границы(спрайта), по y она может быть любой ниже высоты 1 блока. И определяем еще 2 точки. Одна должна быть на уровне взгляда(если мы считаем что игрок по высоте у нас в 2 блока), и одна - выше еще на блок. Таким образом мы должны иметь 3 точки для определения стены в 3 блока.
Далее, в нашей самой нижней точке каждый шаг делаем проверку на наличие блока( например с помощью instance_place(x, y, obj_block)). Если функция нашла объект в нижней точке - значит у нас впереди препятствие. Дальше проверяем, если у нас нету блоков во 2 и 3 точке, значит мы можем залезть на наш блок, если же нет значит мы должны просто запретить дальнейшее движение в данном направлении, если же мы забираемся, то просто поднимаем наш объект на высоту блока и принудительно сдвигаем нашего игрока на пару пикселей, чтобы движок уже мог определять что под игроком есть твердый блок. Вот и все.
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
Сообщение отредактировал XDominator - Пятница, 01 Августа 2014, 10:13 |
|
| |