private void StopRunning() { if (enemyState == EnemyStateEnum.RUN) { enemyState = EnemyStateEnum.HUNT; } }
// 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; } }
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 } }
/// <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; } }
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; }
void HitCompleteDelegate(tk2dSpriteAnimator sprite, tk2dSpriteAnimationClip clip) { _state = EnemyStateEnum.Walking; if (_state == EnemyStateEnum.Walking) { anim.Play("EnemyWalk"); } else if (_state == EnemyStateEnum.ThrowWeapon) { anim.Play("ThrowWeapon"); } }
void ThrowCompleteDelegate(tk2dSpriteAnimator sprite, tk2dSpriteAnimationClip clip) { _state = EnemyStateEnum.Walking; if (_state == EnemyStateEnum.Walking) { anim.Play("EnemyWalk"); } else if(_state == EnemyStateEnum.Hited) { anim.Play("EnemyHited"); } }
// 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; } }
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); } } }
/// <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; } }
// 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; }
// Use this for initialization void Start() { _EnemyState = EnemyStateEnum.SeesPlayer; }
void OnTriggerEnter(Collider other) { if (other.gameObject == _Target) { _EnemyState = EnemyStateEnum.InRange; } }
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; } } }
void DeadCompleteDelegate(tk2dSpriteAnimator sprite, tk2dSpriteAnimationClip clip) { _state = EnemyStateEnum.Dead; GameControl.instance.EnemyLive--; Destroy(gameObject); }
private void Die() { MainManager.GameManager.ShowEnemyGravestone(gameObject.transform.localPosition); gameObject.SetActive(false); EnemyStateEnum = EnemyStateEnum.DEAD; }