Я надеюсь, что мы все сыграли Zelda: A Link to the Past, пожалуйста, поправьте меня, если я ошибаюсь, но я хочу подражать такому 2D-движению персонажа сверху вниз с оттенком коррекции. Это было сделано в других играх, но я чувствую, что эта ссылка будет легче всего относиться. Более конкретно, вид движения и коррекции, о которых я говорю:
- Плавающее движение, не ограниченное движением, основанным на тайлах, например, Покемон и другие игры, в которых одним касанием панели движения вы перемещаетесь на одну клетку в этом кардинальном направлении. Это плавающее движение должно быть в состоянии достичь диагонального движения.
- Если вы идете на запад и подходите к стене, которая имеет диагональную форму в направлении северо-восток / юго-запад, вы попадаете в движение по юго-западу, даже если продолжаете удерживать левую (запад) на контроллере. Это должно работать для обеих диагоналей, корректирующих в обоих направлениях.
- Если вы находитесь в нескольких пикселях от того, чтобы идти прямо в дверь или коридор, вас корректируют в том, чтобы идти по коридору или по коридору, то есть столкновение с углом заставляет вас толкаться в коридор / дверь.
Я охотился за эффективными способами добиться этого и мне не повезло. Чтобы было ясно, я говорю о движении человеческого персонажа, а не о движении NPC. Доступны ли их ресурсы для такого рода движений? Уравнения или алгоритмы, объясненные в вики или что-то?
Я использую XNA Framework, есть ли что-нибудь, чтобы помочь с этим?
В качестве возможного ответа для второго пункта можно спроецировать вектор движения игрока вдоль вектора стены, используя скалярное произведение (ab * normalized (b)). Затем вы получаете вектор, который говорит вам, как далеко игрок должен двигаться в направлении стены, и если вы перемещаете игрока по этому вектору, вы получаете «слайд» вдоль стены. У меня хорошо получалось в предыдущем игровом проекте.
источник
Отличный ответ для Джоша, но я добавлю несколько предложений: - Для получения дополнительной информации о скольжении по стенам, проверьте мой вопрос - из этого ответа мне удалось заставить его работать очень хорошо. - Если я не ошибаюсь, при ходьбе по экрану Link будет легко выровняться по ближайшему целому горизонтальному квадрату сетки. Таким образом, когда вы доберетесь до дверей, вы, скорее всего, будете правильно выстроены в линию (может быть, это неправильно). - Чтобы было легче пройти через двери, убедитесь, что коробка столкновения вашего персонажа намного меньше ширины двери.
источник
Для исправления входных дверей, вы можете сделать объект столкновения для двери немного больше, чем изображение двери. Это приведет к тому же эффекту, предложенному Джошем, но без необходимости расчета близости к прямоугольнику столкновения стены.
источник