private void InteractWithTarget() { if (target != null) { // If current target is a collectible, call Collect() on it (free for you, cheap for them (tm) ) Collectible collectible = target.GetComponent <Collectible>(); if (collectible) { collectible.CollectIfPossible(); } // If current target is a PlantableZone, water it PlantableZone plantableZone = target.GetComponent <PlantableZone>(); if (plantableZone != null) { plantableZone.Water(); } // If current target is a Strikable, strike it up IStrikeable strikable = target.GetComponent <IStrikeable>(); if (strikable != null) { strikable.Strike(this.transform.position, null); } } Destroy(this.gameObject); }
private void HandleCurrentTarget() { // If current target is a collectible, call Collect() on it (free for you, cheap for them (tm) ) Collectible collectible = target.GetComponent <Collectible>(); if (collectible) { collectible.CollectIfPossible(); } // If current target is a PlantableZone, water it PlantableZone plantableZone = target.GetComponent <PlantableZone>(); if (plantableZone != null) { plantableZone.Water(); } // If current target is a Strikable, strike it up IStrikeable strikable = target.GetComponent <IStrikeable>(); if (strikable != null) { strikable.Strike(this.transform.position, null); } // If we went to water, Fill'r up if ((1 << target.layer) == AI.WaterLayermask) { inventory.FillWaterLevel(); } }
private void HandleWeaponHit(Collider2D other) { // we can only "hit" something if we're using our weapon, not when it's just sitting idle if (usingWeapon) { // If this is on the enemy layer, give us a little knockback when we hit it. // TODO: Figure out how to do "pogo" knockback for swinging downwards later if ((1 << other.gameObject.layer == AI.EnemyLayermask) && !hitHistory.HitSomethingAlready()) { // -1 or 1 exclusively in x, 0 on y, depending on position relative to enemy Vector2 hKnockback = (player.transform.position - other.transform.position).x < 0f ? Vector2.left : Vector2.right; player.GetPushed(hKnockback * 5f, 0.1f); } IStrikeable strikeable = other.GetComponent <IStrikeable>(); if (strikeable != null && !hitHistory.HaveHit(other.gameObject)) { strikeable.Strike(this.transform.position, this.weapon); hitHistory.MarkObjectAsHit(other.gameObject); } } }