Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡¡¥×¥í¥°¥é¥à¤Î³Ø½¬¤Ë¤ª¤¤¤Æ¡¢¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ÏÂçÀڤʳؽ¬ÊýË¡¤Î1¤Ä¤Ç¤¹¡£

¡¡¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤È¤Ï¼ç¤Ë¡¢¥×¥í¥°¥é¥à¤ÎÆ°ºî¤ä¿¶¤ëÉñ¤¤¤òÊѤ¨¤ë¤³¤È¤Ê¤¯¡¢ÆâÉô¤ÎÀ߷פ乽¤¤ò¸«Ä¾¤·¡¢¥³¡¼¥É¤ò½ñ¤­´¹¤¨¤¿¤ê½ñ¤­Ä¾¤·¤¿¤ê¤¹¤ë¤³¤È¤ò»Ø¤·¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢ÉÔ¶ñ¹ç¤òľ¤¹¤¿¤á¤Î½¤Àµ¤Ç¤Ï¤Ê¤¯¡¢¥²¡¼¥à²èÌ̤Îɽ¸½¤ÏÊѤ¨¤ë¤³¤È¤Ê¤¯¡¢¥½¡¼¥¹¥³¡¼¥É¤Î¸«Ä¾¤·¤ò¹Ô¤¤¤Þ¤¹¡£
Æɤߤ䤹¤¤½èÍý¤Ëľ¤·¤¿¤ê¡¢ºÇŬ²½¤ò¿Þ¤ë¤Ù¤¯¡¢½èÍý¤Î¸úΨ²½¤ò¸¡Æ¤¤·¤¿¤ê¡¢¤½¤¦¤¤¤Ã¤¿ÆâÉôŪ¤Ê½èÍý¤ÎºÆ¹½ÃÛ¤ÎÊýË¡¤Ç¤¹¡£

¡¡¥½¡¼¥¹¥³¡¼¥É¤ò½ñ¤¯¤³¤È¤Ë´·¤ì¤Æ¤­¤¿¤é¡¢¥¯¥é¥¹Æâ¤Î½èÍý¤ò¸«Ä¾¤·¤Æ¡¢Æɤߤ䤹¤¯¡¢¸úΨ¤Î¤è¤¤½èÍý¤ËÃÖ¤­´¹¤¨¤Æ¤¤¤¯ÊýË¡¤ò³Ø½¬¤·¡¢¼ÂÁ©¤·¤Þ¤·¤ç¤¦¡£



¡ã¿·¤·¤¤³Ø½¬ÆâÍÆ¡ä
¡¡¡¦UniRx
¡¡¡¦UniRx.Triggers
¡¡¡¦ObsevableTriggers



¥±¡¼¥¹¥¹¥¿¥Ç¥£


¡¡UniRx ¤Ë¤Ï ObsevableTriggers ¤È¤¤¤¦µ¡Ç½¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Unity ¤Î¥¤¥Ù¥ó¥È´Ø¿ô(Update¡¢OnTrigger¡Á¡¢¤Ê¤É)¤ò Obsevable ¤È¤·¤Æ°·¤¦¤³¤È¤¬¤Ç¤­¤ëµ¡Ç½·²¤Ç¤¹¡£

¡¡°ÊÁ°¤ËºîÀ®¤·¤¿ CharaManager ¥¯¥é¥¹¤Î Update ¥á¥½¥Ã¥É¤ò
¤³¤Á¤é¤Î ObsevableTriggers ¤Îµ¡Ç½¤òÍøÍѤ·¤Æ¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤òÄ̤¸¤Æ¡¢¥½¡¼¥¹¥³¡¼¥É¤ò½ñ¤¯¥¹¥­¥ë¤Î¥ì¥Ù¥ë¥¢¥Ã¥×¤ò¿Þ¤ê¤Þ¤·¤ç¤¦¡£


¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°Á°¤Î¥¯¥é¥¹


¡¡º£²ó¤Ï CharaManager ¤òÎã¤ËÍøÍѤ·¤Þ¤¹¡£


CharaManager.cs

<= ¥¯¥ê¥Ã¥¯¤·¤¿¤é³«¤­¤Þ¤¹¡£




¡¡¥×¥ì¥¤¥ä¡¼Ìò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¹½À®¤âÊѤï¤ê¤¢¤ê¤Þ¤»¤ó¡£

¡¡¼¡¤ÎÄ̤ê¤Ç¤¹¡£


¹½À®



¿Æ¥¯¥é¥¹¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü(CharaController ¥¯¥é¥¹¤È¥³¥é¥¤¥À¡¼¡¢Rigidbody ¤¬°ì½ï¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤Þ¤¹)



»Ò¥¯¥é¥¹¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü(²èÁü¤È Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤Þ¤¹)




¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ÎÊý¸þÀ­


¡¡UniRx ¤Îµ¡Ç½¤ò³èÍѤ¹¤ë¤³¤È¤Ç¡¢½èÍý¤ÎÆ°¤­¤ò´Æ»ë(¥ª¥Ö¥¶¡¼¥Ð¡¼)¤·¡¢¥¤¥Ù¥ó¥È¶îÆ°·¿¤Î½èÍý¤ËÊѹ¹¤Ç¤­¤Þ¤¹¡£

¡¡Î㤨¤Ð¥Ü¥¿¥ó¤Ç¤¢¤ì¤Ð¡¢¡Ö¥Ü¥¿¥ó¤ò²¡¤¹¡×¤È¤¤¤¦¹Ô°Ù¤ò´Æ»ë¤·¡¢¤³¤Î¾õÂÖ¤¬È¯À¸¤·¤¿¤é»ØÄꤷ¤¿½èÍý¤¬¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ëɳ¤Å¤±¤Æ¤ª¤¯¤è¤¦¤Ê½èÍý¤¬¹½ÃۤǤ­¤Þ¤¹¡£

¡¡º£²ó¤Ï ReactiveProperty ¤Îµ¡Ç½¤È¡¢ObsevableTriggers ¤Îµ¡Ç½¤òÍøÍѤ·¤Æ¡¢½¾Íè¤Î½èÍý¤ò¥¤¥Ù¥ó¥È¶îÆ°·¿¤Î½èÍý¤Ë¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤·¤Æ¤¤¤­¤Þ¤¹¡£


À߷ס¡¡¼Ìò³ä¤Î¹Í¤¨Êý¡¼


¡¡CharaController ¥¯¥é¥¹Æâ¤Î½èÍý¤òµ¡Ç½Ê̤Ëʬ¤±¤Æ¤ß¤Þ¤·¤ç¤¦¡£
²¼µ­¤Î¤è¤¦¤Ê»Åʬ¤±¤Ë¤è¤ëʬÎब¤Ç¤­¤ë¤È»×¤¤¤Þ¤¹¡£

¡¦°ÜÆ°¤µ¤»¤ëµ¡Ç½
¡¦¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò°ÜÆ°Êý¸þ¤ËƱ´ü¤µ¤»¤ëµ¡Ç½
¡¦¹¶·â¤¹¤ëµ¡Ç½
¡¦Hp ¤ò´ÉÍý¤¹¤ëµ¡Ç½
¡¦¥ì¥Ù¥ë¤È Exp ¤ò´ÉÍý¤¹¤ëµ¡Ç½

¡¡¤³¤Î¤¦¤Á¡¢°ÜÆ°¤µ¤»¤ë½èÍý¤È¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò°ÜÆ°Êý¸þ¤ËƱ´ü¤µ¤»¤ë½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥­¡¼ÆþÎϤÎÃͤòƱ¤¸¾ðÊó¤È¤·¤ÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¶¦Ä̤¹¤ë½èÍý¤ò¤Þ¤È¤á¤¿¥¯¥é¥¹¤ò£±¤ÄºîÀ®¤·¡¢¤Þ¤¿¡¢¤³¤Î¥¯¥é¥¹¤Ç¡¢¤½¤ì°Ê³°¤Î¥¯¥é¥¹¤ò´ÉÍý¤·¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢´ÉÍý¼Ô(¥Þ¥Í¡¼¥¸¥ã¡¼)¤È¤Ê¤ë¥¯¥é¥¹¤ò¿·¤·¤¯ÍÑ°Õ¤·¡¢Â¾¤Îµ¡Ç½¤ò¤Þ¤È¤á¾å¤²¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£


¡ã¿·¤·¤¯ºî¤ë¡ä
¡¦°ÜÆ°¤µ¤»¤ëµ¡Ç½¤ò»ý¤Ä¥¯¥é¥¹
¡¦¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò°ÜÆ°Êý¸þ¤ËƱ´ü¤µ¤»¤ëµ¡Ç½¤ò»ý¤Ä¥¯¥é¥¹
¡¦¹¶·â¤¹¤ëµ¡Ç½¤ò»ý¤Ä¥¯¥é¥¹
¡¦¥Þ¥Í¡¼¥¸¥ã¡¼¥¯¥é¥¹

¡¡º£²ó¤Ï Hp ¤ò´ÉÍý¤¹¤ëµ¡Ç½¤È¥ì¥Ù¥ë¤È Exp ¤ò´ÉÍý¤¹¤ëµ¡Ç½¤Ë¤Ä¤¤¤Æ¤Ï¥¯¥é¥¹¤ÏºîÀ®¤·¤Þ¤»¤ó¡£
¤³¤Î³Ø½¬¤òÄ̤¸¤Æµ¡Ç½¤Îʬ³äÊýË¡¤ò¹Í¤¨¤Æ¡¢¼«ºî¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£


¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò½¤Àµ¤¹¤ë


¡¡IChara ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹Æâ¤Î SetUpChara ¥á¥½¥Ã¥É¤Ë°ú¿ô¤òÄɲä·¤Þ¤¹¡£


<= ¥¯¥ê¥Ã¥¯¤·¤¿¤é³«¤­¤Þ¤¹¡£



¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤¿¥¯¥é¥¹¤ò½çÈ֤˽¤Àµ¤¹¤ë


¡¡³Æ¥¯¥é¥¹¤´¤È¤ËÌÀ³Î¤ÊÌò³ä¤òÀߤ±¤ë¤È¤È¤â¤Ë¡¢ÀÕ̳¤Î¤Ê¤¤½èÍý¤Ï½ñ¤­¹þ¤Þ¤Ê¤¤¤è¤¦¤ËÇÛθ¤·¤Þ¤¹¡£

¡¡¤Þ¤¿ CharaManager ¤¬¡¢Ê¬³ä¤·¤¿¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤Î´ÉÍý¼Ô¤È¤Ê¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢³Æ¥¯¥é¥¹Æ±»Î¤Ï¤ª¸ß¤¤¤òÃΤé¤Ê¤¤¾õÂÖ(¥á¥ó¥ÐÊÑ¿ô¤Ç´ÉÍý¤·¤Æ¤¤¤Ê¤¤¡£Á·ë¹ç²½)¤òÌÜŪ¤Ë¤â¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¥­¥ã¥é¤Î¸þ¤¤¤Æ¤¤¤ëÊý¸þ¤Î¾ðÊó¤Ë´Ø¤·¤Æ¤Ï¡¢Ê£¿ô¤Î¥¯¥é¥¹¤ÇÍøÍѤ¹¤ë¤¿¤á¡¢¤½¤Î¤è¤¦¤Ê¾ðÊó¤Ï CharaManager ¥¯¥é¥¹Æâ¤Ë´ÉÍý¤·¤Þ¤¹¡£
³Æ¥¯¥é¥¹Æâ¤ÇÊÌ¡¹¤ËÊý¸þ¤Î¾ðÊó¤Ï¼èÆÀ¤»¤º¡¢É¬Íפʥ¯¥é¥¹(CharaAnime ¤È CharaAttack)¤Ë¡¢¥á¥½¥Ã¥É¤Î°ú¿ô¤òÄ̤¸¤ÆÁ÷¤êÆϤ±¤ë·Á¤Ç¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£


£±¡¥CharaMove.cs


¡¡°ÜÆ°¤Ë´Ø¤¹¤ëµ¡Ç½¤òÌò³ä¤È¤·¤Æ»ý¤Ä¥¯¥é¥¹¤Ç¤¹¡£
CharaController ¥¯¥é¥¹¤Ë¤¢¤Ã¤¿¡¢°ÜÆ°¤Ë´Ø¤¹¤ë¥á¥ó¥ÐÊÑ¿ô¤È¥á¥½¥Ã¥É¤ò¤³¤Á¤é¤Ë°Ü¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Ç¤¢¤ë SetUpChara ¥á¥½¥Ã¥É¤ò¼ÂÁõ¤·¡¢¤³¤Î¥¯¥é¥¹Æȼ«¤Î¿¶¤ëÉñ¤¤¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡°ÜÆ°¤Î½èÍý¤Ï²èÌ̤ò¥¯¥ê¥Ã¥¯(¥¿¥Ã¥×)¤·¤Æ¤¤¤ë´Ö¡¢¤½¤ÎÊý¸þ¤Ë¸þ¤«¤Ã¤Æ°ÜÆ°¤¹¤ë¥¿¥¤¥×¤Î°ÜÆ°ÊýË¡¤Ç¤¹¡£
CharaManager ¤Î Update ¥á¥½¥Ã¥ÉÆâ¤Ç¥¯¥ê¥Ã¥¯¤ÎÆþÎϤò¼õ¤±ÉÕ¤±¡¢Move ¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë°ÜÆ°Êý¸þ¤Î¾ðÊó¤ò¤â¤é¤¦¤³¤È¤Ç¡¢°ÜÆ°¤ò¼Â¹Ô¤·¤Þ¤¹¡£


<= ¥¯¥ê¥Ã¥¯¤·¤¿¤é³«¤­¤Þ¤¹¡£




¹½À®



´ÉÍýÍÑ¥Õ¥©¥ë¥ÀÍѤΥª¥Ö¥¸¥§¥¯¥È



º¸²¼¤ËÇÛÃÖ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È



±¦¾å¤ËÇÛÃÖ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È



¡¡Â¾¤Î¥²¡¼¥à¤Ë¤â±þÍѤǤ­¤Þ¤¹¡£


£²¡¥CharaAnime.cs


¡¡¥¢¥Ë¥á¤Ë´Ø¤¹¤ëµ¡Ç½¤òÌò³ä¤È¤·¤Æ»ý¤Ä¥¯¥é¥¹¤Ç¤¹¡£
CharaController ¥¯¥é¥¹¤Ë¤¢¤Ã¤¿¡¢¥¢¥Ë¥á¤Ë´Ø¤¹¤ë¥á¥ó¥ÐÊÑ¿ô¤È¥á¥½¥Ã¥É¤ò¤³¤Á¤é¤Ë°Ü¤·¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢¥ê¥Æ¥é¥ëɽµ­¤·¤Æ¤¤¤¿ Animator ¤Î Parameter ÃͤˤĤ¤¤Æ¡¢¥á¥ó¥ÐÊÑ¿ô¤òÄɲä·¤ÆÃÖ¤­´¹¤¨¤Æ¤ê¤Þ¤¹¡£

¡¡¤³¤Î¥¯¥é¥¹¤Ç¤Ï°ÜÆ°Êý¸þ¤Ë¹ç¤ï¤»¤¿¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎƱ´ü½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
Àè¤Û¤É¤Î CharaMove ¥¯¥é¥¹¤ÈƱÍͤˡ¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë SetUpChara ¥á¥½¥Ã¥ÉÆâ¤Ë¤Æ Animator ¥¯¥é¥¹¤Î¼èÆÀ¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡Àè¤Û¤É¤Î CharaMove ¥¯¥é¥¹¤Î SetUpChara ¥á¥½¥Ã¥É¤Ç¤Ï Debug.Log ¥á¥½¥Ã¥É°Ê³°¤Ë¤ÏÆä˲¿¤â½èÍý¤Ï½ñ¤­¹þ¤ó¤Ç¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
¤³¤Î¤è¤¦¤Ë¡¢Æ±¤¸¥á¥½¥Ã¥É¤Ç¤¢¤Ã¤Æ¤â¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë(½ñ¤«¤ì¤Æ¤¤¤ë)ÆâÍƤ¬°Û¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£

¡¡¤Ê¤ª¡¢SetUpChara ¥á¥½¥Ã¥É¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¼èÆÀ¤¹¤ëÌ¿Îá¤Ï
»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ë Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤òÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£
»Ò¥ª¥Ö¥¸¥§¥¯¥È¤¬¤Ê¤¤¹½À®¤Î¾ì¹ç¤Ë¤Ï¡¢SetUpChara ¥á¥½¥Ã¥É¤Î½èÍý¤òŬµ¹½¤Àµ¤·¤Æ¡¢¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¼èÆÀÀè¤òÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£


<= ¥¯¥ê¥Ã¥¯¤·¤¿¤é³«¤­¤Þ¤¹¡£




¡¡if / else ʸ¤Ë¤è¤ëʬ´ô½èÍý¤Î¤¦¤Á¡¢½èÍýÆâÉô¤ÇƱ¤¸ÊÑ¿ô¤ËÂФ·¤ÆÂåÆþ½èÍý¤ò¹Ô¤¦¾ì¹ç¤Ë¤Ï¡¢»°¹à±é»»»Ò¤òÍøÍѤ·¤Æµ­½Ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
ËÜÍè¤Î if /else ʸ¤ÈÈæ³Ó¤·¤Ê¤¬¤é¹½Ê¸¤òÆɤ߲ò¤¤¤Æ¤ß¤Þ¤·¤ç¤¦¡£


»²¹Íµ­»ö
@crazy_travelerÍÍ
»²¹Í¤Ë¤Ê¤ë»°¹à±é»»»Ò


£³¡¥CharaAttack.cs


¡¡¹¶·â¤Ë´Ø¤¹¤ëµ¡Ç½¤òÌò³ä¤È¤·¤Æ»ý¤Ä¥¯¥é¥¹¤Ç¤¹¡£
CharaController ¥¯¥é¥¹¤Ë¤¢¤Ã¤¿¡¢¹¶·â¤Ë´Ø¤¹¤ë¥á¥ó¥ÐÊÑ¿ô¤È¥á¥½¥Ã¥É¤ò¤³¤Á¤é¤Ë°Ü¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤ÎºÝ¤Ë¥á¥½¥Ã¥É̾¤òÊѹ¹¤·¤¿¤ê¡¢¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤òľÀܼ¹Ԥ·¤Ê¤¤¤¿¤á¤ËÃç²ðÌò¤Î¥á¥½¥Ã¥É¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£

¡¡¥Ý¥¤¥ó¥È¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤ÎºÇ¿·¤ÎÊý¸þ¤Î¾ðÊó¤ò CharaManager ¤«¤é»²¾È¤¹¤ë¤¿¤á¤Î¥×¥í¥Ñ¥Æ¥£¤òÍÑ°Õ¤·¤Æ¤¤¤ëÉôʬ¤Ç¤¹¡£
C# ¤Î¥×¥í¥Ñ¥Æ¥£¤Ï¡¢ÃÍ·¿¤Ç¤¢¤Ã¤Æ¤â»²¾È·¿¤Ç¤¢¤Ã¤Æ¤â¡¢³°Éô¤ÎÊÑ¿ô¤äÃͤòÊÝ»ý¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¥²¥Ã¥¿¡¼¤ä¥»¥Ã¥¿¡¼¤Î¥á¥½¥Ã¥É¤òÄ̤¸¤Æ³°Éô¤È¤ÎÃͤΤä¤ê¼è¤ê¤ò¹Ô¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¥×¥í¥Ñ¥Æ¥£¤òÄ̤¸¤ÆÃͤòÀßÄꤹ¤ë¤È¡¢ÆâÉô¤Ç¤ÎÃͤΥ³¥Ô¡¼¤¬¹Ô¤ï¤ì¡¢¤½¤Î¸å¤â³°ÉôÊÑ¿ô¤¬¹¹¿·¤µ¤ì¤ë¤È¥×¥í¥Ñ¥Æ¥£¤Î¥»¥Ã¥¿¡¼¤¬¸Æ¤Ó½Ð¤µ¤ì¤ÆÃͤ¬¹¹¿·¤µ¤ì¤Þ¤¹¡£
¤³¤Î»ÅÁȤߤˤè¤ê¡¢ºÇ¿·¤Î¾ðÊó¤ò¥×¥í¥Ñ¥Æ¥£¤òÄ̤¸¤Æ»²¾È¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡º£²ó¤Ç¤¢¤ì¤Ð¡¢CharaManager ¤Ë¤¢¤ë direction ÊÑ¿ô¤Ï Vector2 ·¿¤Ç¤¢¤ê¡¢ÃÍ·¿¤Ç¤¹¡£
¤½¤Î¾ðÊó¤ò»²¾È¤¹¤ë¤¿¤á¤ËÍÑ°Õ¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤Î·¿¤â Vector3 ¤ÇÃÍ·¿¤Ç¤¹¤¬¡¢¥×¥í¥Ñ¥Æ¥£¤ò²ð¤·¤ÆÃͤòÀßÄꤹ¤ë»ö¤Ç¡¢ºÇ¿·¤Î»²¾È¤¬²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡¤³¤Îµ¡Ç½¤Ë¤è¤ê¡¢CharaManager ¤Î¾ðÊó¤ò¸µ¤Ë¼«Æ°Åª¤ËºÇ¿·¤Î¥×¥ì¥¤¥ä¡¼¤ÎÊý¸þ¤Î¾ðÊó¤ò¹¹¿·¤Ç¤­¤ë»ÅÁȤߤòƳÆþ¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¤Þ¤¿¿·¤·¤¤µ¡Ç½¤È¤·¤Æ¡¢¹¶·â¤ò°ì»þÄä»ß/ºÆ³«¤¹¤ë¤¿¤á¤Îµ¡Ç½¤òÄɲä·¤Þ¤¹¡£


<= ¥¯¥ê¥Ã¥¯¤·¤¿¤é³«¤­¤Þ¤¹¡£




¡¡CharaManager ¥¯¥é¥¹¤ËÄɲ乤ë ReactiveProperty ¤Ç¤¢¤ë Direction ÊÑ¿ô¤ò¹ØÆɤ·¡¢
Ãͤ¬¹¹¿·¤µ¤ì¤ë¤¿¤Ó¤Ë AttackDirection ¤ÎÃͤò¹¹¿·¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£

¡¡¤³¤Î½èÍý¤Ï CharaManager ¤ÇÍÑ°Õ¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¤¬¡¢¤³¤Î CharaAttack ¥¯¥é¥¹¤ÏÊ£¿ô¤Î¹¶·â½èÍý¤ò¹Ô¤¦¾ì¹ç¤Ë¤ÏÍøÍѤ·¤Ê¤¤Í½Äê¤Ç¤¹¡£
¤½¤Î¤¿¤á¡¢CharaManager ¤Ë½èÍý¤ò½ñ¤¤¤Æ¤·¤Þ¤¦¤È¡¢CharaAttack ¥¯¥é¥¹¤òÍøÍѤ·¤Ê¤¤¾ì¹ç¤Ë¤ª¤¤¤ÆÉÔÊؤÊÅÀ¤¬À¸¤¸¤Þ¤¹¡£
(Î㤨¤Ð»È¤Ã¤Æ¤¤¤Ê¤¤ÊÑ¿ô¤ò¥³¥á¥ó¥È¥¢¥¦¥È¤Ê¤É¤¹¤ë¤È¡¢¤½¤ÎÊÑ¿ô¤ò»È¤Ã¤Æ¤¤¤ëÉôʬ¤Ç¥¨¥é¡¼¤¬À¸¤¸¤Þ¤¹¡£)


¡ã¤³¤Î¤è¤¦¤Ê¼ÂÁõ¤â¤Ç¤­¤ë¤¬¡¢CharaManager ¤Ç¤Î¼ÂÁõ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¡ä
using UniRx;
using UnityEngine;

public class CharaAttack : MonoBehaviour, IChara
{
    private Vector2 attackDirection;

    // CharaManager ¤«¤é¤ÎÊý¸þ¾ðÊó¤ò¹ØÆɤ¹¤ë¥×¥í¥Ñ¥Æ¥£
    public Vector2 AttackDirection => attackDirection;
}

public class CharaManager : MonoBehaviour
{
    private CharaAttack charaAttack;
    private ReactiveProperty<Vector2> Direction = new ();

    private void Start()
    {
        if (TryGetComponent(out charaAttack))
        {
            // CharaAttack ¦¤Î¥×¥í¥Ñ¥Æ¥£¤òľÀܹ¹¿·
            Direction.Subscribe(diruection => charaAttack.AttackDirection = direction);
        }
    }

    // CharaManager ¤ÎÊý¸þ¾ðÊó¤ò¹¹¿·¤¹¤ë¥á¥½¥Ã¥É
    public void UpdateDirection(Vector2 newDirection)
    {
        // Êý¸þ¾ðÊó¤òÀßÄê
        Direction.Value = newDirection;
    }
}

¡¡CharaAttack ¥¯¥é¥¹Æâ¤Î½èÍý¤ò CharaManager ¥¯¥é¥¹¤ÈÀÚ¤êÎ¥¤·¤ÆÆÈΩÀ­¤òÊݤĤ¿¤á¡¢ CharaAttack ¥¯¥é¥¹Æâ¤Ç¤Î¹ØÆɽèÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£


£´¡¥CharaManager.cs


¡¡¾åµ­¤Î£³¤Ä¤Î¥¯¥é¥¹¤ò¤Þ¤È¤á¤Æ´ÉÍý¤¹¤ë¥¯¥é¥¹¤Ç¤¹¡£
¤³¤Î¥¯¥é¥¹¤Ë¤Ï RequireComponent °À­¤òÉÕÍ¿¤·¡¢³ºÅö¤¹¤ë£³¤Ä¤Î¥¯¥é¥¹¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¤³¤Î¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤¹¤ë¤È¡¢Àè¤Û¤É¤Î£³¤Ä¤Î¥¯¥é¥¹¤â¼«Æ°Åª¤ËÄɲäǥ¢¥¿¥Ã¥Á¤µ¤ì¤Þ¤¹¡£
¥¢¥¿¥Ã¥Á¤Î¼ê´Ö¤¬¾Ê¤±¤ë¤È¤È¤â¤Ë¡¢¥¢¥¿¥Ã¥Á˺¤ì¤òËɻߤ¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£

¡¡¤³¤Î¥¯¥é¥¹¤Î¤ß¤¬£³¤Ä¤Î¥¯¥é¥¹¤ò¥á¥ó¥ÐÊÑ¿ô¤È¤·¤Æ´ÉÍý¤·¡¢¤½¤ì¤¾¤ì¤Î½èÍý¤ËÂФ·¤ÆÌ¿Îá¤ò½Ð¤·¤Æ¤¤¤Þ¤¹¡£
¥È¥Ã¥×¥À¥¦¥ó·¿¤Î¤è¤¦¤ÊÌ¿Îá·ÏÅý¤Î»ÅÁȤߤò¥¤¥á¡¼¥¸¤·¤Æ¤â¤é¤¨¤ì¤Ðʬ¤«¤ê¤ä¤¹¤¤¤Ç¤·¤ç¤¦¡£

¡¡¤Þ¤¿¶¦Ä̤νèÍý¤È¤·¤Æ¥­¥ã¥é¤ÎÊý¸þ¤Î¾ðÊó¤ò´ÉÍý¤·¡¢¤½¤Î¾ðÊó¤ò¥¢¥Ë¥á¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¤È¹¶·â¤Î¥¯¥é¥¹¤ËÂФ·¤Æ¡¢¥á¥½¥Ã¥É¤òÄ̤¸¤ÆÅϤ·¤Æ¤¤¤Þ¤¹¡£
¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢³Æ¥¯¥é¥¹Æâ¤ÇȽÄê¤ò¤µ¤»¤ëɬÍפʤ¯¡¢¶¦Ä̤ÎÃͤò¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹¤ËÍøÍѤ·¤Æ¤â¤é¤¦À߷פǤ¹¡£

¡¡¤¿¤À¤·¡¢½èÍý¤Î¥¿¥¤¥ß¥ó¥°¤ÎÌäÂê¤Ç¡¢¤³¤Î¥á¥½¥Ã¥É¤Î°ú¿ô¤ÇÅϤ¹ÊýË¡¤Ç¤Ï¡¢Êý¸þ¤Î¾ðÊó¤òÅϤ»¤Ê¤¤¥¯¥é¥¹(CharaAttack)¤â¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤Ï¹¶·â½èÍý¤Î¥¿¥¤¥ß¥ó¥°¤¬ CharaManager ¤Ç¤Ï¤Ê¤¯¡¢CharaAttack ¤Ë°Í¸¤·¤Æ¤¤¤ë¤¿¤á¡¢¾ï¤ËºÇ¿·¤ÎÃͤòÅϤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£

¡¡ºÇ¤â´Êñ¤ÊÊý¸þ¾ðÊó¤ÎÅϤ·Êý¤Ï¡¢CharaManager ¥¯¥é¥¹¤Î Update ¥á¥½¥Ã¥É¤Ç CharaAttack Æâ¤ËÍÑ°Õ¤·¤Æ¤¢¤ëÊý¸þ¾ðÊó¤ÎÃͤò¿ï»þ¹¹¿·¤¹¤ë¤â¤Î¤Ç¤¹¡£
¤³¤ì¤Ç¤¢¤ì¤Ð¡¢¤¤¤Ä¹¶·â¤Î½èÍý¤ò¤ª¤³¤Ê¤Ã¤Æ¤âºÇ¿·¤ÎÊý¸þ¤Î¾ðÊó¤òÍøÍѤǤ­¤Þ¤¹¡£

¡¡º£²ó¤Ï¤½¤Î¥¢¥×¥í¡¼¥Á¤Ç¤Ï¤Ê¤¯¡¢CharaAttack ¥¯¥é¥¹¤Ë¥×¥í¥Ñ¥Æ¥£¤òÍÑ°Õ¤·¡¢¤½¤Î»²¾ÈÀè¤ò CharaManager ¥¯¥é¥¹¤ÎÊý¸þ¾ðÊó¤Èɳ¤Å¤±¤Þ¤¹¡£
¥×¥í¥Ñ¥Æ¥£¤òÄ̤¸¤ÆÃͤòÀßÄꤹ¤ë¤È¡¢ÆâÉô¤Ç¤ÎÃͤΥ³¥Ô¡¼¤¬¹Ô¤ï¤ì¡¢¤½¤Î¸å¤â³°ÉôÊÑ¿ô¤¬¹¹¿·¤µ¤ì¤ë¤È¥×¥í¥Ñ¥Æ¥£¤Î¥»¥Ã¥¿¡¼¤¬¸Æ¤Ó½Ð¤µ¤ì¤ÆÃͤ¬¹¹¿·¤µ¤ì¤Þ¤¹¡£
¤³¤Î»ÅÁȤߤˤè¤ê¡¢CharaAttack ¥¯¥é¥¹Â¦¤Ç¤â¡¢ºÇ¿·¤Î¾ðÊó¤ò¥×¥í¥Ñ¥Æ¥£¤òÄ̤¸¤Æ»²¾È¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤Ê¤ªº£²ó¤Ï½èÍý¤Î³Îǧ¤Î¤¿¤á¡¢Start ¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ½èÍý¤ò¥¹¥¿¡¼¥È¤µ¤»¤Æ¤¤¤Þ¤¹¤¬¡¢
¼ÂºÝ¤Ë¤Ï³°Éô¥¯¥é¥¹¤«¤é SetUpCharaManager ¥á¥½¥Ã¥É¤Ø¼Â¹ÔÌ¿Îá¤ò¼õ¤±¤ÆÆ°¤¤¤Æ¤¤¤¯Á°Äó¤ÇÀ߷פ·¤Æ¤¤¤Þ¤¹¡£


<= ¥¯¥ê¥Ã¥¯¤·¤¿¤é³«¤­¤Þ¤¹¡£



¡ã¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°­¡¡¡ReactiveProperty ¤Ø¤ÎÃÖ¤­´¹¤¨¡ä


¡¡º£²ó¡¢¥×¥í¥Ñ¥Æ¥£¤ò¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤·¡¢ReactiveProperty ¤ËÃÖ¤­´¹¤¨¤Æ¤¤¤Þ¤¹¡£

¡ã¸µ¤Î½èÍý¡ä
    // direction ¤Î¥×¥í¥Ñ¥Æ¥£¡£ÆâÉô¤Ç CharaAttack ¤Î AttackDirection ¥×¥í¥Ñ¥Æ¥£¤âƱ»þ¤Ë¹¹¿·¤·¤Æ¤¤¤ë
    public Vector2 Direction {
        get => direction;
        set {
            direction = value;

            if (charaAttack) {
                charaAttack.AttackDirection = value;
            }
        }
    }


    /// <summary>
    /// ¸þ¤­¤Î¹¹¿·
    /// </summary>
    /// <param name="newPos"></param>
    private void UpdateDirection(Vector2 newPos)
    {
        Direction = (newPos - (Vector2)transform.position).normalized;
    }

¡¡¡¡¡¡¡¡¢­

¡ã¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¸å¤Î½èÍý¡ä
    public ReactiveProperty<Vector2> Direction = new();


    /// <summary>
    /// ¸þ¤­¤Î¹¹¿·
    /// </summary>
    /// <param name="newPos"></param>
    private void UpdateDirection(Vector2 newPos)
    {
        // ReactiveProperty ¤ËÃÖ¤­´¹¤¨
        //Direction = (newPos - (Vector2)transform.position).normalized;
        Direction.Value = (newPos - (Vector2)transform.position).normalized;
    }
¡¡


¡ã¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°­¢¡¡¡¼UpdateAsObsevable ¤Ø¤ÎÃÖ¤­´¹¤¨¡¼¡ä

¡¡Update ¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤Î¤¦¤Á¡¢¥Þ¥¦¥¹¤Ë¤è¤ë°ÜÆ°½èÍý¤È¥¢¥Ë¥áƱ´ü½èÍý¤ÎÉôʬ¤ò¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤·¡¢
UniRx ¤Î ObsevableTriggers ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë UpdateAsObsevable ¥á¥½¥Ã¥É¤ËÃÖ¤­´¹¤¨¤Æ¤¤¤Þ¤¹¡£

¡¡UpdateAsObsevable ¥á¥½¥Ã¥É¤Ï¡¢MonoBehaviour ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¾ì¹ç¤Î¤ßÍøÍѤǤ­¤Þ¤¹¡£


¡ã¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¸å¤Î½èÍý¡ä
    void Update()
    {
¡¡¡¡¡¡¡¡if (charaMove == null || charaAnime == null)
        {
            return;
        }
        
        if (Input.GetMouseButton(0))
        {
            Vector2 tapPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        
            charaMove.Move(tapPos);
        
            //¸þ¤­¤Î¹¹¿·
            UpdateDirection(tapPos);
        
            //°ÜÆ°¤Î¸þ¤­¤È¥¢¥Ë¥á¤Î¸þ¤­¤ÎƱ´ü
            //charaAnime.UpdateAnimation(Direction);
            charaAnime.UpdateAnimation(Direction.Value);
        }

    }
¡¡

¡¡¡¡¡¡¡¡¢­

¡ã¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¸å¤Î½èÍý¡ä
using UniRx;
using UniRx.Triggers;

    void Start()
    {
        // ¥Ç¥Ð¥Ã¥°ÍÑ
        SetUpCharaManager();

        // ¾ðÊó¤¬Â­¤ê¤Æ¤¤¤ë¤«È½Äê
        if (charaMove == null || charaAnime == null)
        {
            Debug.Log($"½èÍý¤ËɬÍפʾðÊó¤¬Â­¤ê¤Ê¤¤¤Î¤Ç¡¢½èÍý¤òÄä»ß¤·¤Þ¤¹¡£ CharaMove : {charaMove} / CharaAnime : {charaAnime}");
            return;
        }
        
        // Update ¥á¥½¥Ã¥É¤ò¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤·¡¢UpdateAsObservable() ¤ËÃÖ¤­´¹¤¨
        this.UpdateAsObservable()
            .Where(_ => Input.GetMouseButton(0))
            .Select(_ => Camera.main.ScreenToWorldPoint(Input.mousePosition)) // Ìá¤êÃͤϥ¥ë¥ÉºÂɸ
            .Subscribe(tapPos =>  // tapPos ¤Ï Select ¤ÎÌá¤êÃÍ
            {
                charaMove.Move(tapPos);

                // ¸þ¤­¤Î¹¹¿·
                UpdateDirection(tapPos);

                // °ÜÆ°¤Î¸þ¤­¤È¥¢¥Ë¥á¤Î¸þ¤­¤ÎƱ´ü
                charaAnime.UpdateAnimation(Direction.Value);
            });
    }



¡¡¤Ê¤ª¡¢MonoBehaviour ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢Obsevable.EveryUpdate() ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤³¤È¤ÇÃÖ¤­´¹¤¨½ÐÍè¤Þ¤¹¡£
¤³¤Á¤é¤Î¾ì¹ç¡¢OnCompleted ¥á¥Ã¥»¡¼¥¸¤òȯ¹Ô¤·¤Ê¤¤¤¿¤á¡¢AddTo ¥á¥½¥Ã¥É¤òÉÕÍ¿¤·¤Æ Dispose ¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£


¡ãMonoBehaviour ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë Update ¥á¥½¥Ã¥É¤ò Obsevable ¤È¤·¤Æ°·¤¦ÊýË¡¡ä
        // MonoBehaviour ¤Ê¤¤¾ì¹ç¡¢UpdateAsObservable() ¤ÎÂå¤ï¤ê¤Ë Observable.EveryUpdate() ¤òÍøÍѤ¹¤ë
        Observable.EveryUpdate()
            .Where(_ => charaMove != null && charaAnime != null)
            .Where(_ => Input.GetMouseButton(0))
            .Select(_ => Camera.main.ScreenToWorldPoint(Input.mousePosition))
            .Subscribe(tapPos =>
            {
                charaMove.Move(tapPos);
        
                // ¸þ¤­¤Î¹¹¿·
                UpdateDirection(tapPos);
        
                // °ÜÆ°¤Î¸þ¤­¤È¥¢¥Ë¥á¤Î¸þ¤­¤ÎƱ´ü
                charaAnime.UpdateAnimation(Direction.Value);
            })
            .AddTo(this); // ¥µ¥Ö¥¹¥¯¥ê¥×¥·¥ç¥ó¤ò²ò½ü


¥¯¥é¥¹¿Þ


¡¡¥¯¥é¥¹¤Î´Ø·¸À­¤ËÊѹ¹¤Ï¤¢¤ê¤Þ¤»¤ó¡£³Æ¥¯¥é¥¹¤Î´ØÏ¢À­¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£



¡ã¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¥¯¥é¥¹¤Î´Ø·¸À­¡ä



¡ã´ÉÍý¥¯¥é¥¹¤È¾¤Î¥¯¥é¥¹¤Î´Ø·¸À­¡ä



¡¡£³¤Ä¤Î¥¯¥é¥¹¤¬¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¤¿¤á¡¢¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤Ë SetUpChara ¥á¥½¥Ã¥É¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Ʊ̾¤Î¥á¥½¥Ã¥É¤Ç¤¹¤¬¡¢¼ÂºÝ¤Ë¤Ï¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹Æâ¤Ë½ñ¤¤¤Æ¤¢¤ë½èÍý¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¿¶¤ëÉñ¤¤¤¬ÊѤï¤ê¤Þ¤¹¡£

¡¡¤Þ¤¿ CharaManager ¥¯¥é¥¹¤Ï¾¤Î Chara ¡Á ¥¯¥é¥¹¤òÃΤäƤ¤¤Þ¤¹¤¬¡¢Â¾¤Î¥¯¥é¥¹Æ±»Î¤Ë¤Ï¤Ä¤Ê¤¬¤ê¤¬¤¢¤ê¤Þ¤»¤ó¡£
¤è¤Ã¤Æ¡¢¥¯¥é¥¹´Ö¤Î´Ø·¸À­¤¬Á·ë¹ç²½¤Ç¤­¡¢¥¯¥é¥¹ÆâÉô¤ò½¤Àµ¤¹¤ëºÝ¤Ë¡¢Â¾¤Î¥¯¥é¥¹¤Î¤³¤È¤òµ¤¤Ë¤»¤º¤Ë½¤Àµ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡¤³¤Î¤è¤¦¤Ë¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢Æ±Ì¾¤Î¥á¥½¥Ã¥É¤ò»È¤¦¤¬¡¢¤½¤ÎÆâÍƤޤǤϴØÃΤ·¤Ê¤¤¡¢¤È¤¤¤¦·Á¤Ç½èÍý¤ÎÃê¾Ý²½¤¬¤Ç¤­¡¢
²Ã¤¨¤Æ¡¢Æ±Ì¾¤Î¥á¥½¥Ã¥É¤Ç¤¢¤ê¤Ê¤¬¤é¡¢°Û¤Ê¤ë½èÍý¤ò¼Â¹Ô¤·¤Æ¤¤¤¯(¿¶¤ëÉñ¤¤¤òÊѤ¨¤ë)¤È¤¤¤¦¡¢Â¿ÂÖÀ­¤Î³µÇ°¤â°ì½ï¤ËÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£

¡¡¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ·¿¥×¥í¥°¥é¥à¤Ï¼ÂºÝ¤Ë»È¤¤¤Ê¤¬¤é³Ø½¬¤·¤Æ¤¤¤¯¤È¡¢³µÇ°¤äµ¡Ç½¤ÎÊØÍø¤µ¤Ê¤É¤¬¸«¤¨¤Æ¤­¤Þ¤¹¤Î¤Ç¡¢
¤Ê¤ë¤Ù¤¯½èÍý¤ò½ñ¤¤¤ÆÆ°¤«¤·¤Ê¤¬¤é³Ø½¬¤ò¤·¤Æ¤¤¤¯¤È¤è¤¤¤Ç¤·¤ç¤¦¡£


¡¡
¡¡¥¯¥é¥¹¿Þ¤ò½ñ¤¯¤³¤È¤Ë¤è¤ê¡¢¼«Ê¬¤Î¥¤¥á¡¼¥¸¤òÀ°Íý¤¹¤ëºÝ¤Ë¤âÌòΩ¤Á¤Þ¤¹¤·¡¢Âè»°¼Ô¤Ë¥¯¥é¥¹¤Î¾õÂÖ¤òÀâÌÀ¤¹¤ë¾ì¹ç¤Ë¤â¾ðÊó¤òÀµ³Î¤ËÅÁ¤¨¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£


¥×¥ì¥¤¥ä¡¼Ìò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë³Æ¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¡¢ÀßÄê¤ò¹Ô¤¦


¡¡¤Þ¤º¥×¥ì¥¤¥ä¡¼Ìò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÊ£À½¤·¤Þ¤¹¡£Ê£À½¸å¡¢£±¤Ä¤ÏÈóɽ¼¨¤Ë¤·¤Þ¤¹¡£
¥«¥á¥é¤Ê¤É¤ÇÄɽ¾ÂоݤˤʤäƤ¤¤ë¾ì¹ç¤Ë¤Ï¡¢¥«¥á¥é¤ÎÀßÄêÀè¤â¸«Ä¾¤·¤Æ¥¢¥µ¥¤¥ó¤·Ä¾¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡°ÊÁ°¤Î¾õÂ֤Υ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò»Ä¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ç¤ÎÀßÄêÃͤγÎǧ¤Ê¤É¤â½ÐÍè¤ë¤¿¤á¤Ç¤¹¡£



¡¡Ê£À½¤µ¤ì¤¿Êý¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¢¤ë CharaController ¤Î¥¹¥¯¥ê¥×¥È¤ò Remove ¤·¡¢Âå¤ï¤ê¤Ë CharaManager ¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¤Æ¤¯¤À¤µ¤¤¡£
°ì½ï¤Ë£³¤Ä¤Î¥¯¥é¥¹¤â¼«Æ°Åª¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Þ¤¹¡£¥³¥é¥¤¥À¡¼¤È Rigidbody ¤Ï¤½¤Î¤Þ¤Þ¤ÇÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¤Þ¤¿¡¢BulletGenerator ¥¯¥é¥¹¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤ì¤â¥¢¥¿¥Ã¥Á¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡CharaMove ¥¯¥é¥¹¤Ë¤Ï°Üư®Å٤ȰÜÆ°ÈϰϤÎÀßÄê¡¢CharaAttack ¤Ë¤Ï¹¶·â¤Î´Ö³Ö¤ÎÀßÄ꤬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ì¤¾¤ìÀßÄê¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£


¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü



¡¡°Ê¾å¤ÇÀßÄê¤Ï´°Î»¤Ç¤¹¡£



¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤¹¤ë


¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¡¢¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ò¹Ô¤¦Á°¤ÈƱ¤¸¤è¤¦¤ËÆ°ºî¤¹¤ë¤«¤ò¸¡¾Ú¤·¤Æ¤¯¤À¤µ¤¤¡£


¡ã³Îǧư²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯


À߷ס¢¤ª¤è¤Ó¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤Î½ÅÍ×À­


¡¡¥½¡¼¥¹¥³¡¼¥É¤ò½ñ¤¯Á°¤Ë¡¢À߷פò¹Í¤¨¤ë¤³¤È¤«¤é»Ï¤á¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
°ÊÁ°¤è¤ê¤â¤¿¤¯¤µ¤ó¤Î»þ´Ö¤ò¥¯¥é¥¹¤ÎÀ߷פËÈñ¤ä¤·¤Æ¤ß¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£
¤É¤Î¤è¤¦¤Ê½èÍý¤ò¡¢¤É¤Î¥¯¥é¥¹¤Ë½ñ¤¯¤Î¤«¤òÌÀ³Î¤Ë¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢ÈîÂç²½¤·¤ä¤¹¤¤¥¯¥é¥¹¤òÁ°¤â¤Ã¤ÆǧÃΤ·¤Æ¤ª¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

¡¡¥½¡¼¥¹¥³¡¼¥É¤ò½ñ¤¤¤Æ¤¤¤ë´Ö¤â¡¢¾ï¤Ë¡¢À߷פòƬ¤Ë¹Í¤¨¤Æ¿Ê¤á¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
À߷פϽñ¤­½Ð¤·¤Æ¤ª¤¯¤³¤È¤Ç¹Í¤¨¤Æ¤¤¤ë¤³¤È¤ò¸À¸ì²½¡¦²Ä»ë²½¤Ç¤­¤ë¤Î¤Ç¡¢¤è¤ê¥¤¥á¡¼¥¸¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

¡¡¤Þ¤¿½ñ¤¤¤Æ½ª¤ï¤ê¤Ë¤Ï¤»¤º¡¢¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ò¹Ô¤¦¤³¤È¤âǰƬ¤ËÃÖ¤¤¤Æ¤ª¤¯¤È¡¢ÎɼÁ¤Ê¥³¡¼¥Ç¥£¥ó¥°¤¬¹Ô¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤­¤Þ¤¹¡£

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹