protected override void FireRound(Vector3 _, Transform __)
        {
            var shot = Instantiate(ProjectilePrefab, Muzzle.transform.position, transform.rotation);

            shot.Launch(DamageMessage.Create(Stats.Damage, Stats.DamageTypes));
            Animator.SetTrigger("Fire");
            Muzzle.Play();
            FireSfx.Play();
        }
Beispiel #2
0
 public void Damage(DamageMessage damage)
 {
     if (damage.Types.Contains(DamageType.Fragmentation))
     {
         AttachedHealth.ReceiveDamage(DamageMessage.Create(damage, DamageMultiplier * FgramentationDamageMultiplier));
     }
     else
     {
         AttachedHealth.ReceiveDamage(damage);
     }
 }
Beispiel #3
0
        protected override void FireRound(Vector3 position, Transform _)
        {
            Cannon.transform.LookAt(AimAt(position));
            RaycastHit hit;

            if (Physics.Raycast(Cannon.transform.position, Cannon.transform.forward, out hit, Stats.Range, HitLayer))
            {
                var hitBox = hit.collider.GetComponent <HitBox>();
                if (hitBox)
                {
                    hitBox.Damage(DamageMessage.Create(Stats.Damage, Stats.DamageTypes));
                }

                var impactCollider = hit.collider.GetComponent <ColliderImpact>();
                if (impactCollider)
                {
                    impactCollider.ImpactHit(hit);
                }
            }

            Cannon.Play();
        }
Beispiel #4
0
        protected override void FireRound(Vector3 _, Transform target)
        {
            var missile = Instantiate(Missile, FiringPositions.PickOne().position, transform.rotation);

            missile.Launch(target, DamageMessage.Create(Stats.Damage, Stats.DamageTypes));
        }