示例#1
0
    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); //每个单体看见玩家的距离不同
    }
示例#2
0
    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);
            }
        }
    }