Beispiel #1
0
 // Use this for initialization
 protected override void Awake()
 {
     base.Awake();
     _controller   = GetComponent <MeleeEnemyController>();
     _stateManager = new MeleeEnemyAiStateManager(this);
     _characterFinder.OnCharacterFound += OnCharacterFoundHandler;
 }
Beispiel #2
0
    public static MeleeEnemyController GetMeleeEnemyControllerFromObject(GameObject obj)
    {
        MeleeEnemyController actor = obj.GetComponentInChildren <MeleeEnemyController>();

        if (actor == null)
        {
            actor = obj.GetComponentInParent <MeleeEnemyController>();
        }
        return(actor);
    }
Beispiel #3
0
        public IEnumerator _07MeleeCheckForPlayerInFront()
        {
            playerObject = Spawner.SpawnPlayer(0, 0.5f);
            ogreObject   = Spawner.SpawnOgre(-0.5f, 0.5f);
            ogre         = ogreObject.GetComponent <MeleeEnemyController>();

            yield return(null);

            Assert.AreEqual(ogre.GetLookDirection(), 1);
            Assert.AreEqual(ogre.CheckForPlayerInFront(), playerObject.GetComponent <EdgeCollider2D>());
        }
 public void ToggleEnemyTargetVisibility(bool visibility)
 {
     if (Target.IsTargetValid())
     {
         MeleeEnemyController enemy = ObjectUtils.GetMeleeEnemyControllerFromObject(Target.TargetObject); //Target.TargetObject.GetComponent<EnemyController>();
         if (enemy != null)
         {
             enemy.ToggleTargetVisibility(visibility);
         }
     }
 }
Beispiel #5
0
        public IEnumerator _108StaggeredWhenHit()
        {
            ogreObject          = Spawner.SpawnOgre();
            ogre                = ogreObject.GetComponent <MeleeEnemyController>();
            ogre.canBeStaggered = true;         //ogre should be staggerable by default when instantiated, but it is set to true again for clarity

            yield return(null);

            ogre.TakeDamage(1);
            yield return(null);

            Assert.AreEqual(true, ogre.staggered);
        }
Beispiel #6
0
        public IEnumerator _109CannotBeStaggeredWhenHit()
        {
            ogreObject          = Spawner.SpawnOgre();
            ogre                = ogreObject.GetComponent <MeleeEnemyController>();
            ogre.canBeStaggered = false;         //ogre should be staggerable by default when instantiated, it is set to false for testing

            yield return(null);

            ogre.TakeDamage(1);
            yield return(null);

            //should not be staggered despite taking damage
            Assert.AreEqual(false, ogre.staggered);
        }
Beispiel #7
0
        public IEnumerator AttackWhenInRange()  //attack animation shud make it stop moving
        {
            playerObject = Spawner.SpawnPlayer(0, 0.5f);
            ogreObject   = Spawner.SpawnOgre(0.49f, 0.5f);

            ogre   = ogreObject.GetComponent <MeleeEnemyController>();
            player = playerObject.GetComponent <PlayerController>();

            DisableGravityForObject(playerObject);
            DisableGravityForObject(ogreObject);

            yield return(new WaitForSeconds(1.0f));

            Assert.AreEqual(true, ogre.attacking);
        }
Beispiel #8
0
    private void Start()
    {
        if (meleeEnemy)
        {
            melee = gameObject.GetComponentInParent <MeleeEnemyController>();
        }

        if (rangedEnemy)
        {
            ranged = gameObject.GetComponentInParent <RangedEnemyController>();
        }

        if (kultist)
        {
            kk = gameObject.GetComponentInParent <KultistController>();
        }
    }
Beispiel #9
0
        public IEnumerator _03EnemyDeath()
        {
            //Time.timeScale = 20.0f;

            ogreObject = Spawner.SpawnOgre();
            ogre       = ogreObject.GetComponent <MeleeEnemyController>();

            //1 frame for start()
            yield return(null);

            ogre.OnDeath();

            //A little time is needed for the death animation to play, the object should be destoryed 5 seconds after it dies,
            yield return(new WaitForSeconds(5.1f));

            Assert.IsTrue(ogreObject == null);
        }
Beispiel #10
0
        public IEnumerator _06StopMovingWhenInRange()
        {
            playerObject = Spawner.SpawnPlayer(0, 0.5f);
            ogreObject   = Spawner.SpawnOgre(2, 0.5f);
            ogre         = ogreObject.GetComponent <MeleeEnemyController>();

            yield return(new WaitForSeconds(2.0f));

            var ogreXPos = ogre.GetPosition().x;

            Debug.Log(ogreXPos);
            Assert.IsTrue(ogreXPos > ogre.baseRange - 0.01 && ogreXPos < ogre.baseRange + 0.01);     //more confirmation, it should be extremely accurate to the default value of 1.5f

            yield return(new WaitForSeconds(0.5f));

            var newogreXPos = ogreObject.transform.position.x;

            Assert.IsTrue(Mathf.Abs(newogreXPos - ogreXPos) < Mathf.Epsilon);      //Mathf.Epsilon is a very small number (close to 0)
        }
Beispiel #11
0
        public IEnumerator _04LookingAtPlayer()
        {
            playerObject = Spawner.SpawnPlayer(-4, 1);
            ogreObject   = Spawner.SpawnOgre(0, 1);
            player       = playerObject.GetComponent <PlayerController>();
            ogre         = ogreObject.GetComponent <MeleeEnemyController>();

            //OnSpawn, the enemy faces the default side, which is right as intended by the sprites
            Assert.AreEqual(1, ogre.GetLookDirection());
            Debug.Log("first assert passed: Local Scale is 1 on spawn");

            //the ogreObject should look to the left at the playerObject, as update() ran once
            yield return(null);

            var ogreXpos   = ogre.GetPosition().x;
            var playerXpos = player.GetPosition().x;

            //Confirming that ogreObject is to the left of the playerObject
            Assert.Greater(ogreXpos, playerXpos);
            Assert.AreEqual(-1, ogre.GetLookDirection());
        }
Beispiel #12
0
        public IEnumerator _05MeleeMoveTowardsPlayerAtCorrectSpeed()
        {
            playerObject = Spawner.SpawnPlayer(24, 0.5f);
            ogreObject   = Spawner.SpawnOgre(0, 0.5f);
            ogre         = ogreObject.GetComponent <MeleeEnemyController>();

            var originalOgreXPos = ogre.GetPosition().x;

            Assert.AreEqual(originalOgreXPos, 0);
            Debug.Log("First assert passed");

            yield return(new WaitForSeconds(1.0f));  //It should move towards (24,?) where the player is

            var newOgreXPos = ogreObject.transform.position.x;

            //speed is in unit per second
            var expectedXPos = originalOgreXPos + ogre.speed;

            //within 0.1 variance is accurate enough
            Debug.Log(newOgreXPos);
            Assert.IsTrue(newOgreXPos > expectedXPos - 0.1 && newOgreXPos < expectedXPos + 0.1);    //within expected speed
        }
Beispiel #13
0
    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        MeleeEnemyController enemy = animator.gameObject.GetComponent <MeleeEnemyController>();

        enemy.StartIdle();
    }
 // Use this for initialization
 void Awake()
 {
     _animator   = GetComponent <Animator>();
     _controller = GetComponent <MeleeEnemyController>();
 }
Beispiel #15
0
    // Update is called once per frame
    void Update()
    {
        //timer += Time.deltaTime;

        yaw   = speedH * Input.GetAxis("Mouse X");
        pitch = speedV * Input.GetAxis("Mouse Y");

        rotation += new Vector3(-pitch, yaw, 0f);

        rotation.x = Mathf.Clamp(rotation.x, -90, 90);

        transform.eulerAngles = rotation;
        //transform.eulerAngles += new Vector3(-pitch, yaw, 0f);

        if (health > 0 && Input.GetButton("Jump") && !moving)
        {
            //Debug.Log("OH MY GOD");
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (mEnemy != null)
            {
                mEnemy.SetActive();
            }
            if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward /*ray*/,
                                out hit, 1000, mirrorMask))
            {
                if (hit.collider.CompareTag("Mirror"))//hit.collider.gameObject.tag == ("Mirror"))
                {
                    if (hit.transform.position + hit.transform.forward != mirrorLoc)
                    {
                        moving    = true;
                        pointToGo = hit.point;

                        rotation  = hit.transform.localEulerAngles;
                        mirrorLoc = hit.transform.position + hit.transform.forward;
                        isMirror  = true;
                    }
                }
                //timer = 0f;
            }
            else if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward /*ray*/,
                                     out hit, 1000, enemyMask))
            {
                //Debug.Log("FUUUUUCK MEEEE");
                if (hit.collider.CompareTag("MeleeEnemy"))//hit.collider.gameObject.tag == ("Mirror"))
                {
                    mEnemy = hit.collider.gameObject.GetComponentInParent <MeleeEnemyController>();
                    mEnemy.SetInactive();
                    if (hit.transform.position + hit.transform.forward * 2 != mirrorLoc)
                    {
                        moving    = true;
                        pointToGo = hit.point + hit.transform.forward * 2;

                        //rotation = hit.transform.localEulerAngles;
                        //transform.localEulerAngles = new Vector3(0, 0, 0) + hit.transform.localEulerAngles;
                        mirrorLoc = hit.transform.position + hit.transform.forward * 2;
                        isMirror  = false;
                    }
                }
                //timer = 0f;
            }
        }

        if (moving)
        {
            transform.position = Vector3.MoveTowards(transform.position, pointToGo, moveSpeed * fixedDeltaTime);
            Time.timeScale     = 0.2f;
        }
        else
        {
            transform.position = mirrorLoc;
        }

        if (health > 0 && Input.GetMouseButtonDown(1))
        {
            MakeMirror();
        }
    }