private void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag.Equals("Player")) { OnPlayerDetected?.Invoke(); } }
public void Update() { float playerDistance = Vector3.Distance(Target.position, transform.position); if (playerDistance > Distance) { return; } Vector3 directionToPlayer = Target.position - transform.position; if (Target.GetComponent <SpriteRenderer>().enabled == false) { return; } float angle = Vector3.Angle(transform.right, directionToPlayer.normalized); if (angle > Angle) { return; } int layerMask = 1 << LayerMask.NameToLayer("Wall"); RaycastHit2D raycastHit = Physics2D.Raycast(transform.position, Target.position - transform.position, Vector2.Distance(Target.position, transform.position), layerMask); if (raycastHit.collider == null) { if (StaticOnPlayerDetected != null) { StaticOnPlayerDetected.Invoke(this, Target); } if (OnPlayerDetected != null) { OnPlayerDetected.Invoke(Target); } } }
void PlayerDetected(PlayerDetectedEventArgs e) => OnPlayerDetected?.Invoke(this, e);
public void PlayerDetected(PlayerController player) { OnPlayerDetected?.Invoke(this, player.transform.position); }
//Start spawn of enemies protected virtual void Reaction() { OnPlayerDetected?.Invoke(this, EventArgs.Empty); }