protected override void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { takeDamage.TakeDamage(Damage, gameObject); var controller = other.gameObject.GetComponent<CharacterController2D>(); if (controller != null) { HandleKnockback(controller); } DestroyProjectile(); }
void Start() { myRend = gameObject.GetComponent <SpriteRenderer>(); meteorDamage = transform.parent.GetComponent <ITakeDamage>(); playerDamage = GameObject.FindGameObjectWithTag("Player").transform.parent.GetComponent <ITakeDamage>(); }
void HandleDamageApplied(ITakeDamage DamageAppliedTo) { Poolable.Pool(); }
public void SetAttack(ITakeDamage enemy) { MentalState = MentalStates.Attacking; //SetUpWeapons(true, UnitWeapon.WeaponClasses.Ranged); TargetNonSpawnerEnemy = enemy; }
private void WanderingLogic() { _opponent = null; _movementActive = true; _idleTimer -= GameTime.DeltaTime; if (_idleTimer > 0) { return; //skip logic till timer runs out } if (TEXT_DEBUG_ENABLED) { TestDebugOutput = "Idle | "; //DEBUG } //stow any weapons SetUpWeapon(false); if (ClosestTeamSpawner == null || ClosestTeamSpawner.Health <= 0) { return; //wander skip conditions } //if too far from home... float cutoffDistanceSquared = Mathf.Pow(Mathf.Sqrt(MAX_DIST_SQ_FROM_VILLAGE_DESIRED) + ClosestTeamSpawner.CurrentRadius, 2); if (_rallyPointActive) { if ((_rallyPoint - transform.position).sqrMagnitude < ReachMelee * ReachMelee * 2 * 2) //if "close enough" already... { _rallyPointActive = false; //turn off rallying } else //still heading there, eyes wide open (since this in the Idle state) { SpeedWalkReturnToBase = true; SetDestinationData(_rallyPoint); } } else //...no rallying, normal wandering logic... { if (DistanceSquaredFromNearestVillage > cutoffDistanceSquared) //if far from home (and Idle) { _idleTimer = 2; //check distance again in a little while SpeedWalkReturnToBase = true; SetDestinationData(ClosestTeamSpawner.transform.position); if (TEXT_DEBUG_ENABLED) { TestDebugOutput += ClosestTeamSpawner.gameObject.name + "dist: " + DistanceSquaredFromNearestVillage + "/" + cutoffDistanceSquared; //DEBUG } } else //...wander near home { _idleTimer = Random.Range(0, IDLE_PERIOD_MAX); //reset if (Spawner.FindASpot(transform.position, WANDER_RADIUS, Radius, out var wanderDestination)) { SpeedWalkReturnToBase = false; SetDestinationData(wanderDestination); if (TEXT_DEBUG_ENABLED) { TestDebugOutput += "Random"; //DEBUG } } } } }
protected virtual void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { destroyProjectile(); //Debug.Log ("LOSERTTT"); }
protected override void OnCollideTakeDamage (Collider2D other, ITakeDamage takeDamage) { takeDamage.TakeDamage (Damage, gameObject); DestroyProjectile (); }
private void CalculateClosest() { //int unitsUpdatedThisFrame = 0; _attackers = Units.Concat <IDealDamage>(TowerMgr.Towers).ToList(); foreach (var attacker in _attackers) { if (attacker == null || attacker.GetHealth() <= 0) { continue; } if (attacker.TimeTillNextMgrUpdate > 0) { attacker.TimeTillNextMgrUpdate -= GameTime.DeltaTime; continue; } //unitsUpdatedThisFrame++; //DEBUG attacker.TimeTillNextMgrUpdate = UNIT_UPDATE_PERIOD_DELAY; //reset //Find closest non-spawner enemy ITakeDamage closestEnemy = null; float closestEnemyDistanceSquared = float.MaxValue; Vector3 ownPosition = attacker.transform.position; foreach (var other in Units) { //reasons to skip: looking at itself, not a valid unit, or on same team if (other == null || (IDealDamage)other == attacker || other.Team == attacker.Team || other.Health <= 0) { continue; } float testDistance = Vector3.SqrMagnitude(other.transform.position - ownPosition); if (testDistance < closestEnemyDistanceSquared) { closestEnemyDistanceSquared = testDistance; closestEnemy = other; //push to unit for AI calculations attacker.DistanceSquaredFromNearestEnemyUnit = closestEnemyDistanceSquared; } } foreach (var other in TowerMgr.Towers) { //reasons to skip: looking at itself, not a valid unit, or on same team if (other == null || (IDealDamage)other == attacker || other.Team == attacker.Team || other.Health <= 0) { continue; } float testDistance = Vector3.SqrMagnitude(other.transform.position - ownPosition); if (testDistance < closestEnemyDistanceSquared) { closestEnemyDistanceSquared = testDistance; closestEnemy = other; //push to unit for AI calculations attacker.DistanceSquaredFromNearestEnemyUnit = closestEnemyDistanceSquared; } } //get a more precise distance to current closest unit, taking into account its irregular/variable boundary if (closestEnemy != null && closestEnemyDistanceSquared < attacker.ReachSight * attacker.ReachSight * 2 * 2) { closestEnemyDistanceSquared = Vector3.SqrMagnitude( closestEnemy.transform.GetComponent <Collider>().ClosestPoint(ownPosition) - ownPosition); //push to unit for AI calculations attacker.DistanceSquaredFromNearestEnemyUnit = closestEnemyDistanceSquared; } //NOTE: null check when Unit goes to use attacker.ClosestNonSpawnerEnemy = closestEnemy; //Find closest spawners Spawner closestEnemySpawner = null; float closestEnemySpawnerDistanceSquared = float.MaxValue; Spawner closestTeamSpawner = null; float closestTeamSpawnerDistanceSquared = float.MaxValue; foreach (var s in LevelsMgr.CurrentLevel.Spawners) { if (s == null || s.Health <= 0) { continue; //if not valid, skip } float testDistance = Vector3.SqrMagnitude(s.transform.position - ownPosition); if (s.Team == attacker.Team) { if (testDistance < closestTeamSpawnerDistanceSquared) { closestTeamSpawnerDistanceSquared = testDistance; closestTeamSpawner = s; } } else { if (testDistance < closestEnemySpawnerDistanceSquared) { closestEnemySpawnerDistanceSquared = testDistance; closestEnemySpawner = s; } } } //if unit close to an enemy spawner, get a more precise distance to its irregular/variable boundary if (closestEnemySpawner != null && closestEnemySpawnerDistanceSquared < attacker.ReachSight * attacker.ReachSight * 2 * 2) { closestEnemySpawnerDistanceSquared = Vector3.SqrMagnitude( closestEnemySpawner.GetComponent <Collider>().ClosestPoint(ownPosition) - ownPosition); } //push to unit for AI calculations //NOTE: null checks when Unit goes to use attacker.ClosestEnemySpawner = closestEnemySpawner; attacker.ClosestTeamSpawner = closestTeamSpawner; attacker.DistanceSquaredFromNearestEnemySpawner = closestEnemySpawnerDistanceSquared; attacker.DistanceSquaredFromNearestVillage = closestTeamSpawnerDistanceSquared; } //NumberOfUnitUpdatesThisFrame = unitsUpdatedThisFrame; //DEBUG }
protected virtual void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { destroyProjectile(); }
protected override void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { Debug.Log("OnCollideTakeDamage"); }
// Start is called before the first frame update void Start() { damageable = GetComponent <ITakeDamage>(); damageable.health = 3; }
protected virtual void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { //Debug.Log("TAKE OnCollideTakeDamage"); takeDamage.TakeDamage(damage, gameObject); DestroyBall(); }
protected virtual void OnCollideOwner(Collider2D other, ITakeDamage takeDamage) { //Debug.Log("TAKE OnCollideOwner"); }
/// <summary> /// Metoda wywo³ywana po trafieniu przez pocisk obiektu, /// który mo¿e przyj¹æ obra¿enia. /// </summary> /// <param name="other"></param> /// <param name="takeDamage"></param> protected override void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { takeDamage.TakeDamage(Damage, gameObject); DestroyProjectile(); }
public void InvokeAction(ITakeDamage _currentView) { HasCollided?.Invoke(_currentView, currentBulletModel.GetPointDamage()); }
protected virtual void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { }
protected override void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { Console.Write("asd"); takeDamage.TakeDamage(Damage, gameObject); DestroyProjectile(); }
// Use this for initialization protected override void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { takeDamage.TakePeriodicDamage(5,Damage, gameObject); }
public void ApplyDamage(int Damage, ITakeDamage ApplyTo) { ApplyTo.TakeDamage(Damage); }
protected virtual void OnCollideTakeDamage(Collider2D other,ITakeDamage takeDamage) { }
void OnCollideTakeDamage(Collider2D other, ITakeDamage takeDamage) { Instantiate(HitEffect, other.transform.position, other.transform.rotation); takeDamage.TakeDamage(Damage, gameObject); DisableMeleeWeapon(); }