// Use this for initialization protected override void Awake() { base.Awake(); _controller = GetComponent <MeleeEnemyController>(); _stateManager = new MeleeEnemyAiStateManager(this); _characterFinder.OnCharacterFound += OnCharacterFoundHandler; }
public static MeleeEnemyController GetMeleeEnemyControllerFromObject(GameObject obj) { MeleeEnemyController actor = obj.GetComponentInChildren <MeleeEnemyController>(); if (actor == null) { actor = obj.GetComponentInParent <MeleeEnemyController>(); } return(actor); }
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); } } }
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); }
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); }
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); }
private void Start() { if (meleeEnemy) { melee = gameObject.GetComponentInParent <MeleeEnemyController>(); } if (rangedEnemy) { ranged = gameObject.GetComponentInParent <RangedEnemyController>(); } if (kultist) { kk = gameObject.GetComponentInParent <KultistController>(); } }
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); }
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) }
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()); }
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 }
// 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>(); }
// 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(); } }