public override void onStart() { base.onStart(); currentState = monster_2_state.walk; CollHeight = colliderID[0].bounds.extents.y * 2; eye.transform.position = GameFunction.GetGameObjectInChildrenByName(this.gameObject, "Gravity").GetComponent <BoxCollider2D>().bounds.min + new Vector3(Dir == dir.left ? -0.05f : 0.05f, 0.01f, 0); viewDistance_player *= Random.Range(0.6f, 1.4f); //每个单体看见玩家的距离不同 }
void Update() { base._FixedUpdate(); switch (currentState) { case monster_2_state.idle: _time0 += Time.deltaTime; if (isSeePlayer() && _time0 > idleTime / 2) { if (bullet.gameObject.activeSelf == false) { _time0 = 0; currentState = monster_2_state.attack; animator.SetTrigger("attack"); } } if (_time0 > idleTime) { _time0 = 0; currentState = monster_2_state.walk; animator.SetTrigger("walk"); } break; case monster_2_state.attack: if (isFinishPlay()) { currentState = monster_2_state.idle; animator.SetTrigger("idle"); bullet.gameObject.SetActive(true); bullet.gameObject.transform.position = ShootPos.position; bullet.gameObject.transform.parent = null; bullet.velocity = new Vector2(bulletSpeed.x * (Dir == dir.left ? -1 : 1), bulletSpeed.y); } break; case monster_2_state.walk: _walkSpeed.x = walkSpeed.x * (Dir == dir.left ? -1 : 1); _walkSpeed.y = rig.velocity.y; rig.velocity = _walkSpeed; //徘徊 if (isSeePlayer()) { rig.velocity = Vector2.zero; currentState = monster_2_state.idle; animator.SetTrigger("idle"); } break; } if (isGround()) { if (isNearEdge() || NearWall() < 0.2f) //转换方向 { changeDir(Dir == dir.left ? dir.right : dir.left); } } }