ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2023ǯ09·î10Æü(Æü) 15:50:54ÍúÎò
¶µºà¤ä¥Í¥Ã¥È¤Î¥µ¥¤¥È¤Ç¤â¿¤¯¤½¤¦¤¤¤Ã¤¿½ñ¼°¤¬¾Ò²ð¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¡¡¥½¡¼¥¹¥³¡¼¥É¤ò½ñ¤¯¤³¤È¤Ë´·¤ì¤Æ¤¤¿¤é¡¢¥¯¥é¥¹Æâ¤Î½èÍý¤òÌò³äñ°Ì¤Çʬ³ä¤·¤Æ¡¢Ê£¿ô¤Î¥¯¥é¥¹¤Ëʬ¤±¤ÆÌò³ä¤´¤È¤ËÀ©¸æ¤¹¤ëÊýË¡¤ò³Ø½¬¤·¡¢¼ÂÁ©¤·¤Þ¤·¤ç¤¦¡£
¡ã¿·¤·¤¤³Ø½¬ÆâÍÆ¡ä
¡¡¡¦¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹ ¡¡¡¦¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î¼ÂÁõ¤È¥á¥½¥Ã¥É¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É½èÍý ¡¡¡¦¥×¥í¥Ñ¥Æ¥£¤ÎÍý²ò¤ò¿¼¤á¤ë
¡¡¤è¤¯¤¢¤ë¥±¡¼¥¹¤È¤·¤Æ¡¢CharaController ¥¯¥é¥¹¤ä GameManager ¥¯¥é¥¹¤ÎÈîÂç²½¤¬¤¢¤ê¤Þ¤¹¡£
¡¡¤³¤ì¤Ï»ÅÊý¤Î¤Ê¤¤Éôʬ¤Ç¤â¤¢¤ê¤Þ¤¹¡£Æä˽鿴¼Ô¤Î¾ì¹ç¤ä¡¢¥×¥í¥°¥é¥à¤Ë´·¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢
Ê£¿ô¤Î¥¯¥é¥¹¤Ë½èÍý¤ò½ñ¤¯¤³¤È¤Ë¤è¤Ã¤Æ½èÍý¤òÆɤ߲ò¤¯¤³¤È¤¬Æñ¤·¤¯¤Ê¤ë¤¿¤á¡¢ºÇ½é¤Î¤¦¤Á¤Ï£±¤Ä¤Î¥¯¥é¥¹¤Ë½¸Ì󤷤Ƥ¤¤¯¤³¤È¤¬Â¿¤¤¤Ç¤¹¡£
¡¡¤Ç¤¹¤¬¡¢¤º¤Ã¤È¤½¤Î¼êË¡¤·¤«ÃΤé¤Ê¤¤¤È¡¢¥¯¥é¥¹¤ÎÀß·×ÊýË¡¤ä¡¢¥½¡¼¥¹¥³¡¼¥É¤ò½ñ¤¯¥¹¥¥ë¤Î¥¹¥Æ¥Ã¥×¥¢¥Ã¥×¤¬½ÐÍè¤Þ¤»¤ó¡£
¡¡¤³¤³¤Ç¤Ï£±¤Ä¤Î¥¯¥é¥¹¤Ë½ñ¤¤¤¿½èÍý¤òµ¡Ç½Ê̤Ëʬ¤±¤Æ¡¢Ê£¿ô¤Î¥¯¥é¥¹¤Ëʬ³ä¤·¡¢À©¸æ¤·¤Æ¤¤¤¯ÊýË¡¤ò¼ÂÁ©¤·¤Æ³Ø½¬¤·¤Þ¤·¤ç¤¦¡£
¡¡
¡¡¼ÂºÝ¤Ë£±¤Ä¤Î¥¯¥é¥¹¤Ë¿§¡¹¤Ê½èÍý¤¬¤Þ¤È¤Þ¤Ã¤Æ¤¤¤ë¥½¡¼¥¹¥³¡¼¥É¤òÍøÍѤ·¡¢¥¯¥é¥¹¤Îʬ³ä¤ò¹Ô¤Ã¤Æ¤¤¤¤Þ¤¹¡£
¡¡º£²ó¤Ï CharaController ¤òÎã¤Ë¡¢Ìò³ä¤´¤È¤Ë½èÍý¤òʬ³ä¤·¤Æ¹Í¤¨¤Æ¤ß¤Þ¤¹¡£
CharaController.cs
¡¡¥×¥ì¥¤¥ä¡¼Ìò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¹½À®¤Ï¡¢¼¡¤ÎÄ̤ê¤Ç¤¹¡£
¹½À®

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

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

¡¡CharaController ¥¯¥é¥¹Æâ¤Ë¤Ï¡¢Â¿¤¯¤Î½èÍý¤¬¤¢¤ê¤Þ¤¹¡£
¤½¤ì¤é¤Î½èÍý¤ò¡¢¤É¤¦¤¤¤Ã¤¿Ìò³ä¤ò²Ì¤¿¤·¤Æ¤¤¤ë¤Î¤«¡¢¤È¤¤¤¦´ÑÅÀ¤Çʬ³ä¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¤½¤Îʬ³ä¤·¤¿¤â¤Î¤¬Ìò³ä¤Î£±¤Ä¤È¤Ê¤ê¡¢Æ±»þ¤Ë¡¢£±¤Ä¤Î¥¯¥é¥¹¤È¤·¤ÆºîÀ®¤·¤Æ¤¤¤¯¡¢¤È¤¤¤¦Êý¸þÀ¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤Þ¤¿½èÍý¤ÎÆâÉô¤Ë¤Ï¡¢Ê£¿ô¤Î½èÍýÆâ¤Ç¶¦Ä̤ÇÍøÍѤ·¤Æ¤¤¤ë½èÍý¤â¸«¼õ¤±¤é¤ì¤Þ¤¹¡£
Î㤨¤Ð½½»ú¥¡¼ÆþÎÏÃͤϰÜÆ°¤Î½èÍý¤È¡¢¥¢¥Ë¥á¤Î¸þ¤¤Î½èÍý¤ÎξÊý¤ÇƱ¤¸Ãͤ¬ÍøÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤¦¤¤¤Ã¤¿Éôʬ¤Ï¶¦Ä̤·¤Æ¤¤¤ëÉôʬ¤È¤·¤Æ¡¢Ê̤ÎÌò³ä(¶¦Ä̽èÍý¤ò¤Þ¤È¤á¤¿¥¯¥é¥¹)¤È¤·¤Æ¹Í¤¨¤Þ¤¹¡£
¡¡¤Ä¤Þ¤ê¡¢°ÜÆ°¤È¥¢¥Ë¥á¤Î½èÍý¤«¤é¤Ï¡Ö½½»ú¥¡¼ÆþÎÏÃ͡פνèÍý¤Ï´Þ¤Þ¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤Ç¤Ï¡¢É¬ÍפÊÃͤϤɤ¦¤¹¤ë¤Î¤«¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¤¬¡¢¡Ö¶¦Ä̤ÇÍøÍѤ¹¤ë½èÍý¡×¤ò¤Þ¤È¤á¤¿Ìò³ä(¥¯¥é¥¹)¤òºî¤ê¡¢
¤½¤³¤«¤é¡Ö½½»ú¥¡¼ÆþÎÏÃͤò¼õ¤±¼è¤Ã¤Æ¡×ÍøÍѤ¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹Æâ¤ÇƱ¤¸½èÍý¤ò½ñ¤¯¤Î¤Ç¤Ê¤¯¤Æ¡¢¶¦Ä̤·¤Æ¤¤¤ë¾ðÊó¤ò´ÉÍý¤·¤Æ¤¤¤ë¥¯¥é¥¹¤«¤é¼õ¤±¼è¤Ã¤ÆÍøÍѤ¹¤ë¡¢¤È¤¤¤¦¹Í¤¨Êý¤Ç¤¹¡£
¤³¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¡¢½½»ú¥¡¼ÆþÎϤνèÍý¤Ï¡¢¸Ä¡¹¤Î¥¯¥é¥¹¤Ë½ñ¤¯¤Î¤Ç¤Ï¤Ï¤Ê¤¯¡¢¶¦Ä̤·¤ÆÍøÍѤ¹¤ë¥¯¥é¥¹Æâ¤Î¤ß(£±¤Ä¤Î¥¯¥é¥¹)¤Ë½¸Ìó½ÐÍè¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¤Ë¤Ï¥á¥½¥Ã¥É¤Î°ú¿ô¤äÌá¤êÃͤòÍøÍѤ¹¤ë¤³¤È¤¬Â¿¤¤¤Ç¤¹¡£
¡¡¥¯¥é¥¹¤òʬ³ä¤¹¤ë¤Ë¤¢¤¿¤Ã¤Æ¤Ï¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹µ¡Ç½¤òÍøÍѤ·¤Æ¡¢Ìò³ä(ÀÕ̳)¤Îʬ³ä¤ò¹Ô¤Ã¤Æ¤¤¤¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¡¢Ê¬³ä¤·¤ÆºîÀ®¤µ¤ì¤ë¥¯¥é¥¹¤Ï¡¢¤¹¤Ù¤Æ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ë·Á¼°¤Ë¤·¤Þ¤¹¡£
¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÏÃê¾Ý¥¯¥é¥¹¤ÈƱÍͤǡ¢¤½¤ìñÂΤǤϥ¤¥ó¥¹¥¿¥ó¥¹¤¬ºîÀ®¤Ç¤¤Þ¤»¤ó¡£
¤¤¤º¤ì¤«¤Î¥¯¥é¥¹¤Ë¼ÂÁõ¤µ¤»¤ëÁ°Äó¤ÇÀ߷פò¹Ô¤¦µ¡Ç½¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡£±¤Ä¤Î¥¯¥é¥¹¤òÊ£¿ô¤Î¥¯¥é¥¹¤Ëʬ³ä¤¹¤ë¤Ë¤¢¤¿¤ê¡¢¥¯¥é¥¹Æâ¤Î½èÍý¤òµ¡Ç½Ê̤˻Åʬ¤±¤·¤Þ¤¹¡£
Î㤨¤Ð¡¢°ÜÆ°¤Î½èÍý¡¢¥¢¥Ë¥á¤Î½èÍý¡¢¤È¤¤¤¦É÷¤Ë¡¢¸½ºß¤Î CharaController ¥¯¥é¥¹¤Ë½ñ¤«¤ì¤Æ¤¤¤ë½èÍý¤òÌò³ä¤´¤È¤Ë¡¢ÊÑ¿ô¤È¥á¥½¥Ã¥É¤ò¥»¥Ã¥È¤Ë¤·¤Æʬ¤±¤Þ¤¹¡£
¡¡À߷פȼÂÁõ¤Ë¤¢¤¿¤ê¡¢Á´ÂΤÎÀ߷פ¬´°Î»¤·¤¿¤é¡¢¤Þ¤º¤Ï¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤«¤é½çÈ֤˺îÀ®¤·¤Æ¤¤¤¯¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òºîÀ®¤·¤¿¤é¡¢¤½¤ì¤ò¼ÂÁõ¤·¤¿ Chara ¡Á ¥¯¥é¥¹¤òºîÀ®¤·¡¢¤³¤ì¤ËÌò³ä¤´¤È¤Î½èÍý¤ò¤Þ¤È¤á¤Æ¤¤¤¤Þ¤¹¡£
¡¡CharaController ¥¯¥é¥¹Æâ¤Î½èÍý¤òµ¡Ç½Ê̤Ëʬ¤±¤Æ¤ß¤Þ¤·¤ç¤¦¡£
²¼µ¤Î¤è¤¦¤Ê»Åʬ¤±¤Ë¤è¤ëʬÎब¤Ç¤¤ë¤È»×¤¤¤Þ¤¹¡£
¡¦°ÜÆ°¤µ¤»¤ëµ¡Ç½ ¡¦¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò°ÜÆ°Êý¸þ¤ËƱ´ü¤µ¤»¤ëµ¡Ç½ ¡¦¹¶·â¤¹¤ëµ¡Ç½ ¡¦Hp ¤ò´ÉÍý¤¹¤ëµ¡Ç½ ¡¦¥ì¥Ù¥ë¤È Exp ¤ò´ÉÍý¤¹¤ëµ¡Ç½
¡¡¤³¤Î¤¦¤Á¡¢°ÜÆ°¤µ¤»¤ë½èÍý¤È¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò°ÜÆ°Êý¸þ¤ËƱ´ü¤µ¤»¤ë½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¡¼ÆþÎϤÎÃͤòƱ¤¸¾ðÊó¤È¤·¤ÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¶¦Ä̤¹¤ë½èÍý¤ò¤Þ¤È¤á¤¿¥¯¥é¥¹¤ò£±¤ÄºîÀ®¤·¡¢¤Þ¤¿¡¢¤³¤Î¥¯¥é¥¹¤Ç¡¢¤½¤ì°Ê³°¤Î¥¯¥é¥¹¤ò´ÉÍý¤·¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢´ÉÍý¼Ô(¥Þ¥Í¡¼¥¸¥ã¡¼)¤È¤Ê¤ë¥¯¥é¥¹¤ò¿·¤·¤¯ÍÑ°Õ¤·¡¢Â¾¤Îµ¡Ç½¤ò¤Þ¤È¤á¾å¤²¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡ã¿·¤·¤¯ºî¤ë¡ä
¡¦°ÜÆ°¤µ¤»¤ëµ¡Ç½¤ò»ý¤Ä¥¯¥é¥¹ ¡¦¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò°ÜÆ°Êý¸þ¤ËƱ´ü¤µ¤»¤ëµ¡Ç½¤ò»ý¤Ä¥¯¥é¥¹ ¡¦¹¶·â¤¹¤ëµ¡Ç½¤ò»ý¤Ä¥¯¥é¥¹ ¡¦¥Þ¥Í¡¼¥¸¥ã¡¼¥¯¥é¥¹
¡¡º£²ó¤Ï Hp ¤ò´ÉÍý¤¹¤ëµ¡Ç½¤È¥ì¥Ù¥ë¤È Exp ¤ò´ÉÍý¤¹¤ëµ¡Ç½¤Ë¤Ä¤¤¤Æ¤Ï¥¯¥é¥¹¤ÏºîÀ®¤·¤Þ¤»¤ó¡£
¤³¤Î³Ø½¬¤òÄ̤¸¤Æµ¡Ç½¤Îʬ³äÊýË¡¤ò¹Í¤¨¤Æ¡¢¼«ºî¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡class ¤ÎÉôʬ¤ò interface ¤Ë½ñ¤´¹¤¨¤ë¤³¤È¤Ç¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡ã¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¡ä
public interface IChara { void SetUpChara(); }
¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¡¢¥×¥í¥°¥é¥à¤ÎÀ߷פˤª¤¤¤Æ¡¢¥¯¥é¥¹¤¬»ý¤Ä¤Ù¤¥á¥½¥Ã¥É¤ä¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤¹¤ë¤¿¤á¤Î¡Ö·ÀÌó¡×¤Þ¤¿¤Ï¡Ö¼è¤ê·è¤á¡×¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤¹¡£
¡¡Î㤨¤Ð¡¢¼Ö¤ä¥Ð¥¤¥¯¤È¤¤¤¦¥¯¥é¥¹¤¬¤¢¤ë¤È¤·¤Þ¤¹¡£¤½¤ì¤¾¤ì°Û¤Ê¤ëµ¡Ç½¤ò»ý¤Ä¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢°ÜÆ°¤Ç¤¤ë¤È¤¤¤¦¶¦Ä̤ÎÆÃÀ¤¬¤¢¤ê¤Þ¤¹¡£
¤³¤Î¶¦Ä̤ÎÆÃÀ¤ò¡Ö°ÜÆ°²Äǽ¡×¤È¤·¤Æɽ¸½¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤½¤ì¤¬¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¤¹¡£
¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¶ñÂÎŪ¤Ê¼ÂÁõ¤ò»ý¤¿¤º¡¢Ã±¤Ë¥á¥½¥Ã¥É¤ä¥×¥í¥Ñ¥Æ¥£¤ÎÀë¸À¤À¤±¤ò»ý¤Á¤Þ¤¹¡£
¥¯¥é¥¹¤¬¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ë¤³¤È¤Ç¡¢¤½¤Î¥¯¥é¥¹¤¬¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÇÄêµÁ¤µ¤ì¤¿¥á¥½¥Ã¥É¤ä¥×¥í¥Ñ¥Æ¥£¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬µÁ̳ÉÕ¤±¤é¤ì¤Þ¤¹¡£
¶¯À©ÎϤ¬¤¢¤ë¤È¤â¸À¤¤´¹¤¨¤é¤ì¤Þ¤¹¡£
¡¡Àè¤Û¤É¤Î¼Ö¤òÎã¤Ë¤·¤¿¤È¤¡¢¶ñÂÎŪ¤Ë¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê·Á¤Ç¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÄêµÁ¤·¤Þ¤¹¡£
public interface IMovable { void MoveForward(float distance); void TurnLeft(float angle); void TurnRight(float angle); }
¡¡¤½¤·¤Æ¡¢¼Ö¤ä¥Ð¥¤¥¯¤Ê¤É¤Î¥¯¥é¥¹¤¬¤³¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤Þ¤¹¡£
public class Car : IMovable { // ¼Ö¤ÎÆÃͤΥץí¥Ñ¥Æ¥£¤ä¥á¥½¥Ã¥É¤ÎÄêµÁ // ... public void MoveForward(float distance) { // ¼Ö¤ò»ØÄꤷ¤¿µ÷Î¥¤À¤±Á°¿Ê¤µ¤»¤ë½èÍý // ... } public void TurnLeft(float angle) { // ¼Ö¤ò»ØÄꤷ¤¿³ÑÅÙ¤À¤±º¸¤Ë¶Ê¤²¤ë½èÍý // ... } public void TurnRight(float angle) { // ¼Ö¤ò»ØÄꤷ¤¿³ÑÅÙ¤À¤±±¦¤Ë¶Ê¤²¤ë½èÍý // ... } }
public class Bike : IMovable { // ¥Ð¥¤¥¯¤ÎÆÃͤΥץí¥Ñ¥Æ¥£¤ä¥á¥½¥Ã¥É¤ÎÄêµÁ // ... public void MoveForward(float distance) { // ¥Ð¥¤¥¯¤ò»ØÄꤷ¤¿µ÷Î¥¤À¤±Á°¿Ê¤µ¤»¤ë½èÍý // ... } public void TurnLeft(float angle) { // ¥Ð¥¤¥¯¤ò»ØÄꤷ¤¿³ÑÅÙ¤À¤±º¸¤Ë¶Ê¤²¤ë½èÍý // ... } public void TurnRight(float angle) { // ¥Ð¥¤¥¯¤ò»ØÄꤷ¤¿³ÑÅÙ¤À¤±±¦¤Ë¶Ê¤²¤ë½èÍý // ... } }
¡¡¤³¤Î¤è¤¦¤Ë¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢°Û¤Ê¤ë¥¯¥é¥¹¤Ç¤â¶¦Ä̤ε¡Ç½¤ò»ý¤¿¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤Þ¤¿¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î²¸·Ã¤ÏÁ·ë¹çÀ¤ò¹â¤á¤ë¤³¤È¤Ç¡¢¤è¤ê½ÀÆð¤Ç³ÈÄ¥²Äǽ¤ÊÀ߷פò¼Â¸½¤¹¤ë¤³¤È¤¬¤Ç¤¤ëÅÀ¤Ë¤¢¤ê¤Þ¤¹¡£
¤½¤ì¤Ë¤è¤Ã¤Æ¡¢½èÍý¤òÃê¾Ý²½¤·¤Æ¤¤¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡º£²ó¤Î¥¯¥é¥¹¤Îʬ³ä¤Ë¤Ï¡¢Ãê¾Ý²½¤Î¹Í¤¨¤Ë´ð¤Å¤¤¤Æ¼ÂÁõ¤ò¹Ô¤Ã¤Æ¤¤¤¤Þ¤¹¡£
¡ã»²¹Í¥µ¥¤¥È¡ä
MicroSoft
interface(C# ¥ê¥Õ¥¡¥ì¥ó¥¹)
++C++; // ̤³ÎǧÈô¹Ô C ÍÍ
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹
Qiita @yutorisan ÍÍ
¡ÚC#¡Û¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ÎÍøÅÀ¤¬Íý²ò¤Ç¤¤Ê¤¤¿Í¤Ï¡Ö¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ë¤Ï£³¤Ä¤Î¥¿¥¤¥×¤¬¤¢¤ë¡×¤³¤È¤òÍý²ò¤·¤è¤¦
¥¨¥ó¥¸¥Ë¥¢¤¬Á÷¤ë·êÁÒÀ¸³è¤Î¤¹¡µ¤á ÍÍ
¡ÚC#¡ÛInterface¤Î»È¤¤¤É¤³¤í¤ÏÇÛÎó¤Ö¤ó²ó¤·¤Î¥Ý¥ê¥â¡¼¥Õ¥£¥º¥à¤ÇÍý²ò½ÐÍè¤ë¡ª
¡¡ºîÀ®¤·¤¿ IChara ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¥¯¥é¥¹¤Ë¼ÂÁõ¤·¤Æ¡¢CharaController ¤ÎÃæ¿È¤òÊ£¿ô¤Î¥¯¥é¥¹¤Ëʬ³ä¤·¤Æ¤¤¤¤Þ¤¹¡£
¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤¿¾ì¹ç¡¢¼ÂÁõ¤·¤Æ¤¤¤ë¥¯¥é¥¹¤Ë¤Ïɬ¤º¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹Æâ¤Ë¤¢¤ë¥á¥½¥Ã¥É¤ä¥×¥í¥Ñ¥Æ¥£¤ò½ñ¤¯(¼ÂÁõ)¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
½ñ¤«¤Ê¤¤¤È¥¨¥é¡¼¤¬½Ð¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤âÆÃħ¤Ç¤¹¡£
¡¡¼ÂÁõ¤·¤¿¥á¥½¥Ã¥É¤Ï public °·¤¤¤Ë¤Ê¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¤Ï¥á¥½¥Ã¥É¤ÎÄêµÁ¤À¤±¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤Ç½èÍý¤ÎÃæ¿È¤¬¤¢¤ê¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢override ¥¡¼¥ï¡¼¥É¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢½èÍý¤ò¼ÂºÝ¤Ë½ñ¤¹þ¤ó¤Ç¡¢Ê¸»úÄ̤ê¡Ö¼ÂÁõ¡×¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡³Æ¥¯¥é¥¹¤´¤È¤ËÌÀ³Î¤ÊÌò³ä¤òÀߤ±¤ë¤È¤È¤â¤Ë¡¢ÀÕ̳¤Î¤Ê¤¤½èÍý¤Ï½ñ¤¹þ¤Þ¤Ê¤¤¤è¤¦¤ËÇÛθ¤·¤Þ¤¹¡£
¡¡¤Þ¤¿ CharaManager ¤¬¡¢Ê¬³ä¤·¤¿¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤Î´ÉÍý¼Ô¤È¤Ê¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢³Æ¥¯¥é¥¹Æ±»Î¤Ï¤ª¸ß¤¤¤òÃΤé¤Ê¤¤¾õÂÖ(¥á¥ó¥ÐÊÑ¿ô¤Ç´ÉÍý¤·¤Æ¤¤¤Ê¤¤¡£Á·ë¹ç²½)¤òÌÜŪ¤Ë¤â¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¥¥ã¥é¤Î¸þ¤¤¤Æ¤¤¤ëÊý¸þ¤Î¾ðÊó¤Ë´Ø¤·¤Æ¤Ï¡¢Ê£¿ô¤Î¥¯¥é¥¹¤ÇÍøÍѤ¹¤ë¤¿¤á¡¢¤½¤Î¤è¤¦¤Ê¾ðÊó¤Ï CharaManager ¥¯¥é¥¹Æâ¤Ë´ÉÍý¤·¤Þ¤¹¡£
³Æ¥¯¥é¥¹Æâ¤ÇÊÌ¡¹¤ËÊý¸þ¤Î¾ðÊó¤Ï¼èÆÀ¤»¤º¡¢É¬Íפʥ¯¥é¥¹(CharaAnime ¤È CharaAttack)¤Ë¡¢¥á¥½¥Ã¥É¤Î°ú¿ô¤òÄ̤¸¤ÆÁ÷¤êÆϤ±¤ë·Á¤Ç¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
¡¡°ÜÆ°¤Ë´Ø¤¹¤ëµ¡Ç½¤òÌò³ä¤È¤·¤Æ»ý¤Ä¥¯¥é¥¹¤Ç¤¹¡£
CharaController ¥¯¥é¥¹¤Ë¤¢¤Ã¤¿¡¢°ÜÆ°¤Ë´Ø¤¹¤ë¥á¥ó¥ÐÊÑ¿ô¤È¥á¥½¥Ã¥É¤ò¤³¤Á¤é¤Ë°Ü¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Ç¤¢¤ë SetUpChara ¥á¥½¥Ã¥É¤ò¼ÂÁõ¤·¡¢¤³¤Î¥¯¥é¥¹Æȼ«¤Î¿¶¤ëÉñ¤¤¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡°ÜÆ°¤Î½èÍý¤Ï²èÌ̤ò¥¯¥ê¥Ã¥¯(¥¿¥Ã¥×)¤·¤Æ¤¤¤ë´Ö¡¢¤½¤ÎÊý¸þ¤Ë¸þ¤«¤Ã¤Æ°ÜÆ°¤¹¤ë¥¿¥¤¥×¤Î°ÜÆ°ÊýË¡¤Ç¤¹¡£
CharaManager ¤Î Update ¥á¥½¥Ã¥ÉÆâ¤Ç¥¯¥ê¥Ã¥¯¤ÎÆþÎϤò¼õ¤±ÉÕ¤±¡¢Move ¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë°ÜÆ°Êý¸þ¤Î¾ðÊó¤ò¤â¤é¤¦¤³¤È¤Ç¡¢°ÜÆ°¤ò¼Â¹Ô¤·¤Þ¤¹¡£
¡¡¥¥ã¥é¤Î°ÜÆ°ÈϰϤò limitPosX ÊÑ¿ô¤È limitPosY ÊÑ¿ô¤Ç´ÉÍý¤·¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤³¤Ç¤ÏÊ̤μÂÁõÊýË¡¤ò¿·¤·¤¯Äɲ䷤Ƥ¤¤Þ¤¹¡£
¡¡¸µ¤Î½èÍý¤Ç¤âÌäÂê¤Ê¤¯µ¡Ç½¤·¤Þ¤¹¤¬¡¢º£²ó¤ÎÊýË¡¤Ï¡¢¥·¡¼¥ó¥Ó¥å¡¼Æâ¤Ë Create Empty ¤ÇºîÀ®¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò£²¤ÄÇÛÃÖ¤·¡¢
¤½¤ì¤é¤òÂгÑ(º¸²¼¤È±¦¾å)¤ËÇÛÃÖ¤¹¤ë¤³¤È¤Ç¡¢¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤ò°ÜÆ°ÈϰϤÎÃͤȤ·¤ÆÍøÍѤ¹¤ë¤â¤Î¤Ç¤¹¡£
¡¡¿·¤·¤¤ÊÑ¿ô¤Ï Transform ·¿¤ÇÀë¸À¤¹¤ë¤¿¤á¡¢¥·¡¼¥ó¥Ó¥å¡¼Æâ¤Ë¤¢¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤ò»²¾È¤·¤Æ°ÜÆ°ÈϰϤòÀßÄꤹ¤ëÊýË¡¤Ë¤Ê¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢°ÊÁ°¤Î¼ÂÁõÊýË¡¤è¤ê¤âÍ»Ä̤¬Íø¤¤ä¤¹¤¯¡¢°ÜÆ°ÈϰϤòÊѤ¨¤¿¤¤¾ì¹ç¤Ë¤Ï¥·¡¼¥ó¥Ó¥å¡¼Æâ¤Ë¤¢¤ë¥ª¥Ö¥¸¥§¥¯¥È¤òÆ°¤«¤¹¤À¤±¤ÇÊѹ¹¤Ç¤¤Þ¤¹¡£
¡¡¥¹¥Æ¡¼¥¸¤Î¥µ¥¤¥º¤Ê¤É¤ÏÊѹ¹¤Ë¤Ê¤ë²ÄǽÀ¤â¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ÎÅÔÅÙ¡¢ÊÑ¿ô¤ÎÃͤòÅÐÏ¿¤·Ä¾¤¹ÊýË¡¤è¤ê¤â
¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤ò»²¾È¤·¤Æ¥×¥í¥°¥é¥à¼«ÂΤ¬¼«Æ°Åª¤ËÈϰϤòÄ´À°¤·¤Æ¤¯¤ì¤ëÊý¼°¤ÎÊý¤¬ÈÆÍÑÀ¤È½¤Àµ¤Ë¶¯¤¤À߷פˤʤê¤Þ¤¹¡£
¹½À®

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

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

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

¡¡Â¾¤Î¥²¡¼¥à¤Ë¤â±þÍѤǤ¤Þ¤¹¡£
¡¡¥¢¥Ë¥á¤Ë´Ø¤¹¤ëµ¡Ç½¤òÌò³ä¤È¤·¤Æ»ý¤Ä¥¯¥é¥¹¤Ç¤¹¡£
CharaController ¥¯¥é¥¹¤Ë¤¢¤Ã¤¿¡¢¥¢¥Ë¥á¤Ë´Ø¤¹¤ë¥á¥ó¥ÐÊÑ¿ô¤È¥á¥½¥Ã¥É¤ò¤³¤Á¤é¤Ë°Ü¤·¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢¥ê¥Æ¥é¥ëɽµ¤·¤Æ¤¤¤¿ Animator ¤Î Parameter ÃͤˤĤ¤¤Æ¡¢¥á¥ó¥ÐÊÑ¿ô¤òÄɲä·¤ÆÃÖ¤´¹¤¨¤Æ¤ê¤Þ¤¹¡£
¡¡¤³¤Î¥¯¥é¥¹¤Ç¤Ï°ÜÆ°Êý¸þ¤Ë¹ç¤ï¤»¤¿¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎƱ´ü½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
Àè¤Û¤É¤Î CharaMove ¥¯¥é¥¹¤ÈƱÍͤˡ¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë SetUpChara ¥á¥½¥Ã¥ÉÆâ¤Ë¤Æ Animator ¥¯¥é¥¹¤Î¼èÆÀ¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡Àè¤Û¤É¤Î CharaMove ¥¯¥é¥¹¤Î SetUpChara ¥á¥½¥Ã¥É¤Ç¤Ï Debug.Log ¥á¥½¥Ã¥É°Ê³°¤Ë¤ÏÆä˲¿¤â½èÍý¤Ï½ñ¤¹þ¤ó¤Ç¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
¤³¤Î¤è¤¦¤Ë¡¢Æ±¤¸¥á¥½¥Ã¥É¤Ç¤¢¤Ã¤Æ¤â¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë(½ñ¤«¤ì¤Æ¤¤¤ë)ÆâÍƤ¬°Û¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£
¡¡¤Ê¤ª¡¢SetUpChara ¥á¥½¥Ã¥É¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¼èÆÀ¤¹¤ëÌ¿Îá¤Ï
»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ë Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤òÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£
»Ò¥ª¥Ö¥¸¥§¥¯¥È¤¬¤Ê¤¤¹½À®¤Î¾ì¹ç¤Ë¤Ï¡¢SetUpChara ¥á¥½¥Ã¥É¤Î½èÍý¤òŬµ¹½¤Àµ¤·¤Æ¡¢¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¼èÆÀÀè¤òÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡if / else ʸ¤Ë¤è¤ëʬ´ô½èÍý¤Î¤¦¤Á¡¢½èÍýÆâÉô¤ÇƱ¤¸ÊÑ¿ô¤ËÂФ·¤ÆÂåÆþ½èÍý¤ò¹Ô¤¦¾ì¹ç¤Ë¤Ï¡¢»°¹à±é»»»Ò¤òÍøÍѤ·¤Æµ½Ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
ËÜÍè¤Î if /else ʸ¤ÈÈæ³Ó¤·¤Ê¤¬¤é¹½Ê¸¤òÆɤ߲ò¤¤¤Æ¤ß¤Þ¤·¤ç¤¦¡£
»²¹Íµ»ö
@crazy_travelerÍÍ
»²¹Í¤Ë¤Ê¤ë»°¹à±é»»»Ò
¡¡¹¶·â¤Ë´Ø¤¹¤ëµ¡Ç½¤òÌò³ä¤È¤·¤Æ»ý¤Ä¥¯¥é¥¹¤Ç¤¹¡£
CharaController ¥¯¥é¥¹¤Ë¤¢¤Ã¤¿¡¢¹¶·â¤Ë´Ø¤¹¤ë¥á¥ó¥ÐÊÑ¿ô¤È¥á¥½¥Ã¥É¤ò¤³¤Á¤é¤Ë°Ü¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤ÎºÝ¤Ë¥á¥½¥Ã¥É̾¤òÊѹ¹¤·¤¿¤ê¡¢¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤òľÀܼ¹Ԥ·¤Ê¤¤¤¿¤á¤ËÃç²ðÌò¤Î¥á¥½¥Ã¥É¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£
¡¡¥Ý¥¤¥ó¥È¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤ÎºÇ¿·¤ÎÊý¸þ¤Î¾ðÊó¤ò CharaManager ¤«¤é»²¾È¤¹¤ë¤¿¤á¤Î¥×¥í¥Ñ¥Æ¥£¤òÍÑ°Õ¤·¤Æ¤¤¤ëÉôʬ¤Ç¤¹¡£
C# ¤Î¥×¥í¥Ñ¥Æ¥£¤Ï¡¢ÃÍ·¿¤Ç¤¢¤Ã¤Æ¤â»²¾È·¿¤Ç¤¢¤Ã¤Æ¤â¡¢³°Éô¤ÎÊÑ¿ô¤äÃͤòÊÝ»ý¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¥²¥Ã¥¿¡¼¤ä¥»¥Ã¥¿¡¼¤Î¥á¥½¥Ã¥É¤òÄ̤¸¤Æ³°Éô¤È¤ÎÃͤΤä¤ê¼è¤ê¤ò¹Ô¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¥×¥í¥Ñ¥Æ¥£¤òÄ̤¸¤ÆÃͤòÀßÄꤹ¤ë¤È¡¢ÆâÉô¤Ç¤ÎÃͤΥ³¥Ô¡¼¤¬¹Ô¤ï¤ì¡¢¤½¤Î¸å¤â³°ÉôÊÑ¿ô¤¬¹¹¿·¤µ¤ì¤ë¤È¥×¥í¥Ñ¥Æ¥£¤Î¥»¥Ã¥¿¡¼¤¬¸Æ¤Ó½Ð¤µ¤ì¤ÆÃͤ¬¹¹¿·¤µ¤ì¤Þ¤¹¡£
¤³¤Î»ÅÁȤߤˤè¤ê¡¢ºÇ¿·¤Î¾ðÊó¤ò¥×¥í¥Ñ¥Æ¥£¤òÄ̤¸¤Æ»²¾È¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡º£²ó¤Ç¤¢¤ì¤Ð¡¢CharaManager ¤Ë¤¢¤ë direction ÊÑ¿ô¤Ï Vector2 ·¿¤Ç¤¢¤ê¡¢ÃÍ·¿¤Ç¤¹¡£
¤½¤Î¾ðÊó¤ò»²¾È¤¹¤ë¤¿¤á¤ËÍÑ°Õ¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤Î·¿¤â Vector3 ¤ÇÃÍ·¿¤Ç¤¹¤¬¡¢¥×¥í¥Ñ¥Æ¥£¤ò²ð¤·¤ÆÃͤòÀßÄꤹ¤ë»ö¤Ç¡¢ºÇ¿·¤Î»²¾È¤¬²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤Îµ¡Ç½¤Ë¤è¤ê¡¢CharaManager ¤Î¾ðÊó¤ò¸µ¤Ë¼«Æ°Åª¤ËºÇ¿·¤Î¥×¥ì¥¤¥ä¡¼¤ÎÊý¸þ¤Î¾ðÊó¤ò¹¹¿·¤Ç¤¤ë»ÅÁȤߤòƳÆþ¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤Þ¤¿¿·¤·¤¤µ¡Ç½¤È¤·¤Æ¡¢¹¶·â¤ò°ì»þÄä»ß/ºÆ³«¤¹¤ë¤¿¤á¤Îµ¡Ç½¤òÄɲä·¤Þ¤¹¡£
¡¡bool ·¿¤ÎÊÑ¿ô¤Ï ! ±é»»»Ò¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢ÂåÆþ¤¹¤ëÃͤòÆþ¤ìÂؤ¨¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
!isAttack ¤¬ true ¤Î¾ì¹ç¤Ë¤Ï false ¤Ë¤Ê¤ê¡¢false ¤Î¾ì¹ç¤Ë¤Ï true ¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¾åµ¤Î£³¤Ä¤Î¥¯¥é¥¹¤ò¤Þ¤È¤á¤Æ´ÉÍý¤¹¤ë¥¯¥é¥¹¤Ç¤¹¡£
¤³¤Î¥¯¥é¥¹¤Ë¤Ï RequireComponent °À¤òÉÕÍ¿¤·¡¢³ºÅö¤¹¤ë£³¤Ä¤Î¥¯¥é¥¹¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¤³¤Î¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤¹¤ë¤È¡¢Àè¤Û¤É¤Î£³¤Ä¤Î¥¯¥é¥¹¤â¼«Æ°Åª¤ËÄɲäǥ¢¥¿¥Ã¥Á¤µ¤ì¤Þ¤¹¡£
¥¢¥¿¥Ã¥Á¤Î¼ê´Ö¤¬¾Ê¤±¤ë¤È¤È¤â¤Ë¡¢¥¢¥¿¥Ã¥Á˺¤ì¤òËɻߤ¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
¡¡¤³¤Î¥¯¥é¥¹¤Î¤ß¤¬£³¤Ä¤Î¥¯¥é¥¹¤ò¥á¥ó¥ÐÊÑ¿ô¤È¤·¤Æ´ÉÍý¤·¡¢¤½¤ì¤¾¤ì¤Î½èÍý¤ËÂФ·¤ÆÌ¿Îá¤ò½Ð¤·¤Æ¤¤¤Þ¤¹¡£
¥È¥Ã¥×¥À¥¦¥ó·¿¤Î¤è¤¦¤ÊÌ¿Îá·ÏÅý¤Î»ÅÁȤߤò¥¤¥á¡¼¥¸¤·¤Æ¤â¤é¤¨¤ì¤Ðʬ¤«¤ê¤ä¤¹¤¤¤Ç¤·¤ç¤¦¡£
¡¡¤Þ¤¿¶¦Ä̤νèÍý¤È¤·¤Æ¥¥ã¥é¤ÎÊý¸þ¤Î¾ðÊó¤ò´ÉÍý¤·¡¢¤½¤Î¾ðÊó¤ò¥¢¥Ë¥á¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¤È¹¶·â¤Î¥¯¥é¥¹¤ËÂФ·¤Æ¡¢¥á¥½¥Ã¥É¤òÄ̤¸¤ÆÅϤ·¤Æ¤¤¤Þ¤¹¡£
¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢³Æ¥¯¥é¥¹Æâ¤ÇȽÄê¤ò¤µ¤»¤ëɬÍפʤ¯¡¢¶¦Ä̤ÎÃͤò¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹¤ËÍøÍѤ·¤Æ¤â¤é¤¦À߷פǤ¹¡£
¡¡¤¿¤À¤·¡¢½èÍý¤Î¥¿¥¤¥ß¥ó¥°¤ÎÌäÂê¤Ç¡¢¤³¤Î¥á¥½¥Ã¥É¤Î°ú¿ô¤ÇÅϤ¹ÊýË¡¤Ç¤Ï¡¢Êý¸þ¤Î¾ðÊó¤òÅϤ»¤Ê¤¤¥¯¥é¥¹(CharaAttack)¤â¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤Ï¹¶·â½èÍý¤Î¥¿¥¤¥ß¥ó¥°¤¬ CharaManager ¤Ç¤Ï¤Ê¤¯¡¢CharaAttack ¤Ë°Í¸¤·¤Æ¤¤¤ë¤¿¤á¡¢¾ï¤ËºÇ¿·¤ÎÃͤòÅϤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡ºÇ¤â´Êñ¤ÊÊý¸þ¾ðÊó¤ÎÅϤ·Êý¤Ï¡¢CharaManager ¥¯¥é¥¹¤Î Update ¥á¥½¥Ã¥É¤Ç CharaAttack Æâ¤ËÍÑ°Õ¤·¤Æ¤¢¤ëÊý¸þ¾ðÊó¤ÎÃͤò¿ï»þ¹¹¿·¤¹¤ë¤â¤Î¤Ç¤¹¡£
¤³¤ì¤Ç¤¢¤ì¤Ð¡¢¤¤¤Ä¹¶·â¤Î½èÍý¤ò¤ª¤³¤Ê¤Ã¤Æ¤âºÇ¿·¤ÎÊý¸þ¤Î¾ðÊó¤òÍøÍѤǤ¤Þ¤¹¡£
¡¡º£²ó¤Ï¤½¤Î¥¢¥×¥í¡¼¥Á¤Ç¤Ï¤Ê¤¯¡¢CharaAttack ¥¯¥é¥¹¤Ë¥×¥í¥Ñ¥Æ¥£¤òÍÑ°Õ¤·¡¢¤½¤Î»²¾ÈÀè¤ò CharaManager ¥¯¥é¥¹¤ÎÊý¸þ¾ðÊó¤Èɳ¤Å¤±¤Þ¤¹¡£
¥×¥í¥Ñ¥Æ¥£¤òÄ̤¸¤ÆÃͤòÀßÄꤹ¤ë¤È¡¢ÆâÉô¤Ç¤ÎÃͤΥ³¥Ô¡¼¤¬¹Ô¤ï¤ì¡¢¤½¤Î¸å¤â³°ÉôÊÑ¿ô¤¬¹¹¿·¤µ¤ì¤ë¤È¥×¥í¥Ñ¥Æ¥£¤Î¥»¥Ã¥¿¡¼¤¬¸Æ¤Ó½Ð¤µ¤ì¤ÆÃͤ¬¹¹¿·¤µ¤ì¤Þ¤¹¡£
¤³¤Î»ÅÁȤߤˤè¤ê¡¢CharaAttack ¥¯¥é¥¹Â¦¤Ç¤â¡¢ºÇ¿·¤Î¾ðÊó¤ò¥×¥í¥Ñ¥Æ¥£¤òÄ̤¸¤Æ»²¾È¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤Ê¤ªº£²ó¤Ï½èÍý¤Î³Îǧ¤Î¤¿¤á¡¢Start ¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ½èÍý¤ò¥¹¥¿¡¼¥È¤µ¤»¤Æ¤¤¤Þ¤¹¤¬¡¢
¼ÂºÝ¤Ë¤Ï³°Éô¥¯¥é¥¹¤«¤é SetUpCharaManager ¥á¥½¥Ã¥É¤Ø¼Â¹ÔÌ¿Îá¤ò¼õ¤±¤ÆÆ°¤¤¤Æ¤¤¤¯Á°Äó¤ÇÀ߷פ·¤Æ¤¤¤Þ¤¹¡£
¡¡º£²ó¡¢¥×¥í¥Ñ¥Æ¥£¤Î set ¤Ë³°Éô¤Î¥¯¥é¥¹¤Î¾ðÊó¤òÀßÄꤹ¤ë¼êË¡¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
// direction ¤Î¥×¥í¥Ñ¥Æ¥£¡£ÆâÉô¤Ç CharaAttack ¤Î AttackDirection ¥×¥í¥Ñ¥Æ¥£¤âƱ»þ¤Ë¹¹¿·¤·¤Æ¤¤¤ë public Vector2 Direction { get => direction; set { direction = value; if (charaAttack) { charaAttack.AttackDirection = value; } } }
¡¡¤³¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¡¢CharaAttack ¥¯¥é¥¹Æâ¤Ë¤¢¤ë AttackDirection ¥×¥í¥Ñ¥Æ¥£¤Î»²¾ÈÀè(set) ¤¬ CharaManager Æâ¤Î Direction ¥×¥í¥Ñ¥Æ¥£¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡direction ÊÑ¿ô¤Ï Vector3 ·¿¤Ç¤¢¤ë¤Î¤Ç¡¢¤³¤Î¾ðÊó¤ò¤½¤Î¤Þ¤ÞÊ̤ξðÊó¤È¤·¤Æ Vector3 ·¿¤Ç°·¤ª¤¦¤È¤¹¤ë¤È¡¢¤½¤ì¤âÃÍ·¿¤Ë¤Ê¤ê¤Þ¤¹¡£
ÃÍ·¿¤Î¾ðÊó¤Ï¡¢ÂåÆþ¤·¤¿¥¿¥¤¥ß¥ó¥°¤Ç¥³¥Ô¡¼¤·¤¿ÃͤòÊÝ»ý¤·¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢¤º¤Ã¤ÈÊÝ»ý¤·¤Æ¤ª¤¯¤³¤È¤Ë¤Ï¸þ¤¤¤Æ¤¤¤Þ¤¹¤¬¡¢
ºÇ¿·¤ÎÃͤˤĤ¤¤Æ¤Ï¡¢»²¾È¤·¤Æ¤¤¤ëÌõ¤Ç¤Ï¤Ê¤¤¤¿¤á¡¢¾ï¤ËÃͤι¹¿·½èÍý¤ò¹Ô¤ï¤Ê¤¤¤ÈºÇ¿·¤Î¾õÂ֤ˤϤʤê¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢Î㤨¤Ð Update ¥á¥½¥Ã¥É¤Ê¤É¤Ç¡¢CharaAttack ¦¤¬ direction ÊÑ¿ô¤ÎÃͤò¾ï¤Ë¹¹¿·¤¹¤ë¤è¤¦¤Ë(´Æ»ë¤¹¤ë¤è¤¦¤Ë)¤·¤Ê¤¤¤È¡¢¸Å¤¤¾ðÊó¤ò»È¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤½¤³¤Ç¡¢¥×¥í¥Ñ¥Æ¥£¤Îµ¡Ç½¤òÍøÍѤ·¤Þ¤¹¡£
¥×¥í¥Ñ¥Æ¥£¤Ç set ¤¹¤ë¾ðÊó¤Ï¾¤Î¥¯¥é¥¹¤Ç¤¢¤Ã¤Æ¤âÀßÄê¤Ç¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¾åµ¤Î¤è¤¦¤ËÀßÄêÀè¤ò³°Éô¤Î¥×¥í¥Ñ¥Æ¥£¤Ë¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢¼«Æ°Åª¤ËºÇ¿·¤ÎÃͤ˹¹¿·¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¥×¥í¥Ñ¥Æ¥£¤Îµ¡Ç½¤ò¤·¤Ã¤«¤ê¤ÈÍý²ò¤·¡¢¾å¼ê¤¯¥í¥¸¥Ã¥¯¤òÁȤó¤Ç¤¤¤¯¤è¤¦¤Ë¤·¤Þ¤·¤ç¤¦¡£
¡¡¤Þ¤¿ UniRx ¤Î ReasctiveProperty ¤Îµ¡Ç½¤ò³èÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢¤è¤ê¸úΨ¤ÎÎɤ¤¥×¥í¥°¥é¥à¤òÁȤळ¤È¤¬²Äǽ¤Ç¤¹¡£
¡¡²¼µ¤Ï»²¹ÍÍѤΥ½¡¼¥¹¥³¡¼¥É¤ÎÈ´¿è¤Ç¤¹¡£
¡¡¤³¤³¤Þ¤Ç¤ËÀ©ºî¤·¤¿¥¯¥é¥¹´Ö¤Î´Ø·¸À¤ò²Ä»ë²½¤¹¤ë¤³¤È¤Ç¡¢Ê¬³ä¤µ¤ì¤¿¥¯¥é¥¹¤¬¤É¤Î¤è¤¦¤Ê¾õ¶·¤«¡¢¥¤¥á¡¼¥¸¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£
¡¡¥¯¥é¥¹¿Þ¤òÍÑ°Õ¤·¤Þ¤·¤¿¤Î¤Ç¡¢³Æ¥¯¥é¥¹¤Î´ØÏ¢À¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡ã¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¥¯¥é¥¹¤Î´Ø·¸À¡ä

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

¡¡£³¤Ä¤Î¥¯¥é¥¹¤¬¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¤¿¤á¡¢¤¹¤Ù¤Æ¤Î¥¯¥é¥¹¤Ë SetUpChara ¥á¥½¥Ã¥É¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Ʊ̾¤Î¥á¥½¥Ã¥É¤Ç¤¹¤¬¡¢¼ÂºÝ¤Ë¤Ï¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹Æâ¤Ë½ñ¤¤¤Æ¤¢¤ë½èÍý¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¿¶¤ëÉñ¤¤¤¬ÊѤï¤ê¤Þ¤¹¡£
¡¡¤Þ¤¿ CharaManager ¥¯¥é¥¹¤Ï¾¤Î Chara ¡Á ¥¯¥é¥¹¤òÃΤäƤ¤¤Þ¤¹¤¬¡¢Â¾¤Î¥¯¥é¥¹Æ±»Î¤Ë¤Ï¤Ä¤Ê¤¬¤ê¤¬¤¢¤ê¤Þ¤»¤ó¡£
¤è¤Ã¤Æ¡¢¥¯¥é¥¹´Ö¤Î´Ø·¸À¤¬Á·ë¹ç²½¤Ç¤¡¢¥¯¥é¥¹ÆâÉô¤ò½¤Àµ¤¹¤ëºÝ¤Ë¡¢Â¾¤Î¥¯¥é¥¹¤Î¤³¤È¤òµ¤¤Ë¤»¤º¤Ë½¤Àµ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¤³¤Î¤è¤¦¤Ë¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢Æ±Ì¾¤Î¥á¥½¥Ã¥É¤ò»È¤¦¤¬¡¢¤½¤ÎÆâÍƤޤǤϴØÃΤ·¤Ê¤¤¡¢¤È¤¤¤¦·Á¤Ç½èÍý¤ÎÃê¾Ý²½¤¬¤Ç¤¡¢
²Ã¤¨¤Æ¡¢Æ±Ì¾¤Î¥á¥½¥Ã¥É¤Ç¤¢¤ê¤Ê¤¬¤é¡¢°Û¤Ê¤ë½èÍý¤ò¼Â¹Ô¤·¤Æ¤¤¤¯(¿¶¤ëÉñ¤¤¤òÊѤ¨¤ë)¤È¤¤¤¦¡¢Â¿ÂÖÀ¤Î³µÇ°¤â°ì½ï¤ËÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
¡¡¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ·¿¥×¥í¥°¥é¥à¤Ï¼ÂºÝ¤Ë»È¤¤¤Ê¤¬¤é³Ø½¬¤·¤Æ¤¤¤¯¤È¡¢³µÇ°¤äµ¡Ç½¤ÎÊØÍø¤µ¤Ê¤É¤¬¸«¤¨¤Æ¤¤Þ¤¹¤Î¤Ç¡¢
¤Ê¤ë¤Ù¤¯½èÍý¤ò½ñ¤¤¤ÆÆ°¤«¤·¤Ê¤¬¤é³Ø½¬¤ò¤·¤Æ¤¤¤¯¤È¤è¤¤¤Ç¤·¤ç¤¦¡£
¡¡
¡¡¥¯¥é¥¹¿Þ¤ò½ñ¤¯¤³¤È¤Ë¤è¤ê¡¢¼«Ê¬¤Î¥¤¥á¡¼¥¸¤òÀ°Íý¤¹¤ëºÝ¤Ë¤âÌòΩ¤Á¤Þ¤¹¤·¡¢Âè»°¼Ô¤Ë¥¯¥é¥¹¤Î¾õÂÖ¤òÀâÌÀ¤¹¤ë¾ì¹ç¤Ë¤â¾ðÊó¤òÀµ³Î¤ËÅÁ¤¨¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¤Þ¤º¥×¥ì¥¤¥ä¡¼Ìò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÊ£À½¤·¤Þ¤¹¡£Ê£À½¸å¡¢£±¤Ä¤ÏÈóɽ¼¨¤Ë¤·¤Þ¤¹¡£
¥«¥á¥é¤Ê¤É¤ÇÄɽ¾ÂоݤˤʤäƤ¤¤ë¾ì¹ç¤Ë¤Ï¡¢¥«¥á¥é¤ÎÀßÄêÀè¤â¸«Ä¾¤·¤Æ¥¢¥µ¥¤¥ó¤·Ä¾¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡°ÊÁ°¤Î¾õÂ֤Υ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò»Ä¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ç¤ÎÀßÄêÃͤγÎǧ¤Ê¤É¤â½ÐÍè¤ë¤¿¤á¤Ç¤¹¡£
¡¡Ê£À½¤µ¤ì¤¿Êý¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¢¤ë CharaController ¤Î¥¹¥¯¥ê¥×¥È¤ò Remove ¤·¡¢Âå¤ï¤ê¤Ë CharaManager ¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¤Æ¤¯¤À¤µ¤¤¡£
°ì½ï¤Ë£³¤Ä¤Î¥¯¥é¥¹¤â¼«Æ°Åª¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Þ¤¹¡£¥³¥é¥¤¥À¡¼¤È Rigidbody ¤Ï¤½¤Î¤Þ¤Þ¤ÇÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¤Þ¤¿¡¢BulletGenerator ¥¯¥é¥¹¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤ì¤â¥¢¥¿¥Ã¥Á¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡CharaMove ¥¯¥é¥¹¤Ë¤Ï°Üư®Å٤ȰÜÆ°ÈϰϤÎÀßÄê¡¢CharaAttack ¤Ë¤Ï¹¶·â¤Î´Ö³Ö¤ÎÀßÄ꤬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ì¤¾¤ìÀßÄê¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü

¡¡°Ê¾å¤ÇÀßÄê¤Ï´°Î»¤Ç¤¹¡£
¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¡¢¥¯¥é¥¹¤òʬ³ä¤¹¤ëÁ°¤ÈƱ¤¸¤è¤¦¤ËÆ°ºî¤¹¤ë¤«¤ò¸¡¾Ú¤·¤Æ¤¯¤À¤µ¤¤¡£
¡ã³Îǧư²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡£±¤Ä¤Î¥¯¥é¥¹¤¬ÈîÂç²½¤·¤Æ¤·¤Þ¤¦¤³¤È¤Ï¿¡¹¤¢¤ê¤Þ¤¹¡£
³Ø½¬Ãæ¤Î¤¦¤Á¤ÏÌäÂꤢ¤ê¤Þ¤»¤ó¤¬¡¢¼«Ê¬¤Ç¥×¥í¥°¥é¥à¤ò¹Í¤¨¤Ê¤¬¤é½ñ¤¤¤Æ¤ß¤ë¤È¡¢¤³¤¦¤¤¤Ã¤¿Àß·×Éôʬ¤Ç¤ÎÌäÂê¤Ë¤Ö¤Ä¤«¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á´ðËÜŪ¤Ë¤Ï¡¢¥¯¥é¥¹¤òºîÀ®¤¹¤ëÁ°¤«¤éÈîÂç²½¤¹¤ë²ÄǽÀ¤¬¸«¤¨¤ë¤³¤È¤¬¤Û¤È¤ó¤É¤Ç¤¹¡£
¡¡¤«¤È¤¤¤Ã¤ÆºÇ½é¤«¤éʬ³ä¤·¤ÆºîÀ®¤·¤Æ¤¤¤±¤ì¤Ð¤è¤¤¤Î¤Ç¤¹¤¬¡¢¤½¤ì¤âÃ桹Æñ¤·¤¤¤Ç¤¹¡£
¡¡¥½¡¼¥¹¥³¡¼¥É¤ò½ñ¤¯Á°¤Ë¡¢À߷פò¹Í¤¨¤ë¤³¤È¤«¤é»Ï¤á¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
°ÊÁ°¤è¤ê¤â¤¿¤¯¤µ¤ó¤Î»þ´Ö¤ò¥¯¥é¥¹¤ÎÀ߷פËÈñ¤ä¤·¤Æ¤ß¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£
¤É¤Î¤è¤¦¤Ê½èÍý¤ò¡¢¤É¤Î¥¯¥é¥¹¤Ë½ñ¤¯¤Î¤«¤òÌÀ³Î¤Ë¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢ÈîÂç²½¤·¤ä¤¹¤¤¥¯¥é¥¹¤òÁ°¤â¤Ã¤ÆǧÃΤ·¤Æ¤ª¤¯¤³¤È¤â¤Ç¤¤Þ¤¹¡£
¡¡¥½¡¼¥¹¥³¡¼¥É¤ò½ñ¤¤¤Æ¤¤¤ë´Ö¤â¡¢¾ï¤Ë¡¢À߷פòƬ¤Ë¹Í¤¨¤Æ¿Ê¤á¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
À߷פϽñ¤½Ð¤·¤Æ¤ª¤¯¤³¤È¤Ç¹Í¤¨¤Æ¤¤¤ë¤³¤È¤ò¸À¸ì²½¡¦²Ä»ë²½¤Ç¤¤ë¤Î¤Ç¡¢¤è¤ê¥¤¥á¡¼¥¸¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£
¡¡¤Þ¤¿½ñ¤¤¤Æ½ª¤ï¤ê¤Ë¤Ï¤»¤º¡¢¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ò¹Ô¤¦¤³¤È¤âǰƬ¤ËÃÖ¤¤¤Æ¤ª¤¯¤È¡¢ÎɼÁ¤Ê¥³¡¼¥Ç¥£¥ó¥°¤¬¹Ô¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¤Þ¤¹¡£
¡¡¥×¥í¥°¥é¥ß¥ó¥°¤ÏÈ¿Éü¤È²þÁ±¤Î·«¤êÊÖ¤·¤Ë¤è¤Ã¤Æ¥¹¥¥ë¥¢¥Ã¥×¤¬½ÐÍè¤Þ¤¹¡£
¡¡¥ì¥Ù¥ë¤ÎÃͤ˱þ¤¸¤Æ¡¢Ê£¿ô¤ÎÃƤòȯ¼Í¤¹¤ë¤³¤È¤¬¤Ç¤¤ëµ¡Ç½¤ò»ý¤Á¤Þ¤¹¡£
¡¡¤³¤Î¥¯¥é¥¹¤â¥×¥ì¥¤¥ä¡¼Ìò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤ÆÍøÍѤ·¤Þ¤¹¡£
¡¡switch ʸ¤Ë¤è¤ëʬ´ô½èÍý¤ò»È¤¤¡¢¥ì¥Ù¥ë¤Ë±þ¤¸¤ÆÃƤÎȯ¼Í¿ô¤òÊѹ¹¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ÎÉôʬ¤Ï±é»»¼°¤ò¼«Ê¬¤Ç¹Í¤¨¤ë¤³¤È¤Ç¡¢switch ʸ¤Ê¤·¤Ç¤Î¼ÂÁõ¤â²Äǽ¤Ç¤¹¡£
¥Á¥ã¥ì¥ó¥¸¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BulletGenerator : MonoBehaviour { [SerializeField] private Bullet bulletPrefab; [SerializeField] private float offsetDegrees; // ÃƤγÑÅ٤δð½àÃÍ(³Æ¥Ð¥ì¥Ã¥ÈƱ»Î¤Î³ÑÅÙ´Ö³Ö) [SerializeField] private float bulletSpeed; // ÃƤήÅÙ [SerializeField] private int level; /// <summary> /// ¥Ð¥ì¥Ã¥ÈÀ¸À®¤Î½àÈ÷¡£¥ì¥Ù¥ë¤Ë±þ¤¸¤Æ¥Ð¥ì¥Ã¥È¤Î¿ô¤òÁý¤ä¤¹ /// </summary> /// <param name="direction"></param> public void PrepareGenerateBullet(Vector2 direction) { switch (level) { case 1: GenerateBullet(direction); break; case 2: for (int i = -1; i < 2; i += 2) { // ÃƤÎÊý¸þ¤È²óž¤ò CalculateBulletDirection ¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆÀßÄꤷ¤Æ¡¢ÃƤÎÀ¸À® GenerateBullet(CalculateBulletDirection(i, direction)); } break; case 3: for (int i = -1; i < 2; i++) { GenerateBullet(CalculateBulletDirection(i, direction)); } break; case 4: for (int i = -3; i < 4; i += 2) { GenerateBullet(CalculateBulletDirection(i, direction)); } break; default: for (int i = -2; i < 3; i++) { GenerateBullet(CalculateBulletDirection(i, direction)); } break; } } /// <summary> /// ¥Ð¥ì¥Ã¥ÈÀ¸À® /// </summary> /// <param name="direction"></param> private void GenerateBullet(Vector2 direction) { // ¤³¤Î¥¯¥é¥¹¤ò¥×¥ì¥¤¥ä¡¼Ìò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤¹¤ì¤Ð¡¢¤½¤Î°ÌÃÖ¤Çȯ¼Í¤Ç¤¤ë Bullet bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity); bullet.Shoot(direction, bulletSpeed); } /// <summary> /// ÃƤÎÊý¸þ¤ò·×»»¤¹¤ë /// </summary> private Vector2 CalculateBulletDirection(int numBullets, Vector2 direction) { // ³ÑÅÙ¤ÎÊäÀµÃͤηèÄê float offsetAngle = numBullets * offsetDegrees; // Z ¼´¤òÃæ¿´¤Ë²óž¤µ¤»¤¿²óž¾ðÊó(»Í¸µ¿ô)¤òºî¤ë Quaternion offsetRotation = Quaternion.Euler(0, 0, offsetAngle); ¡¡¡¡¡¡¡¡// Unity ¤Î¾ì¹ç¡¢Quaternion * Vector3(Vector2) ¤Î·×»»¤ò¤¹¤ë¤È¡¢Vector3 ¤ò Quaternion¤Ç²óž¤µ¤»¤¿ºÂɸ¤¬ÆÀ¤é¤ì¤ë // º£²ó¤Î¾ì¹ç¡¢¾åµ¤Î²óž¾ðÊó(Quaternion)¤Ë¡¢direction(Vector2)¤ò³Ý¤±¤ë¤³¤È¤Ç¡¢ÃƤÎÊý¸þ¤Î¥Ù¥¯¥È¥ë¤¬·è¤Þ¤ë(direction¤òoffsetRotation¤À¤±ÊѤ¨¤ë) ¡¡¡¡¡¡¡¡// direction ¤ÎÊý¸þ¤ò°Ý»ý¤·¤Ä¤Ä¡¢Z ¼´¤À¤±¤ò²óž¤µ¤»¤¿¾ðÊó¤ò»ý¤Ã¤Æ¤¤¤ë¿·¤·¤¤¥Ù¥¯¥È¥ë¤òºîÀ® Vector2 offsetDirection = offsetRotation * direction; return offsetDirection; } }
¡¡Vector3 ¤Ê¤É¤Î¥Ù¥¯¥È¥ë¤È¤Ï¡¢¿ôÃ;å¤Ïñ½ã¤Ë3¼´¤Î¾ðÊó(À®Ê¬)¤Ç¤Îñ°Ì¤Ç¤¹¤¬¡¢
¤³¤ì¤é¤ÎÀ®Ê¬¤Ï¡¢Â礤µ(®ÅÙ)¡¢Êý¸þ¡¢²óž¤â²ÃÌ£¤·¤Æºî¤é¤ì¤Æ¤¤¤ë¤È¤¤¤¦¤³¤È¤òÍý²ò¤·¤Æ¤ª¤¯¤³¤È¤¬ÂçÀڤǤ¹¡£
¡¡Vector2 offsetDirection = offsetRotation * direction;
¡¡¤³¤Î½èÍý¤Ï¡¢ÃƤθþ¤¤ò¥×¥ì¥¤¥ä¡¼¤Î¸þ¤¤¤Æ¤¤¤ë¸þ¤¤Ë¹ç¤ï¤»¤Æ¤¤¤ë½èÍý¤Ç¤¹¡£
´Ý¤¤ÃƤǤ¹¤È¥¤¥á¡¼¥¸¤·¤Ë¤¯¤¤¤Ç¤¹¤¬¡¢Ìð¤Î¤è¤¦¤ËÀèü¤Î¤¢¤ë¤â¤Î¤Ç¹Í¤¨¤ë¤È¤ï¤«¤ê¤ä¤¹¤¤¤Ç¤¹¡£
¾åµ¤Î½èÍý¤Ë¤è¤Ã¤Æ¡¢Êý¸þ + ²óž¤Î¾ðÊó¤ò¤Ä¤«¤¤¡¢Ìð¤ÎÀèü¤ò¥×¥ì¥¤¥ä¡¼¤ÎÈ¿ÂÐÊý¸þ¤Ë¸þ¤±¤Æ(Ũ¦¤ËÌ𤸤ê¤ò)¹ç¤ï¤»¤Æ¤¤¤ë´¶¤¸¤Ç¤¹¡£
¡¡ÃƤΥץì¥Ï¥Ö¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë¥¯¥é¥¹¤Ç¤¹¡£
Rigidbody ¤òÀ©¸æ¤·¤Æ¡¢ÃƤò°ÜÆ°¤µ¤»¤ëµ¡Ç½¤ò»ý¤Á¤Þ¤¹¡£
using UnityEngine; public class Bullet : MonoBehaviour { [SerializeField] private float destroyTime = 1.5f; /// <summary> /// ¥Ð¥ì¥Ã¥Èȯ¼Í /// </summary> public void Shoot(Vector2 direction, float bulletSpeed) { if (TryGetComponent(out Rigidbody2D rb)) { rb.AddForce(direction * bulletSpeed); } Destroy(gameObject, destroyTime); } }
¥µ¥ó¥×¥ë²èÁü

- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯