¡¡EffectManager ¥¯¥é¥¹¤Ï¡¢
¥·¥ó¥°¥ë¥È¥ó¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢
¥¢¥µ¥¤¥ó¤ä¥¯¥é¥¹¤Î»²¾È¤ÏÉÔÍסÊGetComponent ÉÔÍסˤǡ¢¤¤¤º¤ì¤Î¥¹¥¯¥ê¥×¥È¤«¤é¤Ç¤â¼«Í³¤Ë»²¾È¤·¤Æ¡¢¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
¡¡¥¨¥Õ¥§¥¯¥ÈºÆÀ¸¤Î¤¿¤Ó¤Ë¡¢³Æ¥¹¥¯¥ê¥×¥ÈÆâ¤Ë EffectManager ¥¹¥¯¥ê¥×¥È¤ÎÊÑ¿ô¤òÍÑ°Õ¤·¤Æ¼èÆÀ¤ò¤·¤Æ¤¤¤ë¤È¡¢
Î㤨¤Ð¡¢¥¨¥Í¥ß¡¼¤Î¹¶·â¤Ë¹ç¤ï¤»¤Æ¥¨¥Õ¥§¥¯¥È¤òºÆÀ¸¤·¤¿¤¤¤È¤Ê¤Ã¤¿¾ì¹ç¡¢À¸À®¤µ¤ì¤ë¤¿¤Ó¤Ë EffectManager ¥¹¥¯¥ê¥×¥È¤Î»²¾È¤ò¼èÆÀ¤¹¤ëɬÍפ¬À¸¤Þ¤ì¤Þ¤¹¡£
¡¡¤³¤¦¤¤¤Ã¤¿¡Ú
Ê£¿ô¤Î¥¹¥¯¥ê¥×¥È¤«¤é»²¾È¤µ¤ì¤ëÍÑÅÓ¤¬¤¢¤ê¡¢ÈÆÍÑŪ¤ËÍøÍѤµ¤ì¤ë¾ðÊó¡Û¤Ë¤Ä¤¤¤Æ¤Ï¡¢
¥·¥ó¥°¥ë¥È¥ó¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤òºÎÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢³Æ¥¹¥¯¥ê¥×¥ÈÆâ¤Ë¿·¤·¤¤ÊÑ¿ô¤òÄɲ乤ëɬÍפâ¤Ê¤¯¤Ê¤ê¡¢
¥¨¥Õ¥§¥¯¥È¤ÎºÆÀ¸½èÍý¤Ë¤Ä¤¤¤Æ¤â¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ëÌ¿Îáʸ¤ò£±¹Ôµ½Ò¤¹¤ì¤ÐºÑ¤ß¤Þ¤¹¡£
¡¡EffectManager ¥¯¥é¥¹¤Ëµ½Ò¤·¤¿¥á¥½¥Ã¥É¤Ï¡¢¡Ú
¥¯¥é¥¹Ì¾.¥¯¥é¥¹¤ÎÂåÆþ¤µ¤ì¤Æ¤¤¤ëÊÑ¿ô̾.¼Â¹Ô¤·¤¿¤¤ÊÑ¿ô̾¤«¥á¥½¥Ã¥É̾(°ú¿ô¤Î»ØÄê)¡Û¤Î½ñ¼°¤Çµ½Ò¤·¤Þ¤¹¡£
¡¡º£²ó¤Î¾ì¹ç¤Ç¤¢¤ì¤Ð¡¢¥¨¥Õ¥§¥¯¥È¤ò»ÈÍѤ·¤¿¤¤»þ¤Ï GetEffect ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¡¢ÉÔÍפˤʤ俥ѡ¼¥Æ¥£¥¯¥ë¤Ï Release ¥á¥½¥Ã¥É¤Ç¥ª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ë¤ËÌᤷ¤Þ¤¹¡£
¡¡¤³¤Î¼êË¡¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢É¬Íפˤʤä¿¥¨¥Õ¥§¥¯¥È¤¬¤Ê¤¤¾ì¹ç¤À¤±¡¢¿·¤·¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡Ê¥Ñ¡¼¥Æ¥£¥¯¥ë¤äAnimator¡Ë¤òºîÀ®¤·¡¢
¤¹¤Ç¤ËÉÔÍפȤʤäƥª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ëÆâ¤ËÂÔµ¡¤·¤Æ¤¤¤ë¥¨¥Õ¥§¥¯¥È¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤ì¤òºÆÍøÍѤ¹¤ë¤³¤È¤Ç¡¢Ëè²ó¤Î¥¨¥Õ¥§¥¯¥È¤ÎÀ¸À®½èÍý¤ò»ß¤á¤Æ¡¢¸úΨ²½¤·¤Æ¤¤¤Þ¤¹¡£
¡ã¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤Î¼Â¹ÔÌ¿Îá¡ä
EffectManager.instance.GetEffect(EffectName.Hit);
¡¡°ú¿ô¤Ë EffectName ¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤ê¡¢»ØÄꤷ¤¿ EffectName ¤ÎÀßÄꤵ¤ì¤Æ¤¤¤ë EffectData ¤¬»²¾È¤µ¤ì¤Æ¡¢
¤½¤Î¥¯¥é¥¹Æâ¤Ë¥¢¥µ¥¤¥ó¤µ¤ì¤Æ¤¤¤ë¥¨¥Õ¥§¥¯¥È¤Î¥×¥ì¥Ï¥Ö¤òÍøÍѤ¹¤ëÀ߷פˤʤäƤ¤¤Þ¤¹¡£
¡¡¤½¤ì¤Ç¤Ï¥ì¥Ù¥ë¥¢¥Ã¥×¤ÎºÝ¤Î¡¢¼ÂºÝ¤Î¼ÂÁõÎã¤Ç¤¹¡£
¡¡GetEffect ¥á¥½¥Ã¥É¤ÏÌá¤êÃͤȤ·¤Æ ValueTuple ·¿¤Î¾ðÊó¤òÌᤷ¤Þ¤¹¤Î¤Ç¡¢
¼õ¤±¼è¤ë¦¤â ValueTuple ·¿¤ÇÊÑ¿ô¤òÍÑ°Õ¤·¤Þ¤¹¡£
¡¡¡¤È¢¤Î½èÍý¤Ï¡¢¼«Ê¬¤Î EffectData ¤Î¹½Â¤¤Ë¹ç¤ï¤»¤ÆÍøÍÑÊýË¡¤òÊѤ¨¤Þ¤¹¤Î¤Ç¡¢¤¤¤º¤ì¤«¤ÎÌ¿Îá¤òºÎÍѤ·¤Þ¤¹¡£
// EffectDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î EffectData ¤Î enum ¤È¾È¹ç¤¹¤ë¤¿¤á¤ÎÃÍ
public EffectName effectName = EffectName.LevelUp;
// EffectDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î EffectData ¤Î Index ¤È¾È¹ç¤¹¤ë¤¿¤á¤ÎÃÍ
public const int LEVEL_UP_EFFECT_INDEX = 501;
// ¥¨¥Õ¥§¥¯¥È¤ÎºÆÀ¸Àè¡£¤³¤³¤Ç¤Ï¥×¥ì¥¤¥ä¡¼¤ÎÁÛÄê
public Transform targetTran;
// ¥ì¥Ù¥ë¥¢¥Ã¥×±é½Ð
{
// ¡¥ª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ë¤«¤é¥ì¥Ù¥ë¥¢¥Ã¥×ÍѤΥ¨¥Õ¥§¥¯¥È¤ò EffectName ¤ò»ØÄꤷ¤Æ¼è¤ê½Ð¤·
(EffectPlayerBase levelUpEffect, float duraion) = EffectManager.instance.GetEffect(effectName);
// ¢¥ª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ë¤«¤é¥ì¥Ù¥ë¥¢¥Ã¥×ÍѤΥ¨¥Õ¥§¥¯¥È¤ò Index ¤ò»ØÄꤷ¤Æ¼è¤ê½Ð¤·
(EffectPlayerBase levelUpEffect, float duraion) = EffectManager.instance.GetEffect(LEVEL_UP_EFFECT_INDEX);
// ¥¨¥Õ¥§¥¯¥È¤òɽ¼¨¤¹¤ë°ÌÃÖ¤òÄ´À°
Vector3 effectPos = new(targetTran.position. x, targetTran.position. y + offset, targetTran.position. z);
var token = PlayerManager.instance.GetCancellationTokenOnDestroy();
// ¥×¥ì¥¤¥ä¡¼¤Î¸µ¤ÇºÆÀ¸
levelUpEffect.PlayEffect(duraion, effectPos, token).Forget();
}