Сила удара пули работает не так, как предполагалось

#c# #visual-studio #unity3d

#c# #visual-studio #unity3d

Вопрос:

Когда я стреляю своей пулей по твердому телу, она просто движется в неправильном направлении (вправо, когда она должна двигаться вперед) Вот сценарий, который обрабатывает взаимодействия пули и цели. Я понятия не имею, почему это не работает, и буду признателен за помощь. спасибо

 using UnityEngine;

public class Gun : MonoBehaviour
{
    public float damage = 10f;
    public float range = 100f;
    public float fireRate = 15f;
    public float impactForce = 200f;
    public ParticleSystem muzzleFlash;

    

    private float nextTimeToFire = 0f;

    public Camera fpsCam;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetButton("Fire1") amp;amp; Time.time >= nextTimeToFire)
        {
            nextTimeToFire = Time.time   1f / fireRate;
            Shoot();
        }
    }

    void Shoot()
    {
        muzzleFlash.Play();

        RaycastHit hit;
        if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
        {
          Target target =  hit.transform.GetComponent<Target>();
          

            if (target != null)
            {
                target.TakeDamage(damage);
                hit.rigidbody.AddForceAtPosition(transform.forward * impactForce, hit.point); 
            }
        }
    }
}
  

Ответ №1:

Вы используете неправильное преобразование для получения forward вектора.

         if (target != null)
        {
            target.TakeDamage(damage);
            hit.rigidbody.AddForceAtPosition(transform.forward * impactForce, hit.point); 
        }
  

должно быть:

         if (target != null)
        {
            target.TakeDamage(damage);
            hit.rigidbody.AddForceAtPosition(fpsCam.transform.forward * impactForce, hit.point); 
        }