В течение прошлой недели или около того я пытался восстановить механику игры из 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, и добавления ее к текущей позиции).
Теперь основная проблема здесь заключается в том, что объект не отскакивает в моем воссоздании и я понятия не имею, как бы я добавил подпрыгивая. Я не хочу использовать физику твердого тела по причинам, упомянутым выше.
Как бы я добавил подпрыгивание?