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)); } }
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); }
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); } }
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); } }