private void Awake() { slider = GetComponent <Slider>(); boss = GameObject.Find("Boss").GetComponent <BEnemy>(); player = GameObject.Find("Player").GetComponent <PlayerControl>(); }
public override void Enter(BEnemy owner) { if (owner as EnemyPatrol == null) { Debug.LogError("Incorrect Assignment of EnemyPatrolStates to Enemy"); } }
public override void Execute(BEnemy owner) { if (!owner.taskList["Reload"].Running) { owner.attackFSM.changeState(Search.Instance); } }
public override void Exit(BEnemy owner) { owner.pathFinder.canSearch = false; owner.pathFinder.canMove = false; owner.taskList["FacePlayer"].Stop(); owner.taskList.clear("FacePlayer"); }
public override void Execute(BEnemy owner) { if (!owner.taskList["FacePlayer"].Running) { owner.taskList["FacePlayer"] = new Task(owner.RotateTo(owner.player.transform.position, 0f)); } }
public override void Execute(BEnemy owner) { if ((owner.player.transform.position - owner.transform.position).magnitude < 3.5f) { owner.soundFSM.changeState(EnemyNear.Instance); } }
public override void Execute(BEnemy owner) { if ((owner.player.transform.position - owner.transform.position).magnitude > 3.5f) { owner.soundFSM.changeState(EnvironmentalCrickets.Instance); } }
//collision method protected override void OnCollisionEnter2D(Collision2D collision) { base.OnCollisionEnter2D(collision); if (collision.gameObject.tag == "Enemy") { BEnemy enemy = collision.gameObject.GetComponent <BEnemy>(); enemy.health -= damage; GameObject.Find("Sound Manager").GetComponent <SoundManager>().PlayOneShot("Arrow_Hit"); Rigidbody2D enemyRigidbody = collision.gameObject.GetComponent <Rigidbody2D>(); enemyRigidbody.transform.Translate((transform.position - source.transform.position).normalized * .2f, Space.World); if (collision.gameObject.name == "Boss") { var eventObj = new Events.ComeToMeEvent(source.transform.position); eventObj.addListener(collision.gameObject); Events.EventManager.Instance.addEvent(eventObj, 0f); } } else if (collision != null) { GameObject.Find("Sound Manager").GetComponent <SoundManager>().PlayOneShot("Arrow_Hit_Obstacle"); } }
//constructor for state machine public StateMachine(BEnemy currOwner) { owner = currOwner; currentState = null; prevState = null; globalState = null; }
public override void Execute(BEnemy owner) { owner.pathFinder.destination = owner.player.transform.position; if (!owner.soundManager.isPlaying("Ghost_Screaming")) { owner.mainFSM.reenterState(); } }
public override void Execute(BEnemy owner) { Debug.Log(owner.mainFSM.getCurrentState()); if (owner.health <= 0 && owner.mainFSM.getCurrentState() != Die.Instance) { owner.mainFSM.changeState(Die.Instance); } }
public override void Enter(BEnemy owner) { owner.GetComponent <Rigidbody2D>().velocity = new Vector2(0, 0); IEnumerator attackCoroutine = owner.attackPatterns.shootStraight(owner.transform.Find("Gun").gameObject, ((EnemyPatrol)owner).bullet, 3, .5f); owner.taskList["Shoot"] = new Task(attackCoroutine); owner.transform.Find("Texture").GetComponent <Animator>().SetTrigger("isShooting"); ((EnemyPatrol)owner).playAttackSound(); --owner.currAmmo; }
public override void Enter(BEnemy owner) { //turn off FOV visualization owner.viewMeshFilter.SetActive(false); //turn off all waypoints owner.castTo <EnemyPatrol>().disableWaypoints(); owner.attackFSM.changeState(Search.Instance); owner.attackFSM.changeGlobalState(BasicEnemyAttackGlobal.Instance); }
public override void Execute(BEnemy owner) { //check if player is spotted every udpate owner.playerSpotted = owner.enemyVision.hasSeen("Player"); //changes to attack state if enemy spots player if (owner.playerSpotted) { owner.mainFSM.changeState(AlertBoss.Instance); } }
public override void Exit(BEnemy owner) { owner.taskList.Stop("LookAtMe"); var ai = owner.GetComponent <Pathfinding.IAstarAI>(); if (ai != null) { ai.isStopped = false; } }
public override void Enter(BEnemy owner) { var ai = owner.GetComponent <Pathfinding.IAstarAI>(); if (ai != null) { ai.isStopped = true; } owner.taskList["LookAtMe"] = new Task(owner.RotateTo(lookPosition, 5f)); }
public override void Execute(BEnemy owner) { if (owner.currAmmo == 0) { owner.attackFSM.changeState(Reload.Instance); } if (!owner.taskList["Shoot"].Running) { owner.attackFSM.changeState(Search.Instance); } }
public override void Execute(BEnemy owner) { if (owner.mainFSM.getCurrentState() != Die.Instance) { owner.BupdateAnim(); } if (owner.health <= 0 && owner.mainFSM.getCurrentState() != Die.Instance) { owner.mainFSM.changeState(Die.Instance); } }
public override void Enter(BEnemy owner) { //turn on FOV visualization owner.GetComponent <EnemyVision>().enabled = true; owner.playerSpotted = false; var patrolBehavior = owner.GetComponent <Pathfinding.PatrolBackAndForth>(); patrolBehavior.setRoomWaypoints(4, 1f); patrolBehavior.enabled = true; }
//Initialize fields private void Awake() { enemy = GetComponent <BEnemy>(); visualObject = transform.Find("FOV Visual").transform.gameObject; viewMeshFilter = visualObject.GetComponent <MeshFilter>(); viewMesh = new Mesh(); viewMesh.name = "View Mesh"; viewMeshFilter.mesh = viewMesh; watchList = new Dictionary <string, int>(); }
public override void Execute(BEnemy owner) { owner.pathFinder.destination = owner.player.transform.position; //check if enemy can hit player, if so change to fire state Vector3 targetDir = owner.player.transform.position - owner.transform.position; RaycastHit2D hit = Physics2D.Raycast(owner.transform.position, targetDir, owner.distToFire); if (hit.transform != null && hit.transform.tag == "Player") { owner.attackFSM.changeState(Fire.Instance); } }
//Initialize fields public EnemyVision(BEnemy owner) { player = owner.player.gameObject; enemyTransform = owner.transform; detectionAngle = owner.detectionAngle; detectionDistance = owner.detectionDistance; fovResolution = owner.fovResolution; viewMeshFilter = owner.viewMeshFilter.GetComponent <MeshFilter>(); viewMesh = new Mesh(); viewMesh.name = "View Mesh"; viewMeshFilter.mesh = viewMesh; }
public override void Enter(BEnemy owner) { //turn off FOV visualization owner.GetComponent <EnemyVision>().enabled = false; owner.pathFinder.destination = owner.player.transform.position; owner.pathFinder.isStopped = false; owner.soundManager.Play("Ghost_Screaming"); //Alert boss player's whereabouts var alertBoss = new ComeToMeEvent(owner.transform.position); alertBoss.addListener(GameObject.Find("Boss")); EventManager.Instance.addEvent(alertBoss, 0); }
// Update is called once per frame void Update() { while (spawnTimes.Count > 0 && spawnTimes[0] <= Time.time) { GameObject boop = (GameObject)Instantiate(spawns[0], new Vector3(0, 0), Quaternion.identity); print(boop.GetType()); BEnemy somb = boop.GetComponents(typeof(Component))[0].GetComponent <BEnemy>(); print("Boop"); if (splines[0] != null) { somb.spline = splines[0]; } spawnTimes.RemoveAt(0); spawns.RemoveAt(0); splines.RemoveAt(0); } }
public override void Execute(BEnemy owner) { owner.GetComponent <Rigidbody2D>().velocity = new Vector3(0, 0, 0); //check if player is spotted every udpate owner.playerSpotted = owner.enemyVision.hasSeen("Player"); //Change to attack state if player is spotted if (owner.playerSpotted) { owner.mainFSM.changeState(AlertBoss.Instance); } //Reverts back to patrol waypoint state after coroutine is done running if (!owner.taskList.Running("LookAtMe")) { owner.mainFSM.changeState(PatrolWaypoint.Instance); } }
public override void Enter(BEnemy owner) { owner.isDead = true; //turn off FOV visualization owner.viewMeshFilter.SetActive(false); //turn off all waypoints owner.castTo <EnemyPatrol>().disableWaypoints(); //set velocity to zero owner.GetComponent <Rigidbody2D>().velocity = Vector3.zero; //drop item GameObject.Instantiate(owner.itemDrop, owner.transform.position, Quaternion.identity); //play animation owner.transform.Find("Texture").GetComponent <Animator>().SetTrigger("isDead"); }
public BEnemy FindClosestEnemy() { var gos = GameObject.FindObjectsOfType <BEnemy>(); BEnemy closest = null; float distance = Mathf.Infinity; Vector3 position = transform.position; foreach (var go in gos) { Vector3 diff = go.transform.position - position; float curDistance = diff.sqrMagnitude; if (curDistance < distance) { closest = go; distance = curDistance; } } return(closest); }
public override void Enter(BEnemy owner) { //turn on FOV visualization owner.viewMeshFilter.SetActive(true); //turn on all waypoints ((EnemyPatrol)owner).reenableWaypoints(); if (owner.movingPatrol) { owner.taskList["NextWaypoint"] = new Task(owner.castTo <EnemyPatrol>().moveTowardsNext()); } else { owner.taskList["NextWaypoint"] = new Task(owner.castTo <EnemyPatrol>().rotateTowardsNext()); } owner.playerSpotted = false; }