Esempio n. 1
0
 protected virtual void OnMortarCollision(MortarEventArgs args)
 {
     if (MortarCollision != null)
     {
         MortarCollision(this, args);
     }
 }
 void ManualController_MortarCollision(object sender, MortarEventArgs args, float force, float time)
 {
     print("F: " + force + "; D: " + Utility.GetDistance(turret.position, args.CollisionPoint) + "; H: " + args.CollisionPoint + "; T: " + (Time.time - time));
     using (StreamWriter sw = File.AppendText("MortarLog.csv"))
     {
         sw.WriteLine(force + ";" + Utility.GetDistance(turret.position, args.CollisionPoint) + ";" + (Time.time - time));
     }
 }
Esempio n. 3
0
    void OnCollisionEnter(Collision collision)
    {
        MortarEventArgs args = new MortarEventArgs
        {
            CollisionPoint = this.transform.position
        };

        Instantiate(SmashEffect, transform.position, Quaternion.identity);
        Instantiate(Bloom, transform.position, Quaternion.identity);
        OnMortarCollision(args);
        Destroy(gameObject);
    }
Esempio n. 4
0
    void TrainingController_MortarCollision(object sender, MortarEventArgs args)
    {
        if (this != null && transform != null)
        {
            float x = args.CollisionPoint.x;
            float z = args.CollisionPoint.z;

            float gx = Target.transform.position.x;
            float gz = Target.transform.position.z;

            float distFromCenterSquared = (gx - x) * (gx - x) + (gz - z) * (gz - z);
            float dmgRadiusSquared      = DamageRadius * DamageRadius;
            float dmg = -1;
            if (distFromCenterSquared < dmgRadiusSquared)
            {
                dmg = 1 - distFromCenterSquared / dmgRadiusSquared;
            }

            if (dmg > 0)
            {
                // Hit the target!
                MortarHits++;
                MortarDamage += dmg;
            }

            gx = transform.position.x;
            gz = transform.position.z;

            distFromCenterSquared = (gx - x) * (gx - x) + (gz - z) * (gz - z);

            dmg = -1;

            if (distFromCenterSquared < dmgRadiusSquared)
            {
                dmg = 1 - distFromCenterSquared / dmgRadiusSquared;
            }

            if (dmg > 0)
            {
                // Hit yourself... noob
            }
        }
    }
    void OpponentController_MortarCollision(object sender, MortarEventArgs args)
    {
        if (this != null && transform != null && Target != null)
        {
            float x = args.CollisionPoint.x;
            float z = args.CollisionPoint.z;

            float gx = Target.transform.position.x;
            float gz = Target.transform.position.z;

            float distFromCenterSquared = (gx - x) * (gx - x) + (gz - z) * (gz - z);
            float dmgRadiusSquared      = 100;
            float dmg = -1;
            if (distFromCenterSquared < dmgRadiusSquared)
            {
                dmg = 1 - distFromCenterSquared / dmgRadiusSquared;
            }

            if (dmg > 0)
            {
                // Hit the target!

                if (OpponentHealth != null)
                {
                    float damage = 20 * dmg;
                    if (damage < 1)
                    {
                        damage = 1;
                    }

                    OpponentHealth.TakeDamage(damage);
                }
            }

            gx = transform.position.x;
            gz = transform.position.z;

            distFromCenterSquared = (gx - x) * (gx - x) + (gz - z) * (gz - z);

            dmg = -1;

            if (distFromCenterSquared < dmgRadiusSquared)
            {
                dmg = 1 - distFromCenterSquared / dmgRadiusSquared;
            }

            if (dmg > 0)
            {
                // Hit yourself... noob
                if (OwnHealth != null)
                {
                    float damage = 20 * dmg;
                    if (damage < 1)
                    {
                        damage = 1;
                    }
                    OwnHealth.TakeDamage(damage);
                }
            }
            // print("Instantiating bloom");
            GameObject mortar = ((MortarHit)sender).gameObject;
            Instantiate(Bloom, mortar.transform.position, Quaternion.identity);
        }
    }
Esempio n. 6
0
    void FightController_MortarCollision(object sender, MortarEventArgs args)
    {
        if (this != null && transform != null && Target != null)
        {
            bool  sendEvent   = false;
            float damageDone  = 0;
            float damageTaken = 0;

            float x = args.CollisionPoint.x;
            float z = args.CollisionPoint.z;

            float gx = Target.transform.position.x;
            float gz = Target.transform.position.z;

            float distFromCenterSquared = (gx - x) * (gx - x) + (gz - z) * (gz - z);
            float dmgRadiusSquared      = DamageRadius * DamageRadius;
            float dmg = -1;
            if (distFromCenterSquared < dmgRadiusSquared)
            {
                dmg = 1 - distFromCenterSquared / dmgRadiusSquared;
            }

            if (dmg > 0)
            {
                // Hit the target!
                OnMortarHitEvent();
                if (OpponentHealth != null)
                {
                    float damage = 0;


                    if (!DummyAttack)
                    {
                        damage = MortarWeapon.MaximumDamage * dmg;
                    }
                    OpponentHealth.TakeDamage(damage);
                    damageDone = damage;
                    sendEvent  = true;
                }
            }

            gx = transform.position.x;
            gz = transform.position.z;

            distFromCenterSquared = (gx - x) * (gx - x) + (gz - z) * (gz - z);

            dmg = -1;

            if (distFromCenterSquared < dmgRadiusSquared)
            {
                dmg = 1 - distFromCenterSquared / dmgRadiusSquared;
            }

            if (dmg > 0)
            {
                // Hit yourself... noob
                if (HealthScript != null)
                {
                    float damage = MortarWeapon.MaximumDamage * dmg;
                    if (damage < 1)
                    {
                        damage = 1;
                    }
                    if (!DummyAttack)
                    {
                        HealthScript.TakeDamage(damage);
                    }
                    damageTaken = damage;
                    sendEvent   = true;
                }
            }
            if (sendEvent)
            {
                OnHitMortar(damageDone, damageTaken);
            }
            //GameObject mortar = ((MortarHit)sender).gameObject;
            //Instantiate(Bloom, mortar.transform.position, Quaternion.identity);
        }
    }