title: why does my raycast sometimes shoot in the wrong direction?
body: <p>I'm trying to shoot a raycast from a gameobject at the front of a gun that is being carried by an XR hand. The gun shoots fine most of the time, but sometimes, for some reasons beyond my fragile little minds comprehension, it shoots in the wrong direction. It shoots in random directions, but never more than 90 degrees of where it should be. This is my code. [I have attached a video of it happening.][1] Every time I think I find a pattern, it changes. All I can say is that I have reason to believe it's related to mesh colliders. Only very vague reason though. Edit: https://youtu.be/JxC4wq9nVRw here's an updated video, it shows the problem more clearly. I also changed the redundant if statements.</p>
  <pre><code>using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  using UnityEngine.UI;
  using TMPro;
  public class GunBasic : MonoBehaviour
  {   
      public Transform BulletShootPoint;
      public ParticleSystem muzzleFlash;
      public GameObject impactEffect;
      public AudioSource audioSource;
      public AudioClip audioClip;
      public float Ammo;
      public  TextMeshPro text;
  
      public void Fire()
      {if (Ammo &gt; 0)
          {
              muzzleFlash.Play();
              audioSource.PlayOneShot(audioClip);
  
  
              RaycastHit hit;
              if (Physics.Raycast(BulletShootPoint.transform.position, BulletShootPoint.transform.forward, out hit) &amp;&amp; Ammo &gt; 0)
              {
                  Debug.Log(hit.transform.name);
  
                  GameObject impactDestroy = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
  
                  Destroy(impactDestroy, 2f);
  
              }
              Ammo -= 1f;
  
  
          }
      }
      private void Update()
      {
          text.text = Ammo.ToString();
    
  
      }
      public void Reload()
      {
          Ammo = 10;
      }
      public void OnTriggerEnter(Collider other)
      {
         if(other.tag == &quot;ReloadTag&quot;)
          {
  
              Ammo = 10f;
          }
      }
  
  
  }
  </code></pre>