private void OnTriggerEnter2D(Collider2D col) { GameObject objectHit = col.gameObject; if (objectHit != null) { RecieveDamage objectRecieveDamage = objectHit.GetComponent <RecieveDamage>(); if (objectRecieveDamage != null) { print("City killed " + objectHit.name); PlayerHealthSystem pHeathSyst = objectHit.gameObject.GetComponent <PlayerHealthSystem>(); if (pHeathSyst != null && !pHeathSyst.isDead) { pHeathSyst.KillPlayer(); } else { objectRecieveDamage.GetHit(Vector2.left, 100f, 0, 0, 0); } PlayVariedOneShot(crushSound, crushVolume, false); } else { print("City ran over " + objectHit.name); SmashingWallEffect(objectHit.transform.position); PlayVariedOneShot(smashSound, smashVolume, true); } } }
private void Hitting(GameObject other) { if (IsOtherUnitWeapon(other)) { RecieveDamage component = GetRecieveDamageComponent(other); component.DamageCalculation(this); attackEvent.Invoke(); } }
public virtual void OnTriggerExit2D(Collider2D other) { pRecieveDamage = other.GetComponent <RecieveDamage>(); if (pRecieveDamage != null) { pRecieveDamage = null; } }
public virtual void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.tag == "Player") { pRecieveDamage = other.GetComponent <RecieveDamage>(); if (pRecieveDamage == null) { Debug.LogWarning("No RecieveDamage component attached to player!"); } } }
// Check to see if the player has left the trigger zone to get the sand ostrich back in to its hole // Set the target as null private void OnTriggerExit2D(Collider2D other) { pRecieveDamage = other.GetComponent <RecieveDamage>(); if (pRecieveDamage != null) { print("go in hole"); isTracking = false; isInHole = true; pRecieveDamage = null; target = null; PlayOneShotAudio(enterExitSound, enterExitVolume); animator.SetTrigger("isGoingInHole"); } }
// << ------------------------------------- CHECK FOR PROXIMITY -------------------------------- >> // // Check to see if the player has entered the trigger zone to get the sand ostrich out of its hole // Set the player as the target to be tracked private void OnTriggerEnter2D(Collider2D other) { pRecieveDamage = other.GetComponent <RecieveDamage>(); if (pRecieveDamage != null) { if (isInHole) { target = pRecieveDamage.gameObject; isInHole = false; PlayOneShotAudio(enterExitSound, enterExitVolume); animator.SetTrigger("isExitingHole"); isTracking = true; } } }
// << --------------------------------------- COMBAT -------------------------------- >> // // Called from inside the animator during the "SandOstrich_Hit" animation // Cast happens when the sand ostrich's head swings back after being punched. public void PeckAtPlayerCast() { if (!objectHit) { RaycastHit2D[] hits = Physics2D.CircleCastAll(hitBoxPos.position, 0.5f, direction, 0.5f, playerLayerMask); foreach (RaycastHit2D hit in hits) { RecieveDamage hitObj = hit.collider.gameObject.GetComponent <RecieveDamage>(); if (hitObj != null) { print("hit: " + hitObj.name); hitObj.GetComponent <RecieveDamage>().GetHit(direction, damageOutput, knockBack, knockUp, stunTime); objectHit = true; // prevents enemy attacking the player every frame - gets reset in AfterAttackCooldown() AttackCoolDown(); } } } }
// << ------------------------------------- COLLISION CHECKS -------------------------------- >> // public void CastForPlayer() // Called every frame when in Attacking state { if (!objectHit) // prevents enemy attacking the player every frame - gets reset in AfterAttackCooldown() { RaycastHit2D[] hits = Physics2D.CircleCastAll(hitBoxPos.position, 0.35f, direction, 0f, playerLayerMask); foreach (RaycastHit2D hit in hits) { RecieveDamage hitObj = hit.collider.gameObject.GetComponent <RecieveDamage>(); if (hitObj != null) { hitObj.GetComponent <RecieveDamage>().GetHit(direction, damageOutput, knockBack, knockUp, stunTime); objectHit = true; AfterAttackCooldown(); } else { Debug.Log("No Recieve Damage component on player!"); } } } }
public void CastForEnemies() { if (canCast) { Vector2 punchDir = pCon.spriteRenderer.flipX ? Vector2.left : Vector2.right; RaycastHit2D[] hits = Physics2D.BoxCastAll(gameObject.transform.position, boxCast, 0, punchDir, castDistance, interactableLayerMask); //if (!isCasting) //{ // GameObject hitBox = GameObject.CreatePrimitive(PrimitiveType.Cube); // hitBox.name = "PUNCH BOX"; // hitBox.transform.localScale = new Vector3(boxCast.x / 2 + castDistance, boxCast.y, 1); // hitBox.transform.position = gameObject.transform.position + (Vector3)(punchDir) * hitBox.transform.localScale.x / 2; // hitBox.transform.SetParent(gameObject.transform); // isCasting = true; // StartCoroutine(DestroyHitBox(hitBox)); //} foreach (RaycastHit2D hit in hits) { RecieveDamage recieveDamage = hit.collider.gameObject.GetComponent <RecieveDamage>(); if (recieveDamage != null && !hit.collider.isTrigger) { print("hit: " + recieveDamage.name); pAudio.PlayConnectSound(currentAttackNum); recieveDamage.GetHit(punchDir, damage, knockback, knockup, stunTime); canCast = false; //pCon.PlayerKnocked(-pCon.accessibleDirection, 20, 0f, 0.2f); } } } }
private void Start() { DamageInfo = GetComponent <RecieveDamage>(); Enemy = (EnemyBaseData)DamageInfo.UnitStats; }