private void StopRunning()
 {
     if (enemyState == EnemyStateEnum.RUN)
     {
         enemyState = EnemyStateEnum.HUNT;
     }
 }
Esempio n. 2
0
 // Start is called before the first frame update
 void Start()
 {
     rigidbody2d          = GetComponent <Rigidbody2D>();
     DefaultEnemyPosition = transform.localPosition;
     SetDirections();
     EnemyStateEnum = EnemyStateEnum.ALIVE;
 }
 // Start is called before the first frame update
 void Start()
 {
     enemyState     = EnemyStateEnum.HUNT;
     Player         = GameObject.FindWithTag("Player");
     animController = GetComponent <Animator>();
     audioData      = GetComponent <AudioSource>();
     audioData.Pause();
 }
 void Hunt()
 {
     currentEnemySpeed = huntSpeed;
     if (health < attakTreshold && ((transform.localScale.x < 0 && Player.transform.localScale.x < 0) || (transform.localScale.x > 0 && Player.transform.localScale.x > 0)))
     {
         enemyState = EnemyStateEnum.ATTACK;
     }
 }
Esempio n. 5
0
    void Update()
    {
        if (GameManager.gameState == GameStateEnum.GamePlayer)
        {
            #region 敌人开始行动的代码
            switch (enemyState)
            {
            case EnemyStateEnum.ComeOnAnimation:                //开始动画
                ComeOnTheStage();
                return;

            case EnemyStateEnum.Move:                   //移动
                if (rangdomMove == false)
                {
                    moveDistance       = UnityEngine.Random.Range(leftNode.transform.localPosition.x, rightNode.transform.localPosition.x);
                    moveTargetDistance = new Vector3(moveDistance, transform.localPosition.y, transform.localPosition.z);
                    rangdomMove        = true;
                }

                transform.localPosition = Vector3.Lerp(transform.localPosition, moveTargetDistance, moveSpped * Time.deltaTime);


                if (Mathf.Abs(transform.localPosition.x - moveTargetDistance.x) < distancePosition)
                {
                    moveTime    = 0;
                    rangdomMove = false;
                    enemyState  = EnemyStateEnum.Emission;
                }

                break;

            case EnemyStateEnum.Emission:           //射击
                moveTime += Time.deltaTime;         //在射击的时候,移动才计时

                for (int i = 0; i < enemyEmission.emissionNode.Length; i++)
                {
                    if (emissionMSTimer[i] >= enemyEmission.emissionNode[i].speedMS)
                    {
                        enemyEmission.emissionNode[i].EmissionBullet();
                        emissionMSTimer[i] = 0;
                    }
                }
                break;
            }

            for (int i = 0; i < emissionMSTimer.Length; i++)
            {
                emissionMSTimer[i] += Time.deltaTime;
            }
            if (moveTime >= moveTimer)
            {
                enemyState = EnemyStateEnum.Move;
            }
            #endregion
        }
    }
Esempio n. 6
0
    /// <summary>
    /// 出场动画
    /// </summary>
    public void ComeOnTheStage()
    {
        transform.localPosition = Vector3.Lerp(transform.localPosition, enterSceneTarget.localPosition, enterSpeed);

        if (Vector3.Distance(transform.localPosition, enterSceneTarget.localPosition) < 2f)
        {
            bodyBox.enabled = true;
            enemyState      = EnemyStateEnum.Emission;
        }
    }
Esempio n. 7
0
        IEnumerator GetGrenadeDamage()
        {
            EnemyStateEnum currentEnemyState = enemyState.StateOfEnemy;

            enemyState.StateOfEnemy = EnemyStateEnum.Damaging;
            rb.AddRelativeForce(0, 0, 1 /*Insert grenade Knockback*/, ForceMode.Impulse);
            hs.DecreaseHealth(grenade.ItemData.grenadeDamage);
            yield return(new WaitForSeconds(0.1f));

            enemyState.StateOfEnemy = currentEnemyState;
        }
Esempio n. 8
0
 void HitCompleteDelegate(tk2dSpriteAnimator sprite, tk2dSpriteAnimationClip clip)
 {
     _state = EnemyStateEnum.Walking;
     if (_state == EnemyStateEnum.Walking)
     {
         anim.Play("EnemyWalk");
     }
     else if (_state == EnemyStateEnum.ThrowWeapon)
     {
         anim.Play("ThrowWeapon");
     }
 }
Esempio n. 9
0
    void ThrowCompleteDelegate(tk2dSpriteAnimator sprite, tk2dSpriteAnimationClip clip)
	{
        _state = EnemyStateEnum.Walking;
		if (_state == EnemyStateEnum.Walking)
		{
			anim.Play("EnemyWalk");
		}
		else if(_state == EnemyStateEnum.Hited)
		{
			anim.Play("EnemyHited");
		}
	}
Esempio n. 10
0
	// Use this for initialization
	void Start () 
	{
		anim = GetComponent<tk2dSpriteAnimator>();
        _state = EnemyStateEnum.Walking;
		//isWalk = false;
		m_transform = transform;
		//isThrow = false;
        //GameObject.Find("MyRock");
		Invoke("ThrowWeapon",throwRate);
	
	
	}
 void CheckTargetPosition(GameObject target)
 {
     if (DetectDistance(target) > _viewDistance) {
         _EnemyState = EnemyStateEnum.Idle;
     }
     else if (_viewDistance > DetectDistance(target) && DetectDistance(target) > _attackDistance) {
         _EnemyState = EnemyStateEnum.SeesPlayer;
     }
     else if (_attackDistance > DetectDistance(target)){
         _EnemyState = EnemyStateEnum.InRange;
     }
 }
Esempio n. 12
0
        IEnumerator GetDamage()
        {
            EnemyStateEnum currentEnemyState = enemyState.StateOfEnemy;

            enemyState.StateOfEnemy = EnemyStateEnum.Damaging;
            rb.AddRelativeForce(0, 0, 1 /*Insert weapon Knockback*/, ForceMode.Impulse);
            hs.DecreaseHealth(playerInventoryManager.SelectedWeapon.ContainedWeapon.ItemData.weaponDamage);
            if (!hs.IsAlive)
            {
                OnDeath();
            }
            yield return(new WaitForSeconds(0.1f));

            enemyState.StateOfEnemy = currentEnemyState;
        }
    private void OnTriggerExit(Collider other)
    {
        if (other.transform.gameObject.layer == 12)
        {
            if (enemyState == EnemyStateEnum.INLIGHT)
            {
                enemyState = EnemyStateEnum.HUNT;
            }

            if (animController.GetBool("Hurting") == true)
            {
                animController.SetBool("Hurting", false);
            }
            audioData.Pause();
        }
    }
    private void OnTriggerStay(Collider other)
    {
        if (other.transform.gameObject.layer == 12)     // the enemy is in light

        {
            if (enemyState == EnemyStateEnum.HUNT || enemyState == EnemyStateEnum.ATTACK)
            {
                enemyState             = EnemyStateEnum.INLIGHT;
                lightAttackStartHealth = health;
                if (animController.GetBool("Hurting") == false)
                {
                    animController.SetBool("Hurting", true);
                }
                audioData.UnPause();
            }

            health--;

            if (lightAttackStartHealth - health >= healthPerLightSession)
            {
                enemyState = EnemyStateEnum.RUN;
                Invoke("StopRunning", runAwayTime);
            }

            if (health < 1)
            {
                enemyState = EnemyStateEnum.DEAD;
                Die();
            }
        }
        else if (other.transform.gameObject.layer == 9)
        {
            enemyState = EnemyStateEnum.HUNT;
            Debug.Log(other.name);
            if (other.transform.gameObject.GetComponent <PlayerController>().playerIsAlive)      // enemy caught player
            {
                other.transform.gameObject.GetComponent <PlayerController>().Defeath();
            }
            if (animController.GetBool("Hurting") == true)
            {
                animController.SetBool("Hurting", false);
            }
        }
    }
Esempio n. 15
0
    /// <summary>
    /// 角色复活
    /// </summary>
    public void RoleRevive()
    {
        hp = 2;
        deadNode.SetActive(false);
        reviveNode.SetActive(true);
        this.transform.parent.gameObject.transform.position = roleDeadPosition.transform.position;
        state = EnemyStateEnum.ComeOnAnimation;
        this.transform.parent.gameObject.SetActive(true);

        Transform obj = null;

        //重置死亡动画播放
        for (int i = 0; i < deadNode.transform.childCount; i++)
        {
            obj = deadNode.transform.GetChild(i);
            obj.gameObject.SetActive(true);
            obj.GetComponent <UISprite>().enabled = false;
        }
    }
Esempio n. 16
0
	// Update is called once per frame
	void ThrowWeapon()
	{
		//isWalk = false;
		//anim.playAutomatically = false;
        _state = EnemyStateEnum.ThrowWeapon;
		anim.Play("EnemyThrow");

		//anim.animationCompleteDelegate =  ;
		anim.AnimationCompleted = ThrowCompleteDelegate;
        
		GameObject obj = (GameObject)Instantiate(weapon,m_transform.position,Quaternion.identity);
        //weapon.rigidbody.AddRelativeForce(throwDirection * 5000f);
        //obj.rigidbody.AddRelativeForce(new Vector3(-50, 0, 0), ForceMode.Impulse);
        obj.rigidbody.AddRelativeForce(new Vector3(-5.0f, 4.0f, 0.0f), ForceMode.Impulse);
        //obj.rigidbody.velocity = obj.transform.right * -3;
		Invoke("ThrowWeapon",throwRate);
		//isWalk = true;


	}
Esempio n. 17
0
 // Use this for initialization
 void Start()
 {
     _EnemyState = EnemyStateEnum.SeesPlayer;
 }
Esempio n. 18
0
 void OnTriggerEnter(Collider other)
 {
     if (other.gameObject == _Target) {
         _EnemyState = EnemyStateEnum.InRange;
     }
 }
Esempio n. 19
0
	void OnTriggerEnter(Collider other)
	{
        Rock rock = other.GetComponent<Rock>();
        //Debug.Log(this.life);
		if(other.tag == "weapon" && rock.enWeapon == 0)
		{
            _state = EnemyStateEnum.Hited;
			anim.Play("EnemyHited");
            anim.AnimationCompleted = HitCompleteDelegate;
			
			this.life = life - rock.power;
            //Debug.Log(life.ToString());
			if(life <= 0)
			{
                anim.Play("EnemyDead");
                anim.AnimationCompleted = DeadCompleteDelegate;
			}
            
		}
	}
Esempio n. 20
0
    void DeadCompleteDelegate(tk2dSpriteAnimator sprite, tk2dSpriteAnimationClip clip)
    {
        _state = EnemyStateEnum.Dead;
		GameControl.instance.EnemyLive--;
        Destroy(gameObject);
 
    }
Esempio n. 21
0
 private void Die()
 {
     MainManager.GameManager.ShowEnemyGravestone(gameObject.transform.localPosition);
     gameObject.SetActive(false);
     EnemyStateEnum = EnemyStateEnum.DEAD;
 }