private void SetMovingMode(MovingMode mode)
    {
        // Exit state
        switch (movingMode)
        {
        case MovingMode.stunned:
            _common.SetAnimationMode(CommonBehavior.AnimationMode.none);
            break;
        }
        movingMode = mode;

        // Entry state
        switch (movingMode)
        {
        case MovingMode.stunned:
            tmp_stunDuration = stunDuration;
            _common.SetAnimationMode(CommonBehavior.AnimationMode.stunned);
            break;
        }
    }
示例#2
0
    private void Kick()
    {
        isKicking = true;

        _common.SetAnimationMode(CommonBehavior.AnimationMode.kicking);
        for (float angle = -35; angle < 35; angle++)
        {
            float   x   = Mathf.Sin(angle);
            float   y   = Mathf.Cos(angle);
            Vector3 dir = new Vector3(x, 0, y);
            dir += transform.forward;

            RaycastHit[] hitFronts = Physics.RaycastAll(transform.position, dir, kickRange);

            foreach (RaycastHit hitFront in hitFronts)
            {
                GameObject hit = hitFront.collider.gameObject;

                // kick player
                if (hit.GetComponent <PlayerBehavior>().enabled)
                {
                    Debug.Log("player");
                    hit.GetComponent <PlayerBehavior>().PushedAway(transform.position, kickForce - 1);
                    hit.GetComponent <PlayerBehavior>().Stunned();
                }
                // kick NPC
                else if (hit.GetComponent <NPCBehavior>().enabled)
                {
                    Debug.Log("NPC");
                    hit.GetComponent <NPCBehavior>().PushedAway(transform.position, kickForce);
                    hit.GetComponent <NPCBehavior>().Stunned();
                }
            }
        }
        tmp_kickCoolDownTime = kickCoolDownTime;

        isKicking = false;
    }