Игрок движется вверх, он прыгает или лазает?

11

В 2D-платформерной игре на основе физики, в которой есть лестницы, как вы определяете, вызван ли игрок движением вверх прыжком или он поднимается по лестнице, так что вы знаете, какую анимацию играть?

И вообще, очевидно, что вектор направления не достаточен для определения анимации для воспроизведения: как вы также определяете причину движения (чтобы вы знали, какой правильный спрайт использовать)?

Пол Манта
источник
1
Если игрок на лестнице, он действительно в воздухе?
Дерек

Ответы:

15

У меня регулярно возникают проблемы с личной логикой, которые вы, похоже, здесь выражаете. Дело в том, что иногда вы смотрите на логику и программирование в совершенно неверном направлении. В этом случае вы, похоже, не понимаете, что с самого начала вы знаете, что происходит, из-за логического кода. Вы должны уже знать, программно говоря, находится ли он на лестнице или нет.

Подумайте об этом (как я уже сказал, я часто эта проблема). Игры логика должна знать, что ты на лестнице, предполагая, что вы быть умным программистом. Для лучшего объяснения, у меня есть тип архива файла, и впустую около часа дня, пытаясь выяснить, как получить размер данных, и я ни разу не остановился, чтобы думать, что, когда я загружаю в файле, я теперь знать его размер: P.

Причина, почему это относится так исключительно, является то, что вы смотрите на это как «Теперь, когда я нахожусь в воздухе, как я полагаю, если я нахожусь на лестнице или прыжки?» ... Когда вы должны действительно думаю, что «я собираюсь получить в воздухе, а какой метод FIRST, так что я могу использовать его для анимации использовать.»

Джошуа Хеджес
источник
Простые, например: OnJump()измените свое jumpingлогическое значение на истинное, а затем, если вы находитесь в воздухе и jumpingложно, то вы либо падаете, либо на лестнице и т. Д.
Джошуа Хеджес
6

Физическая система не знает и не заботится, почему игрок движется в определенном направлении. Это ваша игра, которая вызвала систему физики, чтобы переместить игрок, что путь, и, следовательно, несет ответственность за свою игру, чтобы следить за этим. Лицо, игрок должен иметь какое-то состояние на нем, что покажет, если это прыжки, лазание, бег и т.д. Вы не должны пытаться понять это на основании того, что случилось с системой физики.

Николь Болас
источник
2

Кажется, что любое событие, которое запускается при столкновении, которое устанавливает вертикальную скорость игроков, также может быть использовано для установки флага, указывающего, какую анимацию использовать.

Если вы используете стороннюю библиотеку, которая слишком ограничена информацией, которую она предоставляет вам, можно будет окружить лестницу прямоугольником, и если игрок движется вверх и содержится в этом прямоугольнике, тогда выполните анимацию восхождения.

ClassicThunder
источник
Это на самом деле поднимает вопрос, о котором я собирался рассказать позже при разработке собственных игр, и о том, как изменить скорость анимации на основе физики. У меня есть символы , которые я хочу , чтобы молотить руками процедурно, быстрее на основе того, насколько быстро они падают. И я никогда не думал , что хороший способ сделать это в глубине (обдумывал время), но вы скорость идея гораздо лучше. +1 для общего полезного ответа, и не специфичен только его дело.
Джошуа Hedges
1

При установке скорости перехода также установить состояние символов в STATE_JUMPING. Делая это, вы всегда знаете, в каком состоянии игрок находится в и может действовать соответствующим образом, проверив состояние игроков.

crisi
источник