} // end DoBeforeEntering public void Reason() { if (false == character.avatar.isPlaying) { character.fsm.PerformTransition("wait"); return; } // end if if (isFinish) { return; } // end if AnimationState state = character.avatar.GetCurrentState(anim); if (state.normalizedTime < 0.5f) { return; } // end if isFinish = true; DamageData damage = new DamageData(character); damage.CertainCrit(); Arrow arrow = InstanceMgr.GetObjectManager().GetGameObject <Arrow>(Arrow.poolName); arrow.transform.position = character.position + Vector3.up * 0.8f; arrow.transform.rotation = character.rotation; arrow.SetDamage(damage); arrow.gameObject.SetActive(true); } // end Reason