Example #1
0
 private void Awake()
 {
     enemyBehaviour = GetComponent <EnemyBehaviour>();
     navMeshAgent   = GetComponent <NavMeshAgent>();
     enemyMoveInfo  = enemyData.enemyInfo.moveInfo;
     // attackDisInfo = enemyData.enemyInfo.attackDisInfo;
     longAttackEnemy = this;
 }
Example #2
0
 // Start is called before the first frame update
 void Start()
 {
     playerHealth.text = "Health: 100";
     foe       = enemy.GetComponent <EnemyBehaviour>();
     character = player.GetComponent <PlayerBehaviour>();
     buffed    = character;
     debuffed  = foe;
 }
Example #3
0
 public void OnTriggerExit2D(Collider2D other)
 {
     if (other.tag == "Enemy")
     {
         target    = null;
         CanAttack = false;
     }
 }
 void Start()
 {
     startAngle = transform.eulerAngles;
     behaviour  = transform.parent.GetComponent <EnemyBehaviour>();
     type       = behaviour.type;
     anim       = GetComponent <Animator>();
     sprite     = GetComponent <SpriteRenderer>();
 }
Example #5
0
    public override void SpecialCommand(List <GameObject> enemies)
    {
        EnemyBehaviour enemy = enemies [0].GetComponent <EnemyBehaviour> ();

        enemiesAttacking = enemies;
        state            = STATE.ONSPECIAL;
        anim.SetInteger("State", 2);
    }
Example #6
0
 public static void DestroyEnemy(EnemyBehaviour enemy)
 {
     if (enemy != null)
     {
         GetPool(enemy.Def).ReturnObject(enemy.gameObject);
         DebugPool(enemy.Def);
     }
 }
    private void MakeBleeding(EnemyBehaviour enemy)
    {
        GameObject bleeding;
        Vector3    damagePosition = new Vector3(enemy.gameObject.transform.position.x, enemy.gameObject.transform.position.y + 1f, enemy.gameObject.transform.position.z);

        bleeding = Instantiate(_bleedingPrefab, damagePosition, Quaternion.identity, enemy.transform);
        DestroyBleeding(bleeding);
    }
Example #8
0
 private bool CheckCost(EnemyBehaviour enemy)
 {
     if (enemy.SpawnCost <= spawnBudget)
     {
         return true;
     }
     return false;
 }
Example #9
0
 public void TriggerHit()
 {
     if (behaviour != EnemyBehaviour.Catching)
     {
         time      = 0;
         behaviour = EnemyBehaviour.Catching;
     }
 }
Example #10
0
    // Update is called once per frame
    void Update()
    {
        Vector3 startPosition = startObject.transform.position; //startposition of line is at weapon

        startPosition.z = 0;
        line.SetPosition(0, startPosition);

        RaycastHit hit;

        if (Physics.Raycast(startPosition, transform.up, out hit, 100)) //raycast to check for enemies in laser's path
        {
            Vector3    endPosition;
            GameObject hitObject = hit.collider.gameObject;              //get hit object
            if (hitObject != null && hitObject.tag == targetTag)         //if an object was hit and object's tag is target tag ("Enemy")
            {
                endPosition = hit.point;                                 //end point of line is where hit took place
                if (lastHitObject == null || lastHitObject != hitObject) //if laser didn't already hit something, or object that was hit last is not this object (prevent damaging enemy every update call)
                {
                    EnemyBehaviour enemy = hitObject.GetComponent <EnemyBehaviour>();
                    if (enemy != null && !enemy.IsOffScreen())                        //if enemy isn't null and enemy is not off-screen
                    {
                        enemy.TakeDamage(damage, hit.point);                          //apply damage
                        DifficultyManager.instance.SetHitPct(true, WeaponType.Laser); //hit!
                    }
                    else
                    {
                        endPosition = startPosition + (transform.up * 100);            //set end position of line some point far away in up direction
                        DifficultyManager.instance.SetHitPct(false, WeaponType.Laser); //miss!
                    }
                }
                lastHitObject = hitObject;
            }
            else //object that was hit does not have correct tag
            {
                endPosition = startPosition + (transform.up * 100); //set end position of line some point far away in up direction
                DifficultyManager.instance.SetHitPct(false, WeaponType.Laser); //miss!
            }
            endPosition.z = 0;
            line.SetPosition(1, endPosition);
        }
        else //nothing hit by raycast
        {
            Vector3 endPosition = startPosition + (transform.up * 100); //set end position of line some point far away in up direction
            endPosition.z = 0;
            line.SetPosition(1, endPosition);
        }

        if (ttl.GetTimer() <= 0)
        {
            DisableInPool();

            ttl.Reset();

            line.SetPosition(0, Vector3.one * 1000);
            line.SetPosition(1, Vector3.one * 1000);
            lastHitObject = null;
        }
    }
Example #11
0
 private void Awake()
 {
     visualMesh        = transform.GetChild(0).GetComponent <Renderer>();
     physicMesh        = transform.GetChild(1).GetComponent <Rigidbody>();
     attackMesh        = transform.GetChild(2).GetComponent <EnemyAttackCube_Intepolation>();
     attackMesh.parent = this;
     myCollider        = GetComponent <Collider>();
     enemyBehaviour    = transform.root.GetComponent <EnemyBehaviour>();
 }
Example #12
0
    private void OnTriggerEnter(Collider other)
    {
        EnemyBehaviour enemy = other.GetComponent <EnemyBehaviour>();

        if (enemy != null)
        {
            enemy.TookDamage(damage);
        }
    }
Example #13
0
    private void ShowDamageInfo(EnemyBehaviour enemy)
    {
        GameObject damageInfo = Instantiate(_damageInfoTextPrefab, enemy.transform.GetChild(0).transform.position, Quaternion.identity, enemy.transform.GetChild(0).transform);

        damageInfo.transform.LookAt(_player.gameObject.transform);
        damageInfo.transform.Rotate(Vector3.up, 180f);
        damageInfo.GetComponent <Text>().text = "-" + _player.damage.ToString();
        DestroyDamageInfo(damageInfo);
    }
Example #14
0
    // Note: Necessary to include any physicaly related behavior in fixed update
    void FixedUpdate()
    {
        if(!m_isFrozen)
        {
            if(m_enemyBehaviour == EnemyBehaviour.patrolling)
            {
                if(m_sight.gameObjectsOnSight.Contains(GameManager.Instance.playerToy))
                {
                    m_enemyBehaviour = EnemyBehaviour.chasing;
                    m_enemyAnimator.SetBool("IsRunning", true);
                    m_enemyAudio.clip = ml_actionSounds["Running"];
                    m_enemyAudio.Play();
                }
                else
                {
                    transform.Rotate(0f,2f,0f);
                }
            }
            else
            {
                if(Vector3.Distance(transform.position, GameManager.Instance.playerToy.transform.position) < m_attackRange)
                {
                    if(Time.time - m_chaseTimer > m_attackSpeed)
                    {
                        m_chaseTimer = 0f;
                        m_enemyAnimator.SetTrigger("Attack");
                        GameManager.Instance.playerToy.SendMessage("malusPower");
                    }
                    else
                    {
                        m_chaseTimer+= Time.deltaTime;
                    }
                }
                else
                {
                    transform.LookAt(GameManager.Instance.playerToy.transform.position);
                    transform.Rotate(new Vector3(0f,1f,0f), 90); // Offset because of character wrong orientation

                    // Move toward player
                    Vector3 newPosition = GameManager.Instance.playerToy.transform.position - transform.position;

                    // Take physics into account
                    rigidbody.MovePosition(rigidbody.position +  m_chaseSpeed * Time.deltaTime * newPosition);

                }

                // If player disappears
                if(!m_sight.gameObjectsOnSight.Contains(GameManager.Instance.playerToy))
                {
                    m_enemyBehaviour = EnemyBehaviour.patrolling;
                    m_enemyAnimator.SetBool("IsRunning", false);
                    m_enemyAudio.Pause();
                }
            }

        }
    }
Example #15
0
 void OnTriggerStay2D(Collider2D other)
 {
     //Ef player er inni í trigger með enemy tag þá ræðst enemy á player
     if (other.CompareTag("Enemy"))
     {
         EnemyBe = other.gameObject.GetComponent <EnemyBehaviour>();
         EnemyBe.hit();
     }
 }
Example #16
0
 public void OnTriggerStay2D(Collider2D collision)
 {
     if (collision.CompareTag("Enemy"))
     {
         Debug.Log("it did collide tho");
         EnemyBehaviour EnemyRef = collision.gameObject.GetComponent <EnemyBehaviour>();
         EnemyRef.CurrentHP -= .3f;
     }
 }
Example #17
0
    public void OnSceneChange(Scene scene, LoadSceneMode mode)
    {
        EnemyBehaviour tmp = FindObjectOfType <EnemyBehaviour>();

        if (tmp)
        {
            slender = tmp.transform;
        }
    }
Example #18
0
        public void Setup()
        {
            enemy = MonoBehaviour.Instantiate(
                Resources.Load <GameObject>("Prefabs/Enemy"));
            ec = enemy.GetComponent <EnemyBehaviour>();

            ec.InitStats();
            ec.initActions();
        }
Example #19
0
    internal void EnemyDie(EnemyBehaviour enemyBehaviour)
    {
        EnemiesInGame.Remove(enemyBehaviour);
        Gold += enemyBehaviour.Gold;

        DropItem();

        Destroy(enemyBehaviour.gameObject);
    }
 void Start()
 {
     enemyB       = GetComponent <EnemyBehaviour>();
     sManager     = GameManager.instance.sManager;
     tpc          = GameManager.instance.tpc;
     altWeapons   = GameManager.instance.altWeapons;
     healthScript = GameManager.instance.health;
     shield       = GameObject.FindGameObjectWithTag("Shield").GetComponent <Animator>();
 }
Example #21
0
    void Damage(Transform enemy)
    {
        EnemyBehaviour e = enemy.GetComponent <EnemyBehaviour>();

        if (e != null)
        {
            e.TakeDamage(damage);
        }
    }
 public void GetHit(EnemyBehaviour enemy)
 {
     life -= enemy.damage;
     controller.worldUI.PresentDamageText(enemy.damage, transform.position);
     GlobalController.instance.eventRegistery.ActivateEvent(EEventRegistrationType.AVATAR_HIT);
     if (life <= 0) {
         avatarKilled();
     }
 }
    // Use this for initialization
    void Start()
    {
        this.enemyScript = GameObject.Find("enemy").GetComponent<EnemyBehaviour>();
        targetRotation = transform.rotation;
        rBody = GetComponent<Rigidbody> ();
        forwardInput = turnInput = 0;

        anim = GetComponent<Animator> ();
    }
Example #24
0
    public override bool IsValid(EnemyBehaviour enemyBehaviour, float time)
    {
        if (time > _totalTime)
        {
            return(true);
        }

        return(false);
    }
Example #25
0
    // Update is called once per frame

    void Start()
    {
        initalPos = new Vector3(0, -100, 0);
        EnemyBehaviour EnemyController = myEnemy.GetComponent <EnemyBehaviour>();

        rB = GetComponent <Rigidbody>();
        rB.transform.position = initalPos;
        fireIn = fireRate;
    }
Example #26
0
 void Start()
 {
     healthBar          = GetComponentInChildren <Slider> ();
     score              = GameObject.Find("UICanvas").GetComponent <ScoreController> ();
     enemy              = GetComponent <EnemyBehaviour> ();
     healthBar.maxValue = health;
     healthBar.value    = health;
     maxHealth          = health;
 }
    protected override void SetReferences()
    {
        damageable     = instance.GetComponent <Damageable>();
        enemyBehaviour = instance.GetComponent <EnemyBehaviour>();

        damageable.OnDie.AddListener(ReturnToPoolEvent);

        m_RemoveWait = new WaitForSeconds(objectPool.removalDelay);
    }
Example #28
0
 void Awake()
 {
     _damageable   = GetComponent <Damageable>();
     _behaviour    = GetComponent <EnemyBehaviour>();
     _health       = GetComponent <EnemyHealth>();
     _player       = GameObject.FindWithTag("Player").GetComponent <PlayerController>();
     _playerHealth = _player.GetComponent <PlayerHealth>();
     _chadistAI    = GameObject.FindWithTag("Chadist AI").GetComponent <ChadistAI>();
 }
    void Start () {
        _isScary = true;
        _transform = transform;
        _fearZoneRadius = _transform.localScale.x * 0.5f;
        _behaviour = _transform.parent.GetComponent<EnemyBehaviour>();
		if (!_behaviour)
			Debug.Log ("piwi");
        _conqueredPercentage = 0.0f;
	}
Example #30
0
    void Spawn()
    {
        int spawnPointIndex = Random.Range(0, spawnPoints.Length);

        Instantiate(enemy, spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation);
        EnemyBehaviour spawnedScript = enemy.GetComponent <EnemyBehaviour>();

        spawnedScript.Target = objectivepoint;
    }
Example #31
0
    private void HandleEnemyBehavior()
    {
        EnemyBehaviour enemy = GetComponent <EnemyBehaviour>();

        if (currentHealth <= 0)
        {
            enemy.EnemyDeathAnimation();
        }
    }
Example #32
0
 public void Up()
 {
     Debug.Log("Up");
     path.stopped = false;
     striked      = false;
     checking     = false;
     timer        = recoverTime;
     behaviour    = EnemyBehaviour.Idle;
 }
Example #33
0
 private void Awake()
 {
     eB               = GetComponent <EnemyBehaviour>();
     iWA.interacted  += eB.AngerTrigger;
     iWA.interacted  += Angered;
     iWA2.interacted += eB.AngerTrigger;
     iWA2.interacted += Angered;
     iWA2.interacted += BellSound;
 }
Example #34
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.gameObject.tag == "Enemy")
     {
         EnemyBehaviour enemyBehaviour = collision.gameObject.GetComponent <EnemyBehaviour>();
         enemyBehaviour.isImmune      = true;
         enemyBehaviour.advanceSpeed *= accerlateFactor;
     }
 }
Example #35
0
    void getKeyboardInputs()
    {
        if (Input.GetKeyDown(KeyCode.P))
        {
            MoveOrPatrolBtnClicked();
        }
        if (Input.GetKeyDown(KeyCode.N))
        {
            FindNextClicked();
        }

        if (Input.GetKeyDown(KeyCode.I))
        {
            if (multipleEnemiesSelected)
            {
                createNewFlock();
                if (multipleEnemiesSelected)
                {
                    foreach (EnemyBehaviour en in flocks[flocks.Count - 1].enemies)
                    {
                        en.clearAllFutur();
                        en.currentState = EnemyBehaviour.State.Idle;
                    }
                }
                else if (currentlyControlledEnemy != null)
                {
                    currentlyControlledEnemy.clearAllFutur();
                    currentlyControlledEnemy.currentState = EnemyBehaviour.State.Idle;
                }
            }
            else
            {
                if (currentlyControlledEnemy != null)
                {
                    currentlyControlledEnemy.clearAllFutur();
                    currentlyControlledEnemy.currentState = EnemyBehaviour.State.Idle;
                }
            }
        }
        if (Input.GetKeyDown(KeyCode.LeftControl))
        {
            multipleEnemiesSelected  = true;
            currentlyControlledEnemy = null;
        }
        else if (Input.GetKeyUp(KeyCode.LeftControl))
        {
            if (newFlock.Count != 0)
            {
                createNewFlock();
            }
            else
            {
                multipleEnemiesSelected = false;
            }
        }
    }
Example #36
0
 void Start()
 {
     playerHealth = GameObject.FindGameObjectWithTag("PlayerHealthUI").GetComponent<PlayerHealth>();
     enemyHealth = GetComponent<EnemyBehaviour>();
     if (gameObject.tag == "Player") {
         maxHealth = playerHealth.GetHealth;
     } else if (enemyHealth != null) {
         maxHealth = enemyHealth.Health;
     }
 }
Example #37
0
 protected void spawnMob(EnemyBehaviour enemy, float x, float z)
 {
     EnemyBehaviour newEnemy = Instantiate(enemy);
     manager.AddMobReference(newEnemy);
     newEnemy.transform.position = new Vector3(
         x,
         0,
         z
     );
 }
Example #38
0
    private void Start()
    {
        navMeshAgent = GetComponent<NavMeshAgent>();
        behaviour = GetComponent<EnemyBehaviour>();
        stats = GetComponent<EnemyScript>();

        navMeshAgent.speed *= speedMultiplier;
        behaviour.attackDamage *= damageMultiplier;
        stats.MaxHealth *= healthMultiplier;
    }
Example #39
0
    void OnTriggerEnter2D(Collider2D othercollider)
    {
        if (othercollider.tag == "enemy")
        {
            hit_enemy = othercollider.gameObject;
            enemy_script = hit_enemy.GetComponent<EnemyBehaviour>();
            finaldamage = (int)Mathf.Clamp (initialdamage + animdamagemodifier, 0, Mathf.Infinity);

            if (enemy_script.health >= 1)
            {
                enemy_script.health -= finaldamage;
            }
            this.gameObject.Recycle();
        }
        //Debug.Log("hit"+othercollider);
    }
Example #40
0
    void Start () 
    {
		_enemyBehaviour = GetComponent<EnemyBehaviour>();

        if (!_enemyBehaviour)
        {
            _enemySniper = GetComponent<EnemySniper>();
        }
        else if (!_enemySniper)
        {
            _enemyBigGuy = GetComponent<EnemyBigGuy>();
        }
        else if (!_enemyBigGuy)
        {
            _enemySmallGuy = GetComponent<EnemySmallGuy>();
        }
    }
	void FixedUpdate()
	{	
		//vind de dichts bij zijnde enemy
		this.closestEnemy = this.findClosestEnemy();
		//teken een lijn naar de closest enemy in rood
		//bereken de projetile trajectory
		Vector2 trajectory = calulateTrajectory();
		if (delay < 0)
		{
			delay = stats.delayTime;
			this.Shoot(trajectory);
			
		}
		else
		{
			delay -= Time.fixedDeltaTime;
		}
	}
Example #42
0
    public void Initialize(int a)
    {
        _currentHealth = StartingHealth;
        int speedMod = 1; //Speed modifier for later use
        dummy = GameObject.FindGameObjectWithTag("Player");
        speed = speed * speedMod;
        direction = Vector3.left * a;

        int i = Random.Range(0, 2);
        if (i == 0)
        {
            enemyBehaviour += WavyMove;
            //enemyBehaviour += ShootHoming;
            enemyBehaviour += ShootRandom;
            int j = Random.Range(0, 3);
            switch (j)
            {
                case 0:
                    firingPattern += TracerFire;
                    break;

                case 1:
                    firingPattern += VolleyFire;
                    break;
                case 2:
                    firingPattern += SpiralFire;
                    break;
            }
        }
        else
        {
            enemyBehaviour += HomingMove;
            SpriteRenderer sprite = GetComponentInChildren<SpriteRenderer>();
            sprite.sprite = meleeSprite;
            //enemyBehaviour += ShootHoming;
        }
    }
Example #43
0
 public void RemoveEnemy(EnemyBehaviour enemyToRemove)
 {
     enemyList.Remove(enemyToRemove);
 }
Example #44
0
	public void ChangeBehaviour(EnemyBehaviour behaviour)
	{
		if (currentBehaviour != null)
			currentBehaviour.End ();
		currentBehaviour = behaviour; 
	}
Example #45
0
    /* -------------------------------------------- Pause during swapping ---------------------- */
    void freeze()
    {
        // Don't move !
        m_isFrozen = true;
        m_enemyBehaviour = EnemyBehaviour.patrolling;

        // Interrupt any parachute fall
        interrupt();

        if (m_enemyAnimator)
        {
            m_enemyAnimator.SetBool("IsRunning", false);
            m_enemyAnimator.SetTrigger("Freeze");
        }
    }
 void FixedUpdate()
 {
     //vind de dichts bij zijnde enemy
     this.closestEnemy = this.findClosestEnemy();
     //teken een lijn naar de closest enemy in rood
     drawLineTo(this.closestEnemyLine, Gunpoint.transform.position, closestEnemy.transform.position);
     //bereken de projetile trajectory
     Vector2 trajectory = calulateTrajectory();
     if (delay < 0)
     {
         delay = delayTime;
         this.Shoot(trajectory);
     }
     else
     {
         delay -= Time.fixedDeltaTime;
     }
 }
 void Start()
 {
     this.closestEnemy = this.findClosestEnemy();
     this.closestEnemyLine = this.makeLine(Vector2.up, Color.red);
     this.aimLine = this.makeLine(Vector2.zero, Color.yellow);
     delay = delayTime;
 }
Example #48
0
    void TargetAquisition()
    {
        bool noTarget = true;
        GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
        foreach(GameObject tempEnemy in enemies)
        {
            var enemy = tempEnemy.GetComponent<EnemyBehaviour>();
            float tempTargetDistance = Vector3.Distance(tempEnemy.transform.position, targetDirection + controller.GetPosition());
            if(	tempTargetDistance <= 4.0f && (tempTargetDistance <= targetDistance || targetDistance == null))
            {
                if(targetEnemy != enemy && !enemy.IsDead())
                {
                    targetEnemy = enemy;
                    enemy.SetTargeted();
                    targetDistance = tempTargetDistance;
                    hasTarget = true;
                }
                noTarget = false;

            }
            else if(tempTargetDistance > 4.0f || tempTargetDistance > targetDistance || targetDistance == null)
            {
                enemy.SendMessage("SetUntargeted");
            }
        }
        if(noTarget == true)
        {
            hasTarget = false;
        }

        if(hasTarget == false)
        {
            targetDistance = null;
            targetEnemy = null;
        }
    }
	void Start () 
    {
        GameObject playerObject = gameObject.transform.parent.gameObject;
        enemyBehaviour = playerObject.GetComponent<EnemyBehaviour>();
	}
 public void RemoveMobReference(EnemyBehaviour enemy)
 {
     currentEnemies.Remove(enemy);
 }
Example #51
0
	// Use this for initialization
	void Start () {
        behave = gameObject.transform.parent.gameObject.GetComponent<EnemyBehaviour>();
	}
    void Start()
    {
        if (gameObject.tag == "Police")
        {
            viewRange = 38;
        }

        myBehaviour = GetComponent<EnemyBehaviour>();

        anglesLArm = LArm.GetComponent<SimpleCCD>();
        anglesRArm = RArm.GetComponent<SimpleCCD>();
        anglesLFoot = LFoot.GetComponent<SimpleCCD>();
        anglesRFoot = RFoot.GetComponent<SimpleCCD>();

        startX = transform.localPosition.x;

        myRigidbody2D = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
    }
    void initEnemyDoor(EnemyBehaviour enemy)
    {
        List<GameObject> doors = Toolbox.getItemInLayer(10);
        int index = 0;
        Vector2 enemyPos = enemy.gameObject.transform.position;

        for (int i = 0; i < doors.Count; ++i)
        {
            Vector2 doorPos = doors[i].transform.position;
            Vector2 minDoorPos = doors[index].transform.position;

            float distPlayerMinDoor = Vector2.Distance(enemyPos, minDoorPos);
            float distPlayerDoor = Vector2.Distance(enemyPos, doorPos);

            if (distPlayerDoor < distPlayerMinDoor)
            {
                index = i;
            }
        }

        enemy.m_door = doors[index];
    }
Example #54
0
    /* -------------------------------------------- Pause during swapping ---------------------- */
    void freeze()
    {
        m_isFrozen = true;
        m_enemyBehaviour = EnemyBehaviour.patrolling;

        // Freeze animation
        if (m_enemyAnimator)
        {
            m_enemyAnimator.SetBool("IsRunning", false);
            m_enemyAnimator.SetTrigger("Freeze");
        }

        // Freeze navmesh
        // Note: Why do I need to verify this ?
        if(this != null && gameObject != null)
        {
            NavMeshAgent navigation = GetComponent<NavMeshAgent>();
            if(navigation)
            {
                navigation.enabled = false;
            }
        }
    }
Example #55
0
    // Note: Necessary to include any physicaly related behavior in fixed update
    void FixedUpdate()
    {
        if(!m_isFrozen)
        {
            if(m_enemyBehaviour == EnemyBehaviour.patrolling)
            {
                if(m_sight.gameObjectsOnSight.Contains(GameManager.Instance.playerToy))
                {
                    m_enemyBehaviour = EnemyBehaviour.chasing;
                    m_enemyAnimator.SetBool("IsRunning", true);
                    m_enemyAudio.clip = ml_actionSounds["Running"];
                    m_enemyAudio.Play();
                }
                else
                {
                    transform.Rotate(0f,2f,0f);
                }
            }
            else
            {
                if(Vector3.Distance(transform.position, GameManager.Instance.playerToy.transform.position) < m_attackRange)
                {
                    if(Time.time-m_attackTimer > m_attackSpeed)
                    {
                        m_attackTimer = 0f;
                        m_enemyAnimator.SetTrigger("Attack");
                        GameManager.Instance.playerToy.SendMessage("malusPower");
                    }
                    else
                    {
                        m_attackTimer+= Time.deltaTime;
                    }
                }
                else
                {
                    transform.LookAt(GameManager.Instance.vrHeadNode.transform.position);

                    // Offset because of character wrong orientation
                    // TODO: might need a cleaner modification of the mesh/prefab
                    transform.Rotate(new Vector3(0f,1f,0f), 90);

                    // Special navmesh agent
                    NavMeshAgent navigation = GetComponent<NavMeshAgent>();
                    if(navigation)
                    {
                        navigation.SetDestination(GameManager.Instance.vrHeadNode.transform.position);
                    }
                }

                // The playerToy collider is used to verify if enemies can see you
                if(!m_sight.gameObjectsOnSight.Contains(GameManager.Instance.playerToy))
                {
                    m_enemyBehaviour = EnemyBehaviour.patrolling;
                    m_enemyAnimator.SetBool("IsRunning", false);
                    m_enemyAudio.Pause();
                }
            }

        }
    }
 public void AddMobReference(EnemyBehaviour enemy)
 {
     currentEnemies.Add(enemy);
     enemy.SetProperties(this);
 }
 void spawn(EnemyBehaviour enemy)
 {
     float x = Random.Range(leftBoundry.position.x, rightBoundry.position.x);
     float z = Random.Range(lowerBoundry.position.z, upperBoundry.position.z);
     spawnMob(enemy, x, z);
 }
	void Start()
	{
		
		this.closestEnemy = this.findClosestEnemy();
		delay = stats.delayTime;
	}
 void Awake()
 {
     me = GetComponent<EnemyBehaviour>();
 }