Прохождение через твёрдый объект.
|
|
Интернет | Дата: Суббота, 27 Июня 2015, 15:23 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Например враг сталкивается с одним твёрдым объектом (невидимым), а игрок должен проходить через этот объект как это сделать, при том что объект должен быть твёрдым? Ну или например проблема в гравитации ГГ код гравитации if keyboard_check(vk_left) { if place_free(x - speed_max, y) x -= speed_max; else move_contact_solid(180, speed_max); }
if keyboard_check(vk_right) { if place_free(x + speed_max, y) x += speed_max; else move_contact_solid(0, speed_max); }
if place_free(x, y + 1) { gravity = gravity_amount; } else { gravity = 0; if keyboard_check(vk_up) { vspeed = - jump_speed; } }
Сообщение отредактировал Интернет - Суббота, 27 Июня 2015, 15:33 |
|
| |
laggert | Дата: Суббота, 27 Июня 2015, 17:11 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Я полагаю, что есть три объекта. Игрок, враг и, допустим, стена.
Делаем все объекты твердыми. Для игрока ничего не пишем, но для врага, при столкновении со стеной нужно написать:Код x=xprevious y=yprevious speed=0 На всякий случай примерчик prim.gmk Жмякаем кнопку стрелки вправо и наслажаемся
Я здесь, чтобы распространять ЛАГИ!!!
Сообщение отредактировал laggert - Суббота, 27 Июня 2015, 17:20 |
|
| |
Интернет | Дата: Суббота, 27 Июня 2015, 21:13 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| Цитата laggert ( ) Я полагаю, что есть три объекта. Игрок, враг и, допустим, стена.
Делаем все объекты твердыми. Для игрока ничего не пишем, но для врага, при столкновении со стеной нужно написать: Код x=xprevious y=yprevious speed=0
На всякий случай примерчик smile prim.gmk Жмякаем кнопку стрелки вправо и наслажаемся да за это спасибо но поворот врага осуществляется за счёт place_free то есть до ближайшего твёрдого объекта может можно как нибудь по другому осуществить поворот?
Сообщение отредактировал Интернет - Суббота, 27 Июня 2015, 21:14 |
|
| |
laggert | Дата: Суббота, 27 Июня 2015, 21:19 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| TDS или платформер?
Я здесь, чтобы распространять ЛАГИ!!!
|
|
| |
Интернет | Дата: Суббота, 27 Июня 2015, 21:23 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Платформер, в том дело что враг двигается оталкиваясь от одной отметки к другой посредством кода if (place_free(x + dir * vr_speed, y,)) x += dir * vr_speed; else dir *= -1; } place_free это действие с твёрдыми объектами, а нету ли такого только со всеми объектами? если поставить те объекты от которых он оталкивается и сделать невидимыми но и твёрдыми то всё норм, кроме того что ГГ сталкивается с невидимыми преградами.
Сообщение отредактировал Интернет - Суббота, 27 Июня 2015, 21:29 |
|
| |
laggert | Дата: Суббота, 27 Июня 2015, 21:29 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| Тогда это проще. Когда он сталкивается со стеной или другой неимоверной вертикальной штукой, то можно просто поменять направление его движения. Допустим: он движется вправо, сталкивается со стенкой, поворачивается в другую сторону. Как-то так
Я здесь, чтобы распространять ЛАГИ!!!
|
|
| |
Интернет | Дата: Суббота, 27 Июня 2015, 21:41 | Сообщение # 7 |
постоянный участник
Сейчас нет на сайте
| и ещё маленький вопрос как прописать столкновение с объектом в коде?
|
|
| |
laggert | Дата: Суббота, 27 Июня 2015, 21:52 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| Они менее быстро будут обрабатываться. Поэтому лучше через события все это делать
Я здесь, чтобы распространять ЛАГИ!!!
Сообщение отредактировал laggert - Суббота, 27 Июня 2015, 21:52 |
|
| |
FadeBaker | Дата: Суббота, 27 Июня 2015, 21:55 | Сообщение # 9 |
JavaSE Game Developer
Сейчас нет на сайте
| Цитата Интернет ( ) и ещё маленький вопрос как прописать столкновение с объектом в коде? Код obj = instance_place(x, y, имяОбъекта); if (obj) { // делаешь с объектом, что нужно }
Уроки по 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.
|
|
| |
Интернет | Дата: Суббота, 27 Июня 2015, 21:56 | Сообщение # 10 |
постоянный участник
Сейчас нет на сайте
| в том дело что я например пишу direction=180 в Step а в столкновение со стеной if direction=180 then direction-=180///////////////// if direction-=180 then direction=180, но не работает при столкновении с чем связанно?
|
|
| |
Леонид | Дата: Суббота, 27 Июня 2015, 21:57 | Сообщение # 11 |
постоянный участник
Сейчас нет на сайте
| Цитата Интернет ( ) if direction-=180 Довольно странный if. У тебя именно так и написано?
|
|
| |
Интернет | Дата: Суббота, 27 Июня 2015, 22:02 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| Цитата Леонид ( ) Довольно странный if. У тебя именно так и написано? да, чего странного if direction=180 { direction-=180} ?? ну вроде если направление равно 180 то меняем на то, что в скобках на противоположное. Я уже думаю не парится вернуть прошлый код и сделать столкновения врага как и прежде с твёрдыми объектами и видимыми изобразить типо холмы или стены, а то с невидемыми твёрдыми объектами проблемно, то ГГ сталкивается с ними то враг сквозь проходит как ни пытаюсь сделать то это то то всплывает.
Сообщение отредактировал Интернет - Суббота, 27 Июня 2015, 22:07 |
|
| |