твердое тело движется с помощью addForce, но сам объект не - PullRequest
0 голосов
/ 21 февраля 2019

Я слежу за этим видео https://www.youtube.com/watch?v=THnivyG0Mvo и это моя функция стрельбы

void Shoot()
{
    muzzleFlash.Play();
    shootingSound.Play();
    RaycastHit hit;
    if( Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
    {
        //Debug.Log(hit.transform.name);

        Enemy1 target = hit.transform.GetComponent<Enemy1>();
        if (target != null)
        {
            target.TakeDamage(damage);
        }

        if(hit.rigidbody != null)
        {
            Debug.Log("******************");
            hit.rigidbody.AddForce( - hit.normal * impactForce);
        }


        GameObject impactGo = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
        Destroy(impactGo, 0.3f);
    }
}

Жесткое тело добавлено к цели:

enter image description here

Компонент ствола:

введите описание изображения здесь

Эта функция находится в моем скрипте Rifle.cs, который добавляется к объекту винтовки.Все отлично работаетНо когда я ударяю по объекту, у которого есть Rigidbody, он не двигается, но я вижу в сцене, что Rigidbody движется, когда я ударил его много раз.Твердое тело цели установлено на «Использовать гравитацию», а «Is Kinematic» не проверяется.Что я делаю неправильно ?

Ответы [ 4 ]

0 голосов
/ 22 февраля 2019

После того, как я сделал много поиска в Google.Это ответило на мой вопрос https://forum.unity.com/threads/mesh-renderer-does-not-move-with-parent-rigid-body.204700/. Итак, что мне нужно было сделать, чтобы отключить (снять галочку) статическое в правом верхнем углу инспектора для объекта.

введите описание изображения здесь

0 голосов
/ 21 февраля 2019

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

    if(hit.rigidbody != null)
    {
        Debug.Log("******************");
        hit.rigidbody.AddForce((-hit.normal * impactForce), ForceMode.Impulse);
    }

См. Эту страницу для получения дополнительной информации. Режимы силы в Unity

0 голосов
/ 22 февраля 2019

Попробуйте полностью удалить Animator, у анимаций есть возможность записать значения по умолчанию, если движение было отредактировано на анимации, оно ведет себя неправильно, потому что хочет установить значение по умолчанию.

0 голосов
/ 21 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...