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; } }
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; }