public override void ApplyEffect(Collider2D collider) { if (collider.CompareTag("Player")) { ok = true; shield.Stop(); shield.volume = 0; GetComponent <CircleCollider2D>().radius = 30; if (PlayerPrefs.GetString("Dagon") == "Dagon") { random = Random.Range(0, getD.Length); AudioSource.PlayClipAtPoint(getD[random], transform.position, 1f); iTween.MoveTo(gameObject, iTween.Hash("position", new Vector3(0f, 0f, 0f), "islocal", true)); } else { random = Random.Range(0, getC.Length); AudioSource.PlayClipAtPoint(getC[random], transform.position, 1f); iTween.MoveTo(gameObject, iTween.Hash("position", new Vector3(1f, 1f, 0f), "islocal", true)); } StartCoroutine("Go"); AudioSource.PlayClipAtPoint(clip, transform.position, 0.5f); StartCoroutine("UsingMagnetic", tempo); } if (collider.CompareTag("Coin") && isInCharacter) { ChasePlayer followPlayer = collider.gameObject.AddComponent(typeof(ChasePlayer)) as ChasePlayer; } }
/*GameObject FireEffect() * { * GameObject novoexplosionEffect = (GameObject)Instantiate(explosionEffect, transform.position, transform.rotation); * Collider2D[] col = Physics2D.OverlapCircleAll(transform.position, radius, 9 << LayerMask.NameToLayer("Enemy")); * * foreach (Collider2D nearbyObject in col) * { * * if (nearbyObject.transform.tag == "Enemy") * { * * enemyHealth = nearbyObject.GetComponent<EnemyHealth>(); * move = nearbyObject.GetComponent<EnemyMovement>(); * move.ColorChangeToRed(); * enemyHealth.StartCoroutine("FireDamage"); * print("ColorChangeToRed"); * * } * * if (nearbyObject.transform.tag == "EnemyChase") * { * slimeHealth = nearbyObject.GetComponent<EnemySlimeHealth>(); * chase = nearbyObject.GetComponent<ChasePlayer>(); * * chase.ColorChangeToRed(); * * slimeHealth.StartCoroutine("FireDamage"); * * print("ColorChangeToBlue"); * } * * } * * return novoexplosionEffect; * } */ GameObject IceEffect() { GameObject novoexplosionEffect = (GameObject)Instantiate(explosionEffect, transform.position, transform.rotation); Collider2D[] col = Physics2D.OverlapCircleAll(transform.position, radius, 9 << LayerMask.NameToLayer("Enemy")); foreach (Collider2D nearbyObject in col) { if (nearbyObject.transform.tag == "Enemy") { move = nearbyObject.GetComponent <EnemyMovement>(); print("ColorChangeToBlue"); move.ColorChangeToBlue(); //move.ColorChangeToBlue(); move.SlowEffect(speedSlow); //move.SlowEffect(speedSlow); } if (nearbyObject.transform.tag == "EnemyChase") { chase = nearbyObject.GetComponent <ChasePlayer>(); print("ColorChangeToBlue"); chase.ColorChangeToBlue(); //move.ColorChangeToBlue(); chase.SlowEffect(speedSlow); //move.SlowEffect(speedSlow); } } return(novoexplosionEffect); }
/// <summary> /// Drops the item /// </summary> public void DropItem() { /* * Choose a random loot table */ LootTableWithSpawnrate candidate; if (LootTables == null || !LootTables.Any(i => i.Spawnrate > 0f)) { throw new System.InvalidOperationException("DropItemOnDeath has no accessible loot tables"); } do { candidate = LootTables[Random.Range(0, LootTables.Count)]; } while (Random.value > candidate.Spawnrate); /* * Spawn items of selected loot table */ foreach (var i in candidate.Table.GetLootItems()) { ChasePlayer newObject = Commons.InstantiateInCurrentLevel(i, transform.Position2D() + Random.insideUnitCircle * SpawningRadius).GetComponent <ChasePlayer>(); if (newObject) { newObject.BeginChase(); } } }
// Start is called before the first frame update void Start() { chaseBrother = gameObject.GetComponent <ChaseBrother>(); chasePlayer = gameObject.GetComponent <ChasePlayer>(); imDead = false; agentCollider = GetComponent <Collider>(); }
private void Awake() { myTransform = transform; sr = GetComponent <SpriteRenderer>(); chasePlayer = GetComponent <ChasePlayer>(); lookTowardsPlayer = GetComponent <LookTowardsPlayer>(); animator = GetComponent <Animator>(); }
/// <summary> /// Awake this instance. /// </summary> void Awake( ) { _Anchor = GameObject.Find("Anchor"); _playerController = PlayerObj.GetComponent <PlayRunningGame.Player.PlayerController>(); _chasePlayer = ChaserCamera.GetComponent <ChasePlayer>(); _playerPosition = PlayerObj.transform.position; _uiLabelDistanceScore = DistanceScore.GetComponent <UILabel>(); }
void Start() { _path = gameObject.GetComponentInParent <AIPath>(); _setter = gameObject.GetComponentInParent <AIDestinationSetter>(); _chasePlayer = gameObject.GetComponentInParent <ChasePlayer>(); _setter.target = _chasePlayer.empty.transform; CDTime = dashRate * 0.8f; _target = GameObject.FindWithTag("Player").transform; }
private void Start() { GameObject tempObj = GameObject.Find("Hapineko(All)"); chase_player = tempObj.GetComponent <ChasePlayer>(); CanvasMenu.SetActive(false); CanvasCamera.SetActive(false); PlayerCamera.SetActive(true); }
// Use this for initialization void Start() { slimeAudio = GetComponent <AudioSource>(); player = GameObject.FindGameObjectWithTag("Player"); move = GetComponent <ChasePlayer>(); playerHealth = player.GetComponent <PlayerHealth>(); anim = GetComponent <Animator>(); enemyHealth = GetComponent <EnemySlimeHealth>(); }
// Use this for initialization void Start() { if (chasing) { chase_player = GetComponentInParent <ChasePlayer>(); } else { shoot_player = GetComponentInParent <ShootPlayer>(); } }
private void MakeFSM() { fsm = new SimpleAIFSMSystem(); Idle idle = new Idle(fsm, gameObject, pc); idle.AddTransition(SimpleAITransition.FoundPlayer, SimpleAIStateID.ChasePlayer); ChasePlayer chasePlayer = new ChasePlayer(fsm, gameObject, pc); chasePlayer.AddTransition(SimpleAITransition.LostPlayer, SimpleAIStateID.Idle); fsm.AddState(idle); fsm.AddState(chasePlayer); }
private void Awake() { var idle = new Idle(); var attack = new Attack(); var chasePlayer = new ChasePlayer(GetComponent <NavMeshAgent>()); _stateMachine = new StateMachine(); _stateMachine.AddState(idle); _stateMachine.AddState(attack); _stateMachine.AddState(chasePlayer); _stateMachine.SetState(idle); }
void Start() { isDash = false; spawnTimer = 4; enemyAudio = GetComponent <AudioSource>(); player = GameObject.FindGameObjectWithTag("Player"); playerHealth = player.GetComponent <PlayerHealth>(); enemyHealth = GetComponent <EnemyHealth>(); anim = GetComponent <Animator>(); trans = GetComponent <Transform>(); enemy = this.gameObject; move = enemy.GetComponent <ChasePlayer>(); }
// Start is called before the first frame update void Start() { if (this.gameObject.tag == "Blue") { chaseBrother = gameObject.GetComponent <ChaseBrother>(); } else if (this.gameObject.tag == "Orange") { chasePlayer = gameObject.GetComponent <ChasePlayer>(); } imDead = false; agentCollider = GetComponent <Collider>(); }
void Update() { if (health <= 0) { Instantiate(DeadExplosion, transform.position, Quaternion.identity); gOver.GameOver(); this.gameObject.GetComponent <SpriteRenderer>().enabled = false; } if (gOver.GameOverCheck) { this.gameObject.GetComponent <Boss>().enabled = false; } if (finiteStateMachine != null && finiteStateMachine.currentlyRunningState == null) { int r = Random.Range(0, 3); myState = (StateType)r; State nextState = null; switch (myState) { case StateType.Chase1: nextState = new ChasePlayer(this, player, speed, projectile[0]); break; case StateType.Chase2: nextState = new ChasePlayer2(this, player, speed, projectile[1]); break; case StateType.Idle: nextState = new IdleState(idleTime); break; default: break; } finiteStateMachine.ReciveState(nextState); } finiteStateMachine.ExecuteState(); healthBar.value = health; }
public void CatchTrap(TrapList.Param trap, GameObject obj) { if (trap == null) { return; } switch (trap.ID) { case "Sw": catchTrap = true; Observable.Timer(System.TimeSpan.FromSeconds(trap.Time)) .Take(1) .Subscribe(_ => { catchTrap = false; Destroy(obj); }) .AddTo(this); break; case "J": CmdHitBullet((int)trap.Power); Observable.Timer(System.TimeSpan.FromSeconds(0.5)) .Take(1) .Subscribe(_ => { Destroy(obj); catchTrap = false; }) .AddTo(this); break; case "N": catchTrap = true; Observable.Timer(System.TimeSpan.FromSeconds(trap.Time)) .Take(1) .Subscribe(_ => { if (type == PlayerMode.Chase) { ChasePlayer cahser = gameObject.GetComponent <ChasePlayer>(); cahser.Change_Mode("0"); } Destroy(obj); catchTrap = false; }) .AddTo(this); break; } }
private void Awake() { Player player = FindObjectOfType <Player>(); _navMeshAgent = GetComponent <NavMeshAgent>(); _entity = GetComponent <Entity>(); _stateMachine = new StateMachine(); // Just want to explain this line further b/c there's a lot going on here. // I believe what this is doing is registering a lambda function with StateMachine.OnStateChanged. // This lamdba function receives "state", and simply called EntityStateMachine.OnStateChanged(state). _stateMachine.OnStateChanged += state => OnEntityStateChanged?.Invoke(state); Idle idle = new Idle(); ChasePlayer chasePlayer = new ChasePlayer(_navMeshAgent, player); Attack attack = new Attack(); Dead dead = new Dead(_entity); // Idle -> Chase _stateMachine.AddTransition( idle, chasePlayer, () => DistanceFlat(_navMeshAgent.transform.position, player.transform.position) < 5f ); // Chase -> Attack _stateMachine.AddTransition( chasePlayer, attack, () => DistanceFlat(_navMeshAgent.transform.position, player.transform.position) <= 2f ); /* * // Attack -> Chase * _stateMachine.AddTransition( * attack, * chasePlayer, * () => DistanceFlat(_navMeshAgent.transform.position, player.transform.position) > 2f * ); */ // Any -> Dead _stateMachine.AddAnyTransition(dead, () => _entity.Health <= 0); _stateMachine.SetState(idle); }
/// <summary> /// Awake this instance. /// </summary> private void Awake( ) { Anchor = GameObject.Find("Anchor"); AnchorTransform = Anchor.transform; playerController = PlayerObj.GetComponent <PlayerController>(); playerTransform = PlayerObj.transform; chasePlayer = ChaserCamera.GetComponent <ChasePlayer>(); chasePlayerCameraTransform = ChaserCamera.transform; uiLabelDistanceScore = DistanceScore.GetComponent <UILabel>(); floorMapManager = this.GetComponent <FloorMapManager>(); bgFever = chasePlayerCameraTransform.FindChild("BgFever").gameObject; objConversation = AnchorTransform.FindChild("Conversation").gameObject; conversationManager = objConversation.GetComponent <ConversationManager>(); bgWave = chasePlayerCameraTransform.FindChild("BgWave").gameObject; waterPlane = chasePlayerCameraTransform.FindChild("WaterPlane").gameObject; waveXL = chasePlayerCameraTransform.FindChild("WaveXL").gameObject; }
void Awake() { slimeExplode = GetComponent <SlimeExplode>(); player = GameObject.FindGameObjectWithTag("Player"); anim = GetComponent <Animator>(); enemyAudio = GetComponent <AudioSource>(); experience = player.GetComponent <Experience>(); //hitParticles = GetComponentInChildren <ParticleSystem> (); //capsuleCollider = GetComponent <CapsuleCollider> (); //bullet = GetComponent<BulletMoveFoward>(); //col.GetComponent<Collider2D>(); playerHealth = player.GetComponent <PlayerHealth>(); sprite = GetComponent <SpriteRenderer>(); move = GetComponent <ChasePlayer>(); isDead = false; tiro = player.GetComponent <Tiro>(); }
private IEnumerator Start() { currentChanse = Random.Range(minChanse, maxChanse); IMover _mover = new Mover(this, moveSpeed); IMyAnimations _animation = new CharacterAnimation(GetComponent <Animator>()); IFlip _flip = new FlipWithTranform(this); IHealth _health = GetComponent <IHealth>(); IAttacker _attacker = GetComponent <IAttacker>(); Idle idle = new Idle(_mover, _animation); Walk walk = new Walk(this, _mover, _animation, _flip, patrols); ChasePlayer chasePlayer = new ChasePlayer(_mover, _flip, _animation, IsPlayerRightSide); Attack attack = new Attack(_player.transform.GetComponent <IHealth>(), _flip, _animation, _attacker, maxAttackTime, IsPlayerRightSide); TakeHit takeHit = new TakeHit(_health, _animation); Dead dead = new Dead(this, _animation, () => { if (currentChanse > Random.Range(0, 100)) { Instantiate(scorePrefab, transform.position, Quaternion.identity); } }); _stateMachine.AddTransision(idle, walk, () => idle.IsIdle == false); //Idle'dan Walk'a IsIdle == false ise geç. _stateMachine.AddTransision(idle, chasePlayer, () => DistanceFromMeToPlayer() < chaseDistance); //Idle'dan ChasePlayer'a methoddan dönen değer chaseDistance'dan küçük ise geç. _stateMachine.AddTransision(walk, chasePlayer, () => DistanceFromMeToPlayer() < chaseDistance); //Walk'dan ChasePlayer'a methoddan dönen değer chaseDistance'dan küçük ise geç. _stateMachine.AddTransision(chasePlayer, attack, () => DistanceFromMeToPlayer() < attackDistance); //ChasePlayer'dan Attack'a methoddan dönen değer attackDistance'dan küçük ise geç. //Ters İşlemler _stateMachine.AddTransision(walk, idle, () => !walk.IsWalking); _stateMachine.AddTransision(chasePlayer, idle, () => DistanceFromMeToPlayer() > chaseDistance); _stateMachine.AddTransision(attack, chasePlayer, () => DistanceFromMeToPlayer() > attackDistance); _stateMachine.AddAnyState(dead, () => _health.IsDead); //Kalan can 1'den küçük ise dead state çalıştır. _stateMachine.AddAnyState(takeHit, () => takeHit.IsTakeHit); //isTakeHit true dönerse takeHit çalıştır. _stateMachine.AddTransision(takeHit, chasePlayer, () => takeHit.IsTakeHit == false); _stateMachine.SetState(idle); yield return(null); }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Player") { Player colPlayer = collision.gameObject.GetComponent <Player>(); if (player.Type == Player.PlayerMode.Chase && colPlayer.team == player.team) { ChasePlayer chaser = collision.gameObject.GetComponent <ChasePlayer>(); foreach (Transform n in this.gameObject.transform) { if (n.gameObject.tag == "Weapon") { chaser.Change_Mode(n.GetComponent <WeaponType>().getModeID); DestroyObject(n.gameObject); } } } } }
private IEnumerator Start() { currentchance = Random.Range(minChance, maxChance); IMover mover = new MoverWithTranslate(this, moveSpeed); IMyAnimation animation = new CharacterAnimation(GetComponent <Animator>()); IFlip flip = new FlipWithTransform(this); IHealth health = GetComponent <IHealth>(); IAttacker attacker = GetComponent <IAttacker>(); IStopEdge stopEdge = GetComponent <IStopEdge>(); Idle idle = new Idle(mover, animation); Walk walk = new Walk(this, mover, animation, flip, patrols); ChasePlayer chasePlayer = new ChasePlayer(mover, flip, animation, stopEdge, IsPlayerRightSide); Attack attack = new Attack(_player.transform.GetComponent <IHealth>(), flip, animation, attacker, maxAttackTime, IsPlayerRightSide); TakeHit takeHit = new TakeHit(health, animation); Dead dead = new Dead(this, animation, () => { if (currentchance > Random.Range(0, 100)) { Instantiate(scorePrefab, transform.position, Quaternion.identity); } }); _stateMachine.AddTransition(idle, walk, () => idle.IsIdle == false); _stateMachine.AddTransition(idle, chasePlayer, () => DistanceFromMeToPlayer() < chaseDistance); _stateMachine.AddTransition(walk, chasePlayer, () => DistanceFromMeToPlayer() < chaseDistance); _stateMachine.AddTransition(chasePlayer, attack, () => DistanceFromMeToPlayer() < attackDistance); _stateMachine.AddTransition(walk, idle, () => !walk.IsWalking); _stateMachine.AddTransition(chasePlayer, idle, () => DistanceFromMeToPlayer() > chaseDistance); _stateMachine.AddTransition(attack, chasePlayer, () => DistanceFromMeToPlayer() > attackDistance); _stateMachine.AddAnyState(dead, () => health.IsDead); _stateMachine.AddAnyState(takeHit, () => takeHit.IsTakeHit); _stateMachine.AddTransition(takeHit, chasePlayer, () => takeHit.IsTakeHit == false); _stateMachine.SetState(idle); yield return(null); }
// Start is called before the first frame update void Start() { bulletLayer = LayerMask.NameToLayer("PlayerBullet"); anim = GetComponent <Animator>(); rb = GetComponent <Rigidbody>(); mainSel = new Selector(); runStateSel = new Selector(); deathSeq = new Sequence(); chaseSeq = new Sequence(); surrenderSeq = new Sequence(); deathHealthCheck = new DeathHealthCheckNode(); surrenderCheck = new SurrenderCheckNode(); death = new DeathNode(); surrender = new SurrenderNode(); attack = new AttackNode(); injured = new InjuredRunNode(); normal = new NormalRunNode(); chase = new ChasePlayer(); node = mainSel; mainSel.nList.Add(deathSeq); mainSel.nList.Add(surrenderSeq); mainSel.nList.Add(chaseSeq); deathSeq.nList.Add(deathHealthCheck); deathSeq.nList.Add(death); surrenderSeq.nList.Add(surrenderCheck); surrenderSeq.nList.Add(surrender); chaseSeq.nList.Add(runStateSel); chaseSeq.nList.Add(chase); chaseSeq.nList.Add(attack); runStateSel.nList.Add(injured); runStateSel.nList.Add(normal); }
public void Restart() { // Creating and setting some basic values for the blackboard m_Blackboard = new Blackboard(); m_Blackboard.Trans = transform; m_Blackboard.StartPoint = transform.position; GameObject player = GameObject.FindGameObjectWithTag("Player"); if (player) { m_Blackboard.Player = player.transform; } m_Blackboard.Destination = transform.position + new Vector3(10, 0, 5); m_Blackboard.LookAtObject = GetComponent<Looker>(); //------------------------------------------------------------------------- // Higher level sequence/selectors which we'll add leaf behaviors to later //------------------------------------------------------------------------- Sequence randomMove = new Sequence(); Sequence moveToBeacon = new Sequence(); //---------------------------------------------------------------------------------- // Create leaf behaviors. Should only need one of each. // Some of these get used often (MoveToPoint), others are specific (CheckForBeacon) //---------------------------------------------------------------------------------- MoveToPoint moveToPoint = new MoveToPoint(); PickRandomTarget pickRandomTarget = new PickRandomTarget(); CheckForBeacon checkForBeacon = new CheckForBeacon(); ChasePlayer chasePlayer = new ChasePlayer(); Stunned stunned = new Stunned(); //--------------------------------------------------------------------------------------- // Building the subtrees. // Add children to subtrees in left to right order, since each AddChild is doing a push_back //---------------------------------------------------------------------------------------- moveToBeacon.AddChild(checkForBeacon); moveToBeacon.AddChild(moveToPoint); randomMove.AddChild(pickRandomTarget); randomMove.AddChild(moveToPoint); //-------------------------------------------------- // Add subtrees to the root. // Like before, add behaviors in left to right order //-------------------------------------------------- m_Root.AddChild(stunned); m_Root.AddChild(moveToBeacon); m_Root.AddChild(chasePlayer); m_Root.AddChild(randomMove); //m_Blackboard.MovementPath = NavGraphConstructor.Instance.FindPathToLocation(m_Blackboard.Trans.position, m_Blackboard.Destination); //m_Blackboard.PathCurrentIdx = 0; // repeat.m_Child = randomMove; // // // Try out Chase behavior // m_Chase = new Chase(moveBehavior, m_Bt); // m_Flee = new Flee(moveBehavior, m_Bt); // // List<Behavior> tree = new List<Behavior>(); // tree.Add(repeat); // tree.Add(m_Chase); // // root.m_Children = tree; // // m_Bt.Start(root, this.SequenceComplete); }
/// <summary> /// Awake this instance. /// </summary> private void Awake( ) { Anchor = GameObject.Find ( "Anchor" ); AnchorTransform = Anchor.transform; playerController = PlayerObj.GetComponent<PlayerController>(); playerTransform = PlayerObj.transform; chasePlayer = ChaserCamera.GetComponent<ChasePlayer>(); chasePlayerCameraTransform = ChaserCamera.transform; uiLabelDistanceScore = DistanceScore.GetComponent<UILabel>(); floorMapManager = this.GetComponent<FloorMapManager>(); bgFever = chasePlayerCameraTransform.FindChild( "BgFever" ).gameObject; objConversation = AnchorTransform.FindChild( "Conversation" ).gameObject; conversationManager = objConversation.GetComponent<ConversationManager>(); bgWave = chasePlayerCameraTransform.FindChild( "BgWave" ).gameObject; waterPlane = chasePlayerCameraTransform.FindChild( "WaterPlane" ).gameObject; waveXL = chasePlayerCameraTransform.FindChild( "WaveXL" ).gameObject; }
// Use this for initialization void Start() { chase_player = GetComponentInParent <ChasePlayer>(); }
private void Awake() { _rigidBody = GetComponent <Rigidbody2D>(); _chasePlayer = GetComponent <ChasePlayer>(); _faceTarget = GetComponent <FaceTarget>(); }
protected override void Start() { base.Start(); chasePlayer = GetComponent <ChasePlayer>(); player = MainController.Player.transform; }
void Awake() { m_chasePlayer = transform.parent.GetComponent <ChasePlayer> (); }
private void Awake() { GetComponentInChildren <MonsterAnimatorEvents>().ParentbasicEnemy = this; var rbs = GetComponentsInChildren <Rigidbody>(); foreach (var rb in rbs) { rb.isKinematic = true; } navMeshAgent = GetComponent <NavMeshAgent>(); animator = GetComponentInChildren <Animator>(); playerMovementCollider = GetComponentInChildren <Collider>(); eyesPosition = GetComponentInChildren <EyesLocation>().transform; wanderArea = GetComponentInChildren <BoxCollider>(); wanderArea.transform.parent = null; SetBoxBounds(wanderArea, out wanderAreaBoundsMin, out wanderAreaBoundsMax); stateMachine = new StateMachine(); //STATES var idle = new Idle(this); var chasePlayer = new ChasePlayer(this); var dead = new Dead(this, playerMovementCollider); var attack = new Attack(this); var wander = new Wander(this); var wanderInArea = new WanderInArea(this); var searchForPlayer = new SearchForPlayer(this); var searchForSound = new SearchForSound(this); var lookForSound = new LookForSound(this); //TRANSITIONS AT(idle, chasePlayer, SeePlayer()); AT(wander, chasePlayer, SeePlayer()); AT(wanderInArea, chasePlayer, SeePlayer()); AT(searchForPlayer, chasePlayer, SeePlayer()); AT(searchForSound, chasePlayer, SeePlayer()); AT(idle, lookForSound, HearsPlayer()); AT(wander, lookForSound, HearsPlayer()); AT(wanderInArea, lookForSound, HearsPlayer()); AT(lookForSound, searchForSound, TimeToGoToSound()); AT(chasePlayer, attack, InAttackRange()); AT(attack, wanderInArea, AttackDone()); AT(chasePlayer, searchForPlayer, CantFindPlayer()); AT(searchForPlayer, wanderInArea, SearchOver()); AT(chasePlayer, wanderInArea, LoseAgro()); //ANY TRANSITIONS stateMachine.AddAnyTransition(dead, Dead()); //stateMachine.AddAnyTransition(idle, PlayerMissing()); //BEGINNING STATE stateMachine.SetState(wanderInArea); void AT(State to, State from, Func <bool> condition) => stateMachine.AddTransition(to, from, condition); Func <bool> Dead() => () => currentHealth <= 0; Func <bool> PlayerMissing() => () => Player.instance == null; Func <bool> PlayerIsClose() => () => Vector3.Distance(transform.position, Player.instance.transform.position) < 7; Func <bool> LoseAgro() => () => Vector3.Distance(transform.position, Player.instance.transform.position) > 50; Func <bool> AttackDone() => () => attack.time >= attackTime; Func <bool> InAttackRange() => () => Vector3.Distance(transform.position, Player.instance.transform.position) < attackAttemptRange; Func <bool> SeePlayer() => () => RayHitsPlayer() && Vector3.Angle(eyesPosition.forward, Player.instance.mainCamera.transform.position - eyesPosition.position) < sightFOV; Func <bool> CantFindPlayer() => () => !RayHitsPlayer(); Func <bool> SearchOver() => () => searchForPlayer.searchTime >= maxSearchTime; Func <bool> HearsPlayer() => () => Hearing(); Func <bool> TimeToGoToSound() => () => { return(timeSinceHeard >= reactionTime); }; }