Ударить физику персонажа? - PullRequest
0 голосов
/ 22 октября 2018

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

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

Vector3 direction = (this.transform.position - collider.transform.position) / (this.transform.position - collider.transform.position).magnitude;
        this.transform.GetComponent<Rigidbody>().AddForce(direction, ForceMode.Impulse);

Проблема заключается в том, что персонаж просто медленно плывет против объекта удара (у Rigidbody проверена гравитация).на персонажа), и в зависимости от того, где персонаж стоит, анимация выглядит не скоординированной с ударом.

Я хотел посмотреть, есть ли оптимизированный способ сделать это - как я могу создать реалистичный удар / движениеобратная ситуация в Unity?

1 Ответ

0 голосов
/ 22 октября 2018

Нет простого способа вывести это поведение из коробки с Unity.Вам нужно будет написать сценарий смешивания физики рэгдолла с анимацией.

Один из подходов, который вы, возможно, захотите попробовать, - это система, которая "прикрепляет" тряпичную куклу к костям анимации, и, если происходит столкновение, тряпичная кукла временно (частично или полностью) открепляет себя от костей.Когда / если на это влияет физика, вы, вероятно, захотите анимировать из ключевого кадра, динамически создаваемого на основе положения тряпичной куклы, к целевому ключевому кадру.

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

...