Esempio n. 1
0
        /// <summary>
        /// Shooting using RayCast.
        /// </summary>
        protected virtual void RayBulletShootingProcess()
        {
            RaycastHit raycastHit;

            for (int i = 0; i < rayBullet.GetNumberBullet(); i++)
            {
                if (rayBullet.GetNumberBullet() > 1)
                {
                    firePoint.localRotation = SpreadProperties.GetSpreadRotation(-rayBullet.GetVariance(), rayBullet.GetVariance());
                }
                if (Physics.Raycast(firePoint.position, firePoint.forward, out raycastHit, fireRange))
                {
                    Debug.DrawLine(firePoint.position, firePoint.forward, Color.red);
                    Transform hitTransform = raycastHit.transform;
                    SendDamage(hitTransform, rayBullet.GetDamage());
                    if (rayBullet.GetDecalProperties() != null)
                    {
                        DecalProperty decalProperty    = DecalHelper.GetDecalPropertyBySurface(rayBullet.GetDecalProperties(), raycastHit);
                        GameObject    decal            = decalProperty.GetRandomDecal();
                        AudioClip     decalSoundEffect = decalProperty.GetRandomSound();
                        if (decal != null)
                        {
                            PoolManager.Instantiate(decal, raycastHit.point, Quaternion.LookRotation(raycastHit.normal));
                        }
                        if (decalSoundEffect != null)
                        {
                            audioSource.PlayOneShot(decalSoundEffect);
                        }
                    }
                    AddImpulse(transform, raycastHit.point);
                }
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Shooting using physics bullet.
 /// </summary>
 protected virtual void PhysicsBulletShootingProcess()
 {
     for (int i = 0; i < physicsBullet.GetNumberBullet(); i++)
     {
         if (physicsBullet.GetNumberBullet() > 1)
         {
             firePoint.localRotation = SpreadProperties.GetSpreadRotation(-physicsBullet.GetVariance(), physicsBullet.GetVariance());
         }
         GameObject physicsBulletClone = PoolManager.Instantiate(physicsBullet.gameObject, firePoint.position, firePoint.rotation);
         Rigidbody  rigidbody          = physicsBulletClone.GetComponent <Rigidbody>();
         if (rigidbody != null)
         {
             rigidbody.AddForce(firePoint.forward * fireImpulse, ForceMode.Impulse);
         }
     }
 }
Esempio n. 3
0
 public void SetSpreadProperties(SpreadProperties value)
 {
     spreadProperties = value;
 }