Exemple #1
0
    private void Awake()
    {
        slider = GetComponent <Slider>();

        boss   = GameObject.Find("Boss").GetComponent <BEnemy>();
        player = GameObject.Find("Player").GetComponent <PlayerControl>();
    }
Exemple #2
0
 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));
     }
 }
Exemple #6
0
 public override void Execute(BEnemy owner)
 {
     if ((owner.player.transform.position - owner.transform.position).magnitude < 3.5f)
     {
         owner.soundFSM.changeState(EnemyNear.Instance);
     }
 }
Exemple #7
0
 public override void Execute(BEnemy owner)
 {
     if ((owner.player.transform.position - owner.transform.position).magnitude > 3.5f)
     {
         owner.soundFSM.changeState(EnvironmentalCrickets.Instance);
     }
 }
Exemple #8
0
    //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");
        }
    }
Exemple #9
0
 //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;
        }
Exemple #14
0
        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);
            }
        }
Exemple #20
0
        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;
        }
Exemple #22
0
    //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);
        }
Exemple #26
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);
            }
        }
Exemple #28
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");
        }
Exemple #29
0
    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);
    }
Exemple #30
0
        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;
        }