Итак, после нескольких часов поиска в интернете, я так и не нашел приятного ответа о том, как обращаться с движущимися платформами в игре на 2d-платформе. Поэтому я решил создать простой прототип, в котором вы будете взаимодействовать с двумя разными платформами, одна из которых будет двигаться вертикально, а другая - горизонтально. Я хотел бы помочь разобраться и посмотреть, что не работает, и как их исправить. Ниже я отправил файл .fla + .as, сопровождаемый ссылкой на воспроизводимый файл .swf.
Цель состоит в том, чтобы заставить Героя взаимодействовать с платформами, как если бы они были твердыми объектами, на которых он мог бы стоять, толкаться рядом, прыгать на / под и т. Д. И т. Д.
Проблемы с моим прототипом следующие:
Когда вы стоите на горизонтально движущейся платформе, не двигаясь (не касаясь каких-либо клавиш), герой движется вместе с платформой, но с небольшой задержкой, заставляя героя немного отодвинуться назад.
Когда вы стоите на горизонтально движущейся платформе и прыгаете, вы двигаетесь вместе с платформой в воздухе (некоторые игры предпочитают, чтобы она была такой, но она не кажется естественной и здесь не нужна). Что может быть вызвано тем, что Герой сохранил скорость на оси Х от платформы.
Когда вы подпрыгиваете на нижней стороне вертикально перемещающейся платформы, в то время как платформа движется вниз, вы погружаетесь в нее на короткую секунду. Герой проникает сквозь, как будто столкновения не было на мгновение.
Когда вы прыгаете на вертикально движущейся платформе, скорость по оси Y сохраняется, поэтому, когда вы уходите с платформы, вы падаете с более высокой скоростью. Со скоростью сохраняемой скорости + гравитация (это в основном потому, что я не могу придумать, как сбросить скорость по оси Y до 0, когда вы приземлитесь на платформу, без зависания игрока в воздухе).
Я начинающий программист, поэтому я уверен, что есть ЛУЧШИЕ способы сделать это, и я хотел бы услышать их все. Приветствуются любые идеи о том, как улучшить код или другие методы, с помощью которых вы можете реализовать перемещение платформ в игру на основе Tile. В конце концов, я пытаюсь найти надежный способ обработки движущихся платформ в 2d платформерах.
Воспроизводимый SWF: http://dl.dropbox.com/u/28271061/PlatformerhowtoFLA.html (перемещение с помощью клавиш со стрелками, переход с помощью клавиши X, запуск с помощью клавиши Z)
Исходный код AS-файла: http://dl.dropbox.com/u/28271061/Platformerhowto.as
SourcefileFLA: http://dl.dropbox.com/u/28271061/PlatformerhowtoFLA.fla
Если вы предпочитаете просто прочитать код через Pastie онлайн: http://pastie.org/2266764