Четверг, 28 Ноября 2024, 16:49

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Прохождение через твёрдый объект.
ИнтернетДата: Суббота, 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

На всякий случай примерчик smile
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
почетный гость
Сейчас нет на сайте
Тогда это проще. Когда он сталкивается со стеной или другой неимоверной вертикальной штукой, то можно просто поменять направление его движения. Допустим: он движется вправо, сталкивается со стенкой, поворачивается в другую сторону.
Код
direction -= 90

Как-то так



Я здесь, чтобы распространять ЛАГИ!!!
ИнтернетДата: Суббота, 27 Июня 2015, 21:41 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
и ещё маленький вопрос как прописать столкновение с объектом в коде?
laggertДата: Суббота, 27 Июня 2015, 21:52 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Они менее быстро будут обрабатываться. Поэтому лучше через события все это делать smile


Я здесь, чтобы распространять ЛАГИ!!!


Сообщение отредактировал 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
  • Страница 1 из 1
  • 1
Поиск:

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