예제 #1
0
 private void RayCastShooting(int bulletCount, int shootCost, float damage, Vector2 dispersion, GameObject decal, AudioClip shootClip)
 {
     for (int i = 0; i < bulletCount; i++)
     {
         Vector3    rayOrigin    = mainCam.ViewportToWorldPoint(new Vector2(0.5f, 0.5f));
         Vector3    rayDirection = GetDirection(dispersion);
         RaycastHit shootHit     = new RaycastHit();
         if (Physics.Raycast(rayOrigin, rayDirection, out shootHit, 100f, ~(1 << 8)))
         {
             HitboxComponent tempHitbox = shootHit.collider.GetComponent <HitboxComponent>();
             if (tempHitbox != null)
             {
                 tempHitbox.ApllyDamage(damage);
             }
             else
             {
                 Instantiate(decal, shootHit.point + shootHit.normal * 0.001f, Quaternion.FromToRotation(Vector3.forward, shootHit.normal));
             }
         }
     }
     ammoCounter.ChangeAmmoCount(Data.WeaponType, -shootCost);
 }