Beispiel #1
0
 void OnEnable()
 {
     HP = 10;
     ME = GetComponent<ASMissileEffect>();
     targetDistanceTimer = 0;
 }
Beispiel #2
0
        private void OnCollisionEnter2D(Collision2D col) //NEED TO CREATE PARTICLE EFFECTS AND SOUND EFFECTS FOR HIT
        {
  
            if (col.gameObject.layer == LayerMask.NameToLayer("Player"))//ADD BACK IN FRIENDLY COLLISIONS LATER
            {
                controller.calculateCollisionDamage(col);
            }
            if (col.gameObject.layer == LayerMask.NameToLayer("Enemies") && owner == Controller.Owner.Player)
            {
                controller.calculateCollisionDamage(col);
            }
            if (col.gameObject.CompareTag("Projectile"))
            {
                lastHit = Time.time;
                Projectile p = col.gameObject.GetComponent<Projectile>();
                Projectile.ProjectileType type = p.getType();
                if (controller.shieldRef.Shields > 0)
                {
                    controller.shieldRef.takeDamage(p.DamageShield);
                    col.gameObject.layer = LayerMask.NameToLayer("Default");
                    TrashMan.despawn(col.gameObject);
                    return;
                }
                float proc = Random.Range(0f,1f);
                if (proc <= p.procChance)//if proc happened then do proc effect
                {
                    switch (type)
                    {
                        case Projectile.ProjectileType.ion:
                                controller.disableWeapons();
                            break;
                        case Projectile.ProjectileType.rail:
                            takeDamage(p.DamageHull * 2, col);
                            return;                           
                    }
                }
                takeDamage(p.DamageHull, col);
            }
            if (col.gameObject.CompareTag("Missile"))
            {
                lastHit = Time.time;
                nuke= col.gameObject.GetComponent<ASMissileEffect>();
                if (nuke != null)
                    nuke.resetMissile();
                Missile m = col.gameObject.GetComponent<Missile>();
                Missile.MissileType mType = m.getMissileType();
                m.trail.ps.Stop();
                m.trail.m = null;
                switch (mType)
                {
                    case Missile.MissileType.Ballistic:
                        //Debug.Log("hit by ballistic missile");
                        takeDamage(m.Damage, col);
                        break;
                    case Missile.MissileType.AOE://Create effect for DOT
                        Collider2D[] inBlastRadius = Physics2D.OverlapCircleAll(transform.position, m.Modifier, 1 << LayerMask.NameToLayer("Enemies"));
                        StartCoroutine(blastNearby(inBlastRadius));
                        takeDamage(m.Damage, col);
                        break;
                    case Missile.MissileType.DOT://Create effect for DOT
                        setDOT(m.Damage, m.Modifier);
                        col.gameObject.layer = LayerMask.NameToLayer("Default");
                        TrashMan.despawn(col.gameObject);
                        break;

                }
                ParticleManager.pm.spawnMissileExplosion(transform.position, m.getMissileType());
            }            
        }