示例#1
0
        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;
        }
        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;
        }
示例#3
0
        public override void Exit(BEnemy owner)
        {
            owner.taskList.Stop("LookAtMe");

            var ai = owner.GetComponent <Pathfinding.IAstarAI>();

            if (ai != null)
            {
                ai.isStopped = false;
            }
        }
示例#4
0
        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));
        }
示例#5
0
        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);
        }
示例#6
0
        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");
        }
示例#7
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);
            }
        }
示例#8
0
        public override void Enter(BEnemy owner)
        {
            //turn off FOV visualization
            owner.GetComponent <EnemyVision>().enabled = false;

            owner.pathFinder.isStopped = true;

            //drop item
            if (owner.itemDrop != null)
            {
                GameObject.Instantiate(owner.itemDrop, owner.transform.position, Quaternion.identity);
            }

            //play animation
            owner.transform.Find("Texture").GetComponent <SpriteRenderer>().enabled = false;

            //Give 1 health to player
            var giveHealth = new HealEvent(1);

            giveHealth.addListener(GameObject.Find("Player"));
            EventManager.Instance.addEvent(giveHealth);
        }
示例#9
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.checkVision();

            //Change to attack state if player is spotted
            if (owner.playerSpotted)
            {
                owner.mainFSM.changeState(AttackPlayer.Instance);
            }
            //overrides current state for a new lookatme
            if (owner.messageReceiver.message == message_type.lookAtMe)
            {
                owner.mainFSM.reenterState();
            }
            //Reverts back to patrol waypoint state after coroutine is done running
            if (!owner.taskList["LookAtMe"].Running)
            {
                owner.mainFSM.changeState(PatrolWaypoint.Instance);
            }
        }
示例#10
0
        public override void Exit(BEnemy owner)
        {
            var patrolBehavior = owner.GetComponent <Pathfinding.PatrolBackAndForth>();

            patrolBehavior.enabled = false;
        }