Создание поддельной физики отказов в Unity - PullRequest
0 голосов
/ 08 апреля 2020

В течение прошлой недели или около того я пытался восстановить механику игры из DS под названием Dragon Quest Heroes: Rocket Slime. Я в значительной степени завершил создание контроллера персонажей в игре, и я начинаю создавать другие механики, такие как бросающий механизм c, где вы можете подбирать объекты и бросать их.

Вот gif, демонстрирующий, что в игре DS

я довольно озадачен тем, как это работает. Я не думаю, что смог бы повторить это, используя 2D физику твердого тела Unity (легко), потому что это игра сверху вниз и не имеет определенного наземного коллайдера, если это имеет смысл.

Я попробовал несколько вещей и закончил с довольно хорошим эффектом, используя lerping, который демонстрируется здесь .

Вот код для прыжка.

transform.position =
Vector3.Lerp(
    startPos,
    endPos,
    normalizedTime
);
sprite.position = 
Vector3.Lerp(
    Vector3.Lerp(new Vector3(sprite.position.x,startPos.y,0), new Vector3(sprite.position.x,centrePos.y,0), normalizedTime),
    Vector3.Lerp(new Vector3(sprite.position.x, centrePos.y,0), new Vector3(sprite.position.x, endPos.y,0), normalizedTime),
    normalizedTime
);

startPos - это позиция, в которой объект первым получил удар / выброс где объект будет в конце. (это рассчитывается путем получения скорости игрока, когда они его ударили, blastVelocity, и добавления ее к текущей позиции).

Теперь основная проблема здесь заключается в том, что объект не отскакивает в моем воссоздании и я понятия не имею, как бы я добавил подпрыгивая. Я не хочу использовать физику твердого тела по причинам, упомянутым выше.

Как бы я добавил подпрыгивание?

...