ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2021ǯ01·î18Æü(·î) 16:27:04ÍúÎò
£´¤Ä¤Î¹©Äø¤òÄ̤·¤Æ¡¢¤É¤ó¤ÊÉ÷¤Ë£±¤Ä¤Î½èÍý¤¬ºî¤é¤ì¤Æ¤¤¤¯¤Î¤«¡¢¼ÂÁõ¤ò¹Ô¤¦¤Þ¤Ç¤Î²áÄø¤ò´Þ¤á¤Æ³Ø½¬¤·¤Æ¤¤¤¤Þ¤¹¡£
¡¡°Ê²¼¤ÎÆâÍƤǽçÈ֤˼ÂÁõ¤ò¿Ê¤á¤Æ¤¤¤¤Þ¤¹¡£
¼ê½ç£¸¡¡¡Ý¥¿¥Ã¥×¤·¤¿°ÌÃÖ¾ðÊó¤ò¥²¡¼¥àÆâ¤ËÈ¿±Ç¤¹¤ë½èÍý¤ò¼ÂÁõ¡Ý
£±£´¡¥PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯(¥¿¥Ã¥×)¤ò¤·¤¿»þ¤Î°ÌÃÖ¾ðÊó¤ò¼èÆÀ¤Ç¤¤ë½èÍý¤òÄɲä¹¤ë £±£µ¡¥PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥¿¥Ã¥×¤Î°ÌÃÖ¾ðÊó¤È¥¥ã¥é¤Î°ÌÃÖ¤«¤éÊý¸þ¤ò·×»»¤¹¤ë½èÍý¤òÄɲä¹¤ë £±£¶¡¥Bullet ¥¹¥¯¥ê¥×¥È¤È PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥Ð¥ì¥Ã¥È¤ËÊý¸þ¤Î¾ðÊó¤òÍøÍѤ·¤Æ°ÜÆ°¤¹¤ë¤è¤¦¤ËÀ©¸æ¤ò½¤Àµ¤¹¤ë £±£·¡¥PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢Êý¸þ¤Î¾ðÊó¤òÀµµ¬²½½èÍý¤·¤Æ¡¢²èÌ̤ò¥¿¥Ã¥×¤·¤¿°ÌÃ֤ˤè¤ë®ÅÙº¹¤ò½¤Àµ¤¹¤ë
¡¡¿·¤·¤¤³Ø½¬ÆâÍƤϡ¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
¡¡¡¦Input.mousePosition ÊÑ¿ô ¡¡¡¦Camera.ScreenToWorldPoint(Vector3 position) ¥á¥½¥Ã¥É ¡¡¡¦Vector3.Scale ¥á¥½¥Ã¥É ¡¡¡¦Vector3.normalized ÊÑ¿ô¤òÍøÍѤ·¤¿Àµµ¬²½½èÍý
£±£´¡¥PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯(¥¿¥Ã¥×)¤ò¤·¤¿»þ¤Î°ÌÃÖ¾ðÊó¤ò¼èÆÀ¤Ç¤¤ë½èÍý¤òÄɲ乤ë 
¡¡ºÇ½ªÅª¤ÊÌÜɸ¤Ç¤¢¤ë¡¢¥Ð¥ì¥Ã¥È¤ò¥¯¥ê¥Ã¥¯¤·¤¿Êý¸þ¤Ë°ÜÆ°¤µ¤»¤ë½èÍý¤Ë¤Ï¡¢¡Ö¥¥ã¥é¤«¤é¤ß¤¿¡¢¥¯¥ê¥Ã¥¯¤·¤¿Êý¸þ¡×¤È¤¤¤¦¾ðÊó¤¬É¬Íפˤʤê¤Þ¤¹¡£
Êý¸þ¤Î¾ðÊó¤Ï·×»»¤¹¤ë¤³¤È¤Ç»»½Ð¤Ç¤¤Þ¤¹¤¬¡¢¤½¤Î¤¿¤á¤Ë¤Ï¡¢£²¤Ä¤Î°ÌÃÖ¾ðÊó¤¬É¬Íפˤʤê¤Þ¤¹¡£
¤½¤Î¤¦¤Á¤Î£±¤Ä¤¬¡¢¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃÖ¾ðÊó¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤Î¼ê½ç¤Ç¤Ï¡¢¤³¤Î¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃ֤ξðÊó¤ò¼èÆÀ¤¹¤ë¤¿¤á¤ÎÀ©¸æ½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¡¡¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃÖ¾ðÊó¤Ç¤¹¤¬¡¢Unity ¤¬ÍÑ°Õ¤·¤Æ¤¤¤ë Camera ¥¯¥é¥¹¤Ë¤Ï¡¢¥«¥á¥é¤Î²èÌ̤ΰÌÃÖ¾ðÊó¤òÄ̤¸¤Æ¥ï¡¼¥ë¥ÉºÂɸ¤ËÊÑ´¹¤¹¤ë¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤Á¤é¤òÍøÍѤ·¤Þ¤¹¡£
¤³¤Î¥á¥½¥Ã¥É¤Ï°ú¿ô¤È¤·¤Æ Vector3 ·¿¤ò½àÈ÷¤·¤Æ»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿Ìá¤êÃͤâ Vector3 ·¿¤Ç¤¹¡£
¡¡°ú¿ô¤Ë¤â Unity ¤¬ÍÑ°Õ¤·¤Æ¤¤¤ë Input ¥¯¥é¥¹¤Ë¤Ï¥Þ¥¦¥¹¤Î¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃÖ¾ðÊó¤ò Vector3 ·¿¤Ë¤·¤Æ¼èÆÀ¤Ç¤¤ëÊÑ¿ô¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
¤³¤Á¤é¤òÁȤ߹ç¤ï¤»¤ÆÍøÍѤ·¤Æ¤¤¤¤Þ¤¹¡£
£²¡¥PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯(¥¿¥Ã¥×)¤ò¤·¤¿»þ¤Î°ÌÃÖ¾ðÊó¤ò¥«¥á¥é¤òÄ̤¸¤Æ¼èÆÀ¤¹¤ë½èÍý¤òÄɲ乤ë 
¡¡¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯¤ò¤·¤¿»þ¡¢¤È¤¤¤¦½èÍý¼«ÂΤϤ¹¤Ç¤Ë Update ¥á¥½¥Ã¥ÉÆâ¤Ë if ʸ¤Î¾ò·ï¼°¤È¤·¤ÆÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
¤³¤Á¤é¤ÎÃæ¤Ë¥«¥á¥é¤òÄ̤¸¤Æ¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃÖ¾ðÊó¤ò¼èÆÀ¤¹¤ë½èÍý¤òÄɵ¤·¤Æ¤¤¤¤Þ¤¹¡£
¡¡À߷פǹͤ¨¤¿ÊýË¡¤ÎÊÑ¿ô¤ä¥á¥½¥Ã¥É¤Î²òÀ⤬¼¡¤ÎÃʤ«¤éºÜ¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢ÆâÍƤò³Îǧ¤·¤Ê¤¬¤é½èÍý¤ò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
PlayerController.cs
¡¡Unity ¤¬ÍÑ°Õ¤·¤Æ¤¤¤ë Input ¥¯¥é¥¹¤Î»ý¤Ä static ÊÑ¿ô¤Ç¤¹¡£¥¯¥é¥¹Ì¾.static ÊÑ¿ô¤Èµ½Ò¤¹¤ë¤³¤È¤ÇÍøÍѤǤ¤Þ¤¹¡£
º£²ó¤Î¾ì¹ç¤Ç¤¢¤ì¤Ð¡¢Input.mousePosition ¤È½ñ¤¯¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤³¤ÎÊÑ¿ô¤òÍøÍѤǤ¤Þ¤¹¡£
¡¡¤³¤ÎÊÑ¿ô¤Ç¤Ï¡¢¸½ºß¤Î¥Þ¥¦¥¹¤Î°ÌÃ֤Υԥ¯¥»¥ëºÂɸ(x, y)¤ò¼èÆÀ¤·¤Þ¤¹¡£¥Þ¥¦¥¹¤Î¾ðÊó¤ÏÊ¿Ì̤Ǥ¢¤ë¤¿¤á¡¢z ºÂɸ¤Î¾ðÊó¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¤³¤Î¾ðÊó¤È¼¡¤Î ScreenToWorldPoint ¥á¥½¥Ã¥É¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤Ë¤è¤ê¡¢¥Þ¥¦¥¹¤Î°ÌÃÖ¤ò¥²¡¼¥àÆâ¤ÎºÂɸ¤ËÊÑ´¹¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤É¤¦¤¤¤Ã¤¿Ãͤ¬¼èÆÀ¤Ç¤¤Æ¤¤¤ë¤«¤Ï Debug.Log ¤ò»ÈÍѤ¹¤ë¤³¤È¤¬³Îǧ¤Ç¤¤Þ¤¹¤Î¤Ç¡¢¼ÂºÝ¤ËµºÜ¤·¤ÆÃͤò³Îǧ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Input.mousePosition
https://docs.unity3d.com/ja/2019.4/ScriptReference...
¡¡Unity ¤¬ÍÑ°Õ¤·¤Æ¤¤¤ë Camera ¥¯¥é¥¹¤Î»ý¤Ä¥á¥½¥Ã¥É¤Î£±¤Ä¤Ç¤¹¡£¥«¥á¥é¤ò»È¤¤¡¢°ú¿ô¤ÎºÂɸ¤ò¥ï¡¼¥ë¥ÉºÂɸ¤ËÊÑ´¹¤·¤Þ¤¹¡£
¡¡// ²èÌ̤ò¥¿¥Ã¥×(¥¯¥ê¥Ã¥¯)¤·¤¿°ÌÃÖ¤ò¥«¥á¥é¤Î¥¹¥¯¥ê¡¼¥óºÂɸ¤Î¾ðÊó¤òÄ̤¸¤Æ¥ï¡¼¥ë¥ÉºÂɸ¤ËÊÑ´¹ Vector3 tapPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
¡¡Camera.main ¤Èµ½Ò¤¹¤ë¤³¤È¤Ç¡¢¥Ò¥¨¥é¥ë¥¡¼¤Ë¤¢¤ë Main Camera ¥¿¥°¤ÎÀßÄꤵ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Camera ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¾ðÊó¤òÍøÍѤǤ¤Þ¤¹¡£
Ä̾ï¤Ç¤¢¤ì¤Ð Main Camera ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¤³¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ËÅö¤¿¤ê¤Þ¤¹¡£
¡¡º£²ó¤Ï°ú¿ô¤Ë¥Þ¥¦¥¹¤ÎºÂɸ(Input.mousePosition)¤ò»ØÄꤷ¡¢¤½¤Î°ÌÃÖ¤ò¥²¡¼¥à¤Î¥ï¡¼¥ë¥ÉºÂɸ¤ËÊÑ´¹(Ìá¤êÃÍ)¤¹¤ë½èÍý¤ò¹Ô¤¦¤³¤È¤Ç¥Þ¥¦¥¹¤Î°ÌÃ֤ȥ²¡¼¥à²èÌ̤ΰÌÃ֤ξðÊó¤òƱ´ü¤µ¤»¤Æ¤¤¤Þ¤¹¡£
¡¡Ìá¤êÃͤȤ·¤Æ¤Ï Vector3 ·¿¤ÇÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢½èÍý¤Îº¸ÊÕ¤Ë Vector3 ·¿¤ÎÊÑ¿ô¤òÍÑ°Õ¤·¤Æ¤ª¤¯¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤³¤Î¥á¥½¥Ã¥É¤Î½èÍý·ë²Ì¤Î¾ðÊó¤ò¼õ¤±¼è¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Camera.ScreenToWorldPoint
https://docs.unity3d.com/ja/current/ScriptReferenc...
¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¡¢Game¥Ó¥å¡¼¤ò¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¤¯¤À¤µ¤¤¡£º¸¥¯¥ê¥Ã¥¯¤ò¤¹¤ë¤¿¤Ó¤Ë¡¢if ʸÆâ¤Î½èÍý¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢
¤½¤ÎÅÔÅÙ¡¢Console ¥Ó¥å¡¼¤Ë°ÌÃÖ¾ðÊó¤ÎÃͤ¬É½¼¨¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢¥Þ¥¦¥¹¤ÎºÂɸ°ÌÃÖ¤òÀµ¾ï¤Ë¥²¡¼¥àÆâ¤Î°ÌÃÖ¾ðÊó¤È¤·¤ÆÊÑ´¹½èÍý¤¬½ÐÍè¤Æ¤¤¤Þ¤¹¡£
¡ã¼Â¹ÔÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡¤³¤ÎÃʳ¬¤Ç¤Ï¤Þ¤À¥Ð¥ì¥Ã¥È¤Ï¾åÊý¸þ¤Ëȯ¼Í¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¼¡°Ê¹ß¤Î¼ê½ç¤Ç¡¢½çÈ֤ˤ³¤Î°ÌÃÖ¾ðÊó¤òÍøÍѤ·¤Æ¥Ð¥ì¥Ã¥È¤ò¥¯¥ê¥Ã¥¯¤·¤¿Êý¸þ¤Øȯ¼Í¤Ç¤¤ë¤è¤¦¤Ë²þÎɤ·¤Æ¤¤¤¤Þ¤¹¡£
£±£µ¡¥PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥¿¥Ã¥×¤Î°ÌÃÖ¾ðÊó¤È¥¥ã¥é¤Î°ÌÃÖ¤«¤éÊý¸þ¤ò·×»»¤¹¤ë½èÍý¤òÄɲ乤ë 
¡¡¥¯¥ê¥Ã¥¯¤·¤Æ¼èÆÀ¤·¤¿°ÌÃÖ¾ðÊó¤Ï¤¤¤ï¤Ð¡ÖÅÀ¡×¤Î¾ðÊó¤Ç¤¹¡£
¡ÖÅÀ¡×¤È¤·¤Æ¡¢¤É¤Î°ÌÃ֤Ǥ¢¤ë¤«¤Ï¤ï¤«¤ë¤Î¤Ç¤¹¤¬¡¢¤½¤Î°ÌÃÖ¤¬¡¢¤É¤Î°ÌÃÖ¤«¤é¤ß¤Æ¡¢¤É¤Î°Ì¤Îµ÷Î¥¤ËÅö¤¿¤ë¤Î¤«¡¢¤È¤¤¤¦ÌÜɸ¤È¤·¤Æ¤Î¾ðÊ󤬤¢¤ê¤Þ¤»¤ó¡£
¡¡¤½¤Î¤¿¤á¡¢¤â¤¦£±¤Ä¤Î¡ÖÅÀ¡×¤È¤Ê¤ë¡¢¤¤¤ï¤Ð»ÏÅÀ¤È¤Ê¤ë¾ðÊó¤òÍÑ°Õ¤·¡¢¤½¤ì¤é¤ò·ë¤ó¤Ç¡ÖÀþ¡×¤È¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢
»ÏÅÀ¤«¤é¸«¤Æ¡¢¤É¤Î°ÌÃ֤ˤ¢¤ë¤Î¤«¡¢¤É¤Î°Ì¤Îµ÷Î¥¤Ë¤¢¤ë¤Î¤«¡¢¤½¤·¤Æ¡¢¤É¤Î¸þ¤¤Ë¤¢¤ë¤Î¤«¡¢¤È¤¤¤¦¡ÖÊý¸þ¡×¤òƳ¤½Ð¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡°ìÊý¤ÎÅÀ¤Î¾ðÊó¤Ï¥Þ¥¦¥¹¤Î¥¯¥ê¥Ã¥¯°ÌÃ֤Ǥ¹¤Î¤Ç¡¢¤½¤ì¤ËÂФ·¤ÆÊý¸þ¤òµá¤á¤¿¤¤»ÏÅÀ¤Î¾ðÊó¤Ï¥¥ã¥é¤Î°ÌÃ֤ˤʤê¤Þ¤¹¡£
¡¡¤Ä¤Þ¤ê¡¢¥¥ã¥é¤Î°ÌÃÖ¤«¤é¸«¤Æ¡¢¥Þ¥¦¥¹¤Î¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃ֤ޤǤε÷Î¥¤ò·×»»¤¹¤ë¤³¤È¤Ç¡ÖÊý¸þ¡×¤ò»»½Ð¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤³¤ì¤ÏÅÀ¤Î¾ðÊó¡Ê¤É¤Á¤é¤â Vector3·¿)¤ò¸º»»¤¹¤ë¤³¤È¤Çµá¤á¤é¤ì¤Þ¤¹¡£
¡¡¥¥ã¥é¤Î°ÌÃ֤ȤϤ¹¤Ê¤ï¤Á¡¢PlayerController ¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤·¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¾ðÊó¤ò»Ø¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤é¤ò¸µ¤Ë·×»»¼°¤ò¹Í¤¨¤Æ½èÍý¤ò¼ÂÁõ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
£²¡¥PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥Þ¥¦¥¹¥¯¥ê¥Ã¥¯¤Î°ÌÃÖ¾ðÊó(A)¤È¥¥ã¥é¤Î°ÌÃÖ(B)¤«¤éÊý¸þ¤ò·×»»¤¹¤ë½èÍý¤òÄɲ乤ë 
¡¡¤½¤ì¤Ç¤ÏÀè¤Û¤É¤Î°ÌÃÖ¾ðÊó¤Î¼èÆÀ¤Î½èÍý¤Î¤¢¤È¤Ë¡¢Êý¸þ¤ò·×»»¤¹¤ë½èÍý¤òÄɲä·¤Þ¤¹¡£
¡¡¤Þ¤º¤Ï¤É¤Î°ÌÃ֤˽èÍý¤òÄɲ乤ì¤Ð¤è¤¤¤Î¤«¤ò¡¢ÆüËܸì¤Ç¥³¥á¥ó¥È¤ò½ñ¤¤¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¤½¤ì¤«¤é¡¢¥×¥í¥°¥é¥à¤È¤·¤Æ·×»»¼°¤òµ½Ò¤·¤Æ¤¤¤¤Þ¤¹¡£
¤³¤¦¤¤¤Ã¤¿ÆâÉô¤Î·×»»¤Î¾ì¹ç¡¢Debug.Log ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ·×»»·ë²Ì¤ò Console ¥Ó¥å¡¼¤Ë½ÐÎϤ·¡¢·×»»¤Ç¤¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
PlayerController.cs
¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¡¢Game¥Ó¥å¡¼¤ò¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¤¯¤À¤µ¤¤¡£
Console ¥Ó¥å¡¼¤Ë¡¢°ÌÃÖ¾ðÊó¤ÎÃͤ˳¤¤¤Æ¡¢Êý¸þ¤ÎÃͤ¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ì¤Ð¡¢¥Þ¥¦¥¹¤Î°ÌÃ֤ȥ¥ã¥é¤Î°ÌÃÖ¤«¤éÀµ¾ï¤ËÊý¸þ¤Î·×»»½èÍý¤¬½ÐÍè¤Æ¤¤¤Þ¤¹¡£
¡ã¼Â¹ÔÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡Êý¸þ¤ò·×»»¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤·¤¿¤¬¡¢¸½ºß¤³¤Î¾ðÊó¤Ï PlayerController ¥¹¥¯¥ê¥×¥È¤Î¤ß¤¬ÇÄ°®¤·¤Æ¤¤¤ë¾ðÊó¤Ç¤¹¡£
¤³¤Î¾ðÊó¤ò¥Ð¥ì¥Ã¥È¦¤Ë¤âÅÁ¤¨¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡¥á¥½¥Ã¥É¤Ë¤Ï°ú¿ô(¤Ò¤¤¹¤¦)¤È¤¤¤¦¡¢ÊÑ¿ô¤ò²ð¤·¤Æ¾ðÊó¤òÁ÷¼õ¿®¤¹¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤òÍøÍѤ·¤Þ¤·¤ç¤¦¡£
£±£¶¡¥Bullet ¥¹¥¯¥ê¥×¥È¤È PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥Ð¥ì¥Ã¥È¤ËÊý¸þ¤Î¾ðÊó¤òÍøÍѤ·¤Æ°ÜÆ°¤¹¤ë¤è¤¦¤ËÀ©¸æ¤ò½¤Àµ¤¹¤ë 
¡¡PlayerController ¥¹¥¯¥ê¥×¥È¤Ç¤ÏÊý¸þ¤Î¾ðÊó¤ò·×»»¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¥Ð¥ì¥Ã¥È¤Ë¤â¤³¤Î¡ÖÊý¸þ¡×¤Î¾ðÊó¤òÆϤ±¤ë¤³¤È¤¬½ÐÍè¤ì¤Ð¡¢¥Ð¥ì¥Ã¥È¤ò°ÜÆ°¤µ¤»¤ëºÝ¤Î¡ÖÊý¸þ¡×¤È¤·¤ÆÍøÍѤǤ¤ë¤è¤¦¤Ë¡¢¥Ð¥ì¥Ã¥È¤Î°ÜÆ°Àè¤òÊѹ¹¤Ç¤¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¤Ë¤Ï¡¢PlayerController ¥¹¥¯¥ê¥×¥È¤«¤é ShotBullet ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹Ì¿Îá¤ò¹Ô¤¦ºÝ¤Ë¡¢°ú¿ô¤È¤·¤Æ¡ÖÊý¸þ¡×¤Î¾ðÊó¤ò ShotBullet ¥á¥½¥Ã¥É¤ËÅϤ·¤Æ¤â¤é¤¦¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢¾ðÊó¤òÁ÷¤ê½Ð¤¹¡Êȯ¿®¤¹¤ë¡Ë¦¤Ç¤¹¡£¤³¤ì¤ËÂФ·¤Æ¡¢¾ðÊó¤ò¼õ¤±¼è¤ë¦¤Ç¤¢¤ë ShotBullet ¥á¥½¥Ã¥É¤Ë¤â¾ðÊó¤ò¼õ¤±¼è¤ë¤¿¤á¤Î°ú¿ô¤ò¡¢Æ±¤¸·¿¤ÇÍÑ°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡¡Êý¸þ¤Î¾ðÊó¤Ï Vector3 ·¿¤Ç¤¹¤Î¤Ç¡¢ShotBullet ¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë¤â Vector3 ·¿¤ÎÊÑ¿ô¤òÀë¸À¤·¤ÆÄɲä·¤Þ¤¹¡£
°ú¿ô¤ËÊÑ¿ô¤òÀë¸À¤¹¤ë¾ì¹ç¤â¡¢·¿¤ÈÊÑ¿ô̾¤òÊ»µ¤·¤Þ¤¹¡£ÊÑ¿ô̾¤ÏǤ°Õ¤Ç¤¹¤¬¡¢Êý¸þ¤Î¾ðÊó¤È¤ï¤«¤ë¤è¤¦¤Ë¡¢direction ¤È¤¤¤¦ÊÑ¿ô̾¤È¤·¤Æ¤ª¤¤Þ¤¹¡£
¡¡°ú¿ô¤È¤·¤Æ¼õ¤±¼è¤Ã¤¿¾ðÊó¤Ï direction ÊÑ¿ô¤ËÂåÆþ¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤³¤Î¾ðÊó¤Ï¡¢ShotBullet ¥á¥½¥Ã¥ÉÆâ¤Ç¤¢¤ì¤Ð¼«Í³¤ËÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
µÕ¤Ë¹Í¤¨¤ë¤È¡¢¤³¤Î¥á¥½¥Ã¥É³°¤Ç¤ÏÍøÍѤǤ¤Ê¤¤¾ðÊó¤Ë¤Ê¤ê¤Þ¤¹¡£ÊÑ¿ô¤Ë¤Ï¥¹¥³¡¼¥×¡Ê͸úÈϰϡˤȤ¤¤¦¹Í¤¨Êý¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤â¤¦°ìÅÙ¡¢Éü½¬¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤¤¤Þ¤Þ¤Ç¤Ï¥Ð¥ì¥Ã¥È¤ò°ÜÆ°¤µ¤»¤ëºÝ¤ÎÊý¸þ¤È¤·¤Æ¡¢AddForce ¥á¥½¥Ã¥É¤Ë transform.up ÊÑ¿ô¤òÍøÍѤ·¤Æ¤¤¤Þ¤·¤¿¡£
¤½¤Î¤¿¤á¡¢¾ï¤Ë Y¼´¤Î¾åÊý¸þ¤Ë¸þ¤«¤Ã¤Æ¥Ð¥ì¥Ã¥È¤¬°ÜÆ°¤¹¤ë½èÍý¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£
¡¡¤³¤ÎÉôʬ¤ò¡¢°ú¿ô¤È¤·¤Æ¼õ¤±¼è¤Ã¤¿ direction ÊÑ¿ô¤Î¾ðÊó¤ËÊѹ¹¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥¿¥Ã¥×¤·¤¿Êý¸þ¤ÎÃͤǤ¹¡£
¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢PlayerController ¥¹¥¯¥ê¥×¥È¤Ç·×»»¤·¤¿¡ÖÊý¸þ¡×¤Î¾ðÊó¤ò¥Ð¥ì¥Ã¥È¤Ë¤â¤ª¤¤¤Æ¤âÍøÍѤ·¡¢¥²¡¼¥à½èÍý¤ÎÆâÍƤËÈ¿±Ç¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤³¤³¤Þ¤Ç¤Î½èÍý¤ò Bullet ¥¹¥¯¥ê¥×¥È¤Î ShotBullet ¥á¥½¥Ã¥É¤ò½¤Àµ¤¹¤ë¤³¤È¤Ç¼ÂÁõ¤·¤Þ¤¹¡£
¡¡Bullet ¥¹¥¯¥ê¥×¥È¤Î½¤Àµ¤¬½ªÎ»¤·¤¿¤é¡¢ShotBullet ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë PlayerController ¥¹¥¯¥ê¥×¥È¦¤Î½¤Àµ¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡ShotBullet ¥á¥½¥Ã¥É¤Ë°ú¿ô¤òÄɲä·¤¿¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤³¤Î¥á¥½¥Ã¥É¤¬¼Â¹Ô¤µ¤ì¤ëºÝ¤Ë¤Ï Vector3 ·¿¤Î¾ðÊó¤ò°·¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¤Ç¤¹¤¬¡¢´Î¿´¤ÎÃͤ¬¤³¤Î Vector3 ·¿¤ÎÊÑ¿ô¤ËÆϤ¤¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤ËÍøÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¡£
¡¡ShotBullet ¥á¥½¥Ã¥É¤ËɬÍפʾðÊó¤Ï PlayerController ¥¹¥¯¥ê¥×¥È¤Ç·×»»¤·¤Æµá¤á¤Æ¤¤¤ë¡ÖÊý¸þ(direction ÊÑ¿ô)¡×¤Î¾ðÊó¤Ç¤¹¡£
¤³¤ÎÃͤ¬ Vector3 ·¿¤Ç¤¹¤Î¤Ç¡¢ShotBullet ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë¡¢¤³¤Î direction ÊÑ¿ô¤ò»ØÄꤷ¤ÆÅϤ·¤Æ¤¢¤²¤ë¤è¤¦¤Ë¤¹¤ì¤Ð¡¢
ShotBullet ¥á¥½¥Ã¥É¤Ç¤â¡¢¤³¤ÎÊý¸þ¤Î¾ðÊó¤òÍøÍѤ·¤Æ½èÍý¤ò¼Â¹Ô½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¥¹¥¯¥ê¥×¥È¤Î½¤Àµ¤¬ºÑ¤ß¤Þ¤·¤¿¤Î¤Ç¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ Game ¥Ó¥å¡¼¤òº¸¥¯¥ê¥Ã¥¯¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
PlayerController ¥¹¥¯¥ê¥×¥È¤Ç·×»»¤·¤¿Êý¸þ¤Î¾ðÊó¤¬ Bullet ¥¹¥¯¥ê¥×¥È¤Î ShotBullet ¥á¥½¥Ã¥É¤ËÅÁ¤ï¤Ã¤Æ¤¤¤ì¤Ð¡¢
¤¤¤Þ¤Þ¤Ç¤È°Û¤Ê¤ê¡¢¥¥ã¥é¤Î°ÌÃÖ¤«¤é¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃÖ¤ÎÊý¸þ¤Ë¸þ¤«¤Ã¤Æ¥Ð¥ì¥Ã¥È¤¬°ÜÆ°¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡ã¼Â¹ÔÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡¤â¤·¤â¤Þ¤À¾åÊý¸þ¤Ë¤·¤«¥Ð¥ì¥Ã¥È¤¬°ÜÆ°¤·¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢Bullet ¥¹¥¯¥ê¥×¥È¤Î ShotBullet ¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤ò¸«Ä¾¤·¤Þ¤¹¡£
°ú¿ô¤ÇÆϤ¤¤Æ¤ë direction ÊÑ¿ô¤Î¾ðÊó¤ò¤·¤Ã¤«¤ê¤È AddForce ¥á¥½¥Ã¥É¤Ë¤Æ³èÍѤ·¤Æ¤¤¤ë¤«¡¢³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡Æ±»þ¤ËÌäÂêÅÀ¤â¸«¤¨¤Æ¤¤¿¤È»×¤¤¤Þ¤¹¡£
¥¥ã¥é¤È¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃ֤ε÷Î¥¤Ë¤è¤Ã¤Æ¡¢¥Ð¥ì¥Ã¥È¤Î°Üư®ÅÙ¤¬ÊѲ½¤·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡
¡¡ºÇ¸å¤Ë¡¢¤³¤Î¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃÖ¤è¤ë®Å٤κ¹¤ò¤Ê¤¯¤¹À©¸æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤·¤ç¤¦¡£
£±£·¡¥PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢Êý¸þ¤Î¾ðÊó¤òÀµµ¬²½½èÍý¤·¤Æ¡¢²èÌ̤ò¥¿¥Ã¥×¤·¤¿°ÌÃ֤ˤè¤ë®ÅÙº¹¤ò½¤Àµ¤¹¤ë 
¡¡¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃ֤ˤè¤Ã¤Æ¥Ð¥ì¥Ã¥È¤Î®ÅÙ¤¬ÊѲ½¤·¤Æ¤·¤Þ¤¦¸¶°ø¤Ï¡¢Êý¸þ¤È¤·¤Æ·×»»¤·¤¿ÃͤËÀßÄꤵ¤ì¤Æ¤¤¤ë¥Þ¥°¥Ë¥Á¥å¡¼¥É¤È¤¤¤¦Â®ÅÙ¾ðÊó¤Ë¤¢¤ê¤Þ¤¹¡£
¤³¤Î¥Þ¥°¥Ë¥Á¥å¡¼¥É¤ÎÃͤϡ¢µ÷Î¥¤¬Î¥¤ì¤ë¤Û¤É¤ËÂ礤¯¤Ê¤ëÃͤǤ¢¤ë¤¿¤á¡¢¥¥ã¥é¤Î°ÌÃÖ¤«¤é±ó¤¤°ÌÃ֤ǥ¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢Â®ÅÙ¤â°ì½ï¤ËÂ礤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¡¡
¡¡²þÁ±¤¹¤ë¤Ë¤Ï¡¢Â®ÅÙ¾ðÊó¤òÀµµ¬²½¤¹¤ë¤³¤È¤ÇÂбþ¤Ç¤¤Þ¤¹¡£Àµµ¬²½¤È¤Ï¡¢¥Þ¥°¥Ë¥Á¥å¡¼¥É¤ÎÃͤòñ°Ì¥Ù¥¯¥È¥ë¤È¤¤¤¦¾ðÊó¤ËÊÑ´¹¤¹¤ë½èÍý¤Î¤³¤È¤Ç¤¹¡£
¡¡Ã±°Ì¥Ù¥¯¥È¥ë¤È¤Ê¤Ã¤¿Ãͤϡ¢Êý¸þ¤Î¾ðÊó¤Ï¤½¤Î¤Þ¤Þ¤Ë¡¢Â®ÅÙ¤ÎÃͤò°ìÄêÃÍ(0 ¤« 1)¤ËÅý°ì¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢
¥¥ã¥é¤«¤é±ó¤¤°ÌÃÖ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤â¡¢¶á¤¤°ÌÃÖ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤â¡¢¾ï¤ËƱ¤¸Â®ÅÙ¤òÊݤĤ³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤Þ¤¿¤³¤Î½èÍý¤ò¹Ô¤¦Á°¤Ë¤Ï¡¢Êý¸þ¤Î¾ðÊ󤫤é ZÀ®Ê¬¤Î¾ðÊó¤ò½üµî(0)¤Ë¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤½¤¦¤·¤Ê¤¤¤ÈÀµ³Î¤Êñ°Ì¥Ù¥¯¥È¥ë¤¬ºîÀ®¤µ¤ì¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃ֤˸þ¤«¤Ã¤ÆƱ¤¸Â®Å٤ǥХì¥Ã¥È¤ò°ÜÆ°¤µ¤»¤ë¤Ë¤Ï¡¢Êý¸þ¤Î·×»»¤Î¤¢¤È¤Ë¡¢Z¼´¤Î¾ðÊó¤ò 0 ¤Ë¤·¡¢¤½¤Î¸å¡¢Àµµ¬²½¤Î½èÍý¤ò²Ã¤¨¤ë¤³¤È¤¬É¬Íפˤʤê¤Þ¤¹¡£
£²¡¥PlayerController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃ֤ˤè¤ë®Å٤κ¹¤ò½¤Àµ¤·¤Æ°ìÄê®Å٤ˤ¹¤ë½èÍý¤òÄɲ乤ë 
¡¡À߷פò¸µ¤Ë¡¢ÆüËܸì¤Ç¥³¥á¥ó¥È¤ò½ñ¤¤¤Æ¤«¤é¡¢½èÍý¤Î¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡¥×¥í¥°¥é¥à¤Ï¾å¤«¤é²¼¤Ë½èÍý¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤¤Þ¤¹¤Î¤Ç¡¢½èÍý¤ò½ñ¤¯½çÈÖ¤¬ÂçÀڤˤʤê¤Þ¤¹¡£
¡¡Êý¸þ¤Î·×»»¡¡¢ª¡¡ZÀ®Ê¬¤Î½üµî(direction,z ¤ò 0 ¤Ë¤¹¤ë)¡¡¢ª¡¡Àµµ¬²½
¡¡¤³¤Î½çÈ֤ǽèÍý¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢Êý¸þ¤ÎÃͤ¬Àµµ¬²½¤µ¤ì¤Þ¤¹¡£
¡¡¤É¤Î¤è¤¦¤Ë¡¢ZÀ®Ê¬¤Î½üµî¤äÀµµ¬²½½èÍý¤ò¹Ô¤¦¤«¡¢¤Ç¤¹¤¬¡¢ZÀ®Ê¬¤Î½üµî¤¹¤ëÊýË¡¤Ï¿§¡¹¤¢¤ê¤Þ¤¹¡£Vector3.Scale ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ëÊýË¡¤¬¤ï¤«¤ê¤ä¤¹¤¤ÊýË¡¤Ë¤Ê¤ê¤Þ¤¹¡£
¤Þ¤¿Àµµ¬²½½èÍý¤Ï¡¢Unity ¤ÎÍÑ°Õ¤·¤Æ¤¤¤ë Vector3.normalized ÊÑ¿ô¤òÍøÍѤ¹¤ì¤Ð¼Â¹Ô¤Ç¤¤Þ¤¹¡£Vector3 ·¿¤ÎÉôʬ¤ËÀµµ¬²½¤ò¹Ô¤¤¤¿¤¤ÊÑ¿ô¤ò»ØÄꤷ¤Þ¤¹¡£
¡¡¤É¤Á¤é¤â²¼¤Ë²òÀ⤬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢ÌܤòÄ̤·¤Æ¤«¤é¥¹¥¯¥ê¥×¥È¤Î½¤Àµ¤ËÄ©À路¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¼«Ê¬¤¬¼ÂÁõ¤·¤¿¤¤½èÍý¤¬¥¤¥á¡¼¥¸½ÐÍ褿¾ì¹ç¤Ë¤Ï¡¢¤½¤ì¤ò¼Â¸½¤¹¤ë¤¿¤á¤Ë¤É¤ó¤Ê½èÍý¤¬¤¢¤ì¤Ð¾å¼ê¤¯¤¤¤¯¤Î¤«¡¢¼«Ê¬¤Ç¤¹¤Ù¤Æ½èÍý¤ò½ñ¤¯É¬Íפ¬¤¢¤ë¤Î¤«¡¢
¤¢¤ë¤¤¤Ï Unity ¤¬ÍÑ°Õ¤·¤Æ¤¤¤ë¾ðÊ󤬤¢¤ë¤Î¤«¡¢¤½¤¦¤¤¤Ã¤¿¤³¤È¤òÄ´¤Ù¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
PlayerController.cs
¡¡Unity ¤Î Vector3 ¤Î°·¤¨¤ë¾ðÊó¤Î£±¤Ä¤Ç¤¹¡£
¡¡Âè1°ú¿ô¤Î³ÆÀ®Ê¬¤È¡¢Âè2°ú¿ô¤ÎƱ¤¸À®Ê¬¤ò¾è»»¤·¤¿·ë²Ì¤ò¡¢Ìá¤êÃͤȤ·¤Æ Vector3 ·¿¤Ç¼èÆÀ¤·¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢·×»»·ë²Ì¤òÂåÆþ¤¹¤ë Vector3 ·¿¤ÎÊÑ¿ô¤òÍÑ°Õ¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
direction = Vector3.Scale(direction, new Vector3(1, 1, 0))
¡¡¾åµ¤Î¾ì¹ç¡¢(direction.x * 1, direction.y * 1, direction.z * 0)¡¡¤È¤¤¤¦·×»»¤¬¹Ô¤ï¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
Z ¼´¤Î¤ß¾ï¤Ë 0 ¤ÎÃͤ¬¾è»»¤µ¤ì¤ë¤¿¤á¡¢½èÍý¤Î·ë²Ì¤È¤·¤Æ¡¢direcion ¤ÎÃͤϡ¢X ¤È Y ¤Î¾ðÊó¤Ï¤½¤Î¤Þ¤Þ¡¢Z ¤Ï 0 ¤È¤¤¤¦·ë²Ì¤¬Ìá¤êÃͤȤ·¤ÆÆÀ¤é¤ì¤Æ¡¢
¸µ¤Î direction ¤ÎÃͤò¾å½ñ¤¤·¤ÆÂåÆþ¤µ¤ì¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢direction ¤ÎÃͤ«¤é Z À®Ê¬¤Î¤ß½üµî¤·¡¢0 ¤Ë¤¹¤ë¤³¤È¤¬½ÐÍè¤Æ¤¤¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Vector3.Scale
https://docs.unity3d.com/ja/current/ScriptReferenc...
¡¡Àµµ¬²½½èÍý¤Ç¤¹¡£magnitude(¥Þ¥°¥Ë¥Á¥å¡¼¥É¡£Ä¹¤µ)¤ò£±¤È¤·¤¿¥Ù¥¯¥È¥ë(ñ°Ì¥Ù¥¯¥È¥ë)¤òÊÖ¤·¤Þ¤¹¡£Ìá¤êÃÍ¤Ï Vector3 ·¿¤Ë¤Ê¤ê¤Þ¤¹¡£
// Àµµ¬²½½èÍý¤ò¹Ô¤¤¡¢Ã±°Ì¥Ù¥¯¥È¥ë¤È¤¹¤ë(Êý¸þ¤Î¾ðÊó¤Ï»ý¤Á¤Ä¤Ä¡¢µ÷Î¥¤Ë¤è¤ë®ÅÙº¹¤ò¤Ê¤¯¤·¤Æ°ìÄêÃͤˤ¹¤ë) direction = direction.normalized;
¡¡¸½ºß¤Î¥Ù¥¯¥È¥ë¤ÎÊý¸þ¤ò°Ý»ý¤·¤¿¤Þ¤Þ¡¢magnitude¤¬£±¡¢¤¢¤ë¤¤¤Ï£°¤Îñ°Ì¥Ù¥¯¥È¥ë¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¡Ê¥Ù¥¯¥È¥ë¤ÎÃͤ¬¾®¤µ¤¤¤È£°¤Ë¤Ê¤ê¤Þ¤¹¡£¡Ë
¡¡¤³¤Î½èÍý¤ò¹Ô¤ï¤Ê¤¤¤È¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃ֤ؤΠmagnitude ¤¬¤½¤Î¤Þ¤Þ°Ý»ý¤µ¤ì¤Æ¤·¤Þ¤¦¤¿¤á¡¢
AÃÏÅÀ(¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃÖ)¤ÈBÃÏÅÀ(»ÏÅÀ)¤Îµ÷Î¥¤¬Î¥¤ì¤Æ¤¤¤ëÄø¡¢Â®ÅÙ¤¬Â®¤¯¤Ê¤ê¡¢¶á¤¤¤Û¤É®ÅÙ¤¬ÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£
º£²ó¤Î¾ì¹ç¤Ï¡¢¥Ð¥ì¥Ã¥È¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î®ÅÙ¤¬µ÷Î¥¤Ë¤è¤Ã¤ÆÊѲ½¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¡¡¤³¤ÎÀµµ¬²½¤ò¹Ô¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃ֤αó¶á¤Ë´Ø¤ï¤é¤º¡¢magnitude ¤¬¤¹¤Ù¤Æ 1¡¢¤¢¤ë¤¤¤Ï 0 ¤ËÅý°ì¤µ¤ì¤¿Ã±°Ì¥Ù¥¯¥È¥ë¤ÎÃͤȤʤ뤿¤á¡¢
Êý¸þ¤Ï¤½¤Î¤Þ¤Þ¤Ç¡¢ÂǤÁ½Ð¤¹ÎϤΤߤò°ìÄêÃͤËÅý°ì¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¡¦¥ê¥Õ¥¡¥ì¥ó¥¹
https://docs.unity3d.com/ja/current/ScriptReferenc...
TechProjinÍÍ
Unity¤ÎVector3¤Ç¤è¤¯»È¤¦¤â¤Î¤Þ¤È¤á
https://tech.pjin.jp/blog/2016/02/16/unity_vector3...
¡¡º£²ó¤Î¼ÂÁõ¤Ë¤è¤ê¡¢Êý¸þ¤Î¾ðÊ󤫤éÉÔÍ×¤Ê Z¼´¤Î¾ðÊó¤ò¤Ê¤¯¤·¤ÆÀµµ¬²½¤ò¹Ô¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢
¥¯¥ê¥Ã¥¯¤·¤¿°ÌÃ֤ȥ¥ã¥é¤Î°ÌÃ֤Ȥε÷Î¥¤Ë¤«¤«¤ï¤é¤º¡¢Êý¸þ¤Î¾ðÊó¤Î¤ß¤ò·×»»¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¡¢Àè¤Û¤É¤ÈƱ¤¸¤è¤¦¤Ë Game¥Ó¥å¡¼¤Î¿§¡¹¤Ê°ÌÃÖ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
Àè¤Û¤É¤È¤Ï°Û¤Ê¤ê¡¢¤É¤Î°ÌÃÖ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤â¡¢Æ±¤¸Â®Å٤Ǥ½¤Î¥¯¥ê¥Ã¥¯¤·¤¿Êý¸þ¤Ë¸þ¤«¤Ã¤Æ¥Ð¥ì¥Ã¥È¤¬°ÜÆ°¤¹¤ë¤è¤¦¤Ë¤Ê¤ì¤ÐÀ©¸æÀ®¸ù¤Ç¤¹¡£
¡ã¼Â¹ÔÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡°Ê¾å¤Ç¤¹¤Ù¤Æ´°À®¤Ç¤¹¡£
¡¡¤³¤Î¤è¤¦¤Ë¡¢£±¤Ä¤Î½èÍý¤ò¼ÂÁõ¤¹¤ë¤Ë¤¢¤¿¤Ã¤Æ¤â¡¢Ê£¿ô¤Î¹©Äø¤¬É¬Íפˤʤê¤Þ¤¹¡£¤Þ¤¿¡¢ºÇ½ªÅª¤ÊÌÜɸ¤â¸«¤¨¤Æ¤¤¤Ê¤¤¤È´°À®¤Ç¤¤Þ¤»¤ó¡£
µÕ¤Ë¸À¤¨¤Ð¡¢£±¤Ä¤º¤Ä½çÈÖ¤ËÁȤßΩ¤Æ¤Æ¤¤¤¯¤³¤È¤¬¤Ç¤¤ì¤Ð¡¢¥¤¥á¡¼¥¸¤·¤Æ¤¤¤ë½èÍý¤ò¼ÂÁõ¤Ç¤¤ë¤È¤â¸À¤¨¤Þ¤¹¡£
¡¡°ÊÁ°¤Ë¤âÀâÌÀ¤·¤¿¤è¤¦¤Ë¡¢°ìÅ٤ˤ¹¤Ù¤Æ¤Î½èÍý¤ò¼ÂÁõ¤·¤è¤¦¤È¤Ï¤»¤º¤Ë¡¢½çÈÖ¤ËÀѤ߽ŤͤƽèÍý¤ò¹½ÃÛ¤·¤Æ¤¤¤¯¤³¤È¤¬ÂçÀڤǤ¹¡£
¤½¤¦¤¹¤ë¤³¤È¤¬¤Ç¤¤ì¤Ð¡¢¼ê½ç¤ò¸«Ä¾¤¹¤³¤È¤â½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¼«Ê¬¤Ç½¤Àµ¤·¤¿¤ê¡¢Äɲ乤뤳¤È¤â²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¥í¥¸¥Ã¥¯¤ÎÁȤßÊý¡¢¹Í¤¨Êý¤ò·Ñ³¤·¤Æ³Ø½¬¤·¤Æ¤¤¤¤Þ¤·¤ç¤¦¡£
¡¡Êý¸þ¤Î·×»»¼°¤Ï¸½ºß£³¤Ä¤Î½èÍý¤ò½çÈ֤˹ԤäƽèÍý¤òÀ©¸æ¤·¤Æ¤¤¤Þ¤¹¤¬¡¢C#¤Ç¤Ï¤³¤ì¤ò£±¹Ô¤Ë¤Þ¤È¤á¤Æµ½Ò¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
¡ã¸½ºß¤Î½ñ¼°¡ä
// Êý¸þ¤ò·×»» Vector3 direction = tapPos - transform.position; // Êý¸þ¤Î¾ðÊ󤫤顢ÉÔÍ×¤Ê ZÀ®Ê¬(Z¼´¾ðÊó) ¤Î½üµî¤ò¹Ô¤¦ direction = Vector3.Scale(direction, new Vector3(1, 1, 0)); // Àµµ¬²½½èÍý¤ò¹Ô¤¤¡¢Ã±°Ì¥Ù¥¯¥È¥ë¤È¤¹¤ë(Êý¸þ¤Î¾ðÊó¤Ï»ý¤Á¤Ä¤Ä¡¢µ÷Î¥¤Ë¤è¤ë®ÅÙº¹¤ò¤Ê¤¯¤·¤Æ°ìÄêÃͤˤ¹¤ë) direction = direction.normalized;
¡¡¤³¤ì¤Ï¡¢¼¡¤Î¼°¤Çµ½Ò¤Ç¤¤Þ¤¹¡£
¡ã£±¹Ô¤Ç¤Þ¤È¤á¤Æµ½Ò¤¹¤ë½ñ¼°¡ä
// Êý¸þ¤ò·×»»(Êý¸þ¤Î¾ðÊ󤫤顢ÉÔÍ×¤Ê ZÀ®Ê¬(Z¼´¾ðÊó) ¤Î½üµî¤ò¹Ô¤¤¡¢Àµµ¬²½¤¹¤ë) Vector3 direction = Vector3.Scale(tapPos - transform.position, new Vector3(1, 1, 0)).normalized;
¡¡¤³¤Î£±¹Ô¤Îµ½Ò¤Ç¡¢£³¹Ôʬ¤ÈƱ¤¸½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î½èÍý¤Ë¤â¥Ô¥ê¥ª¥É¤Î½èÍý¤¬ÍøÍѤµ¤ì¤Æ¤¤¤ë¤Î¤¬Ê¬¤«¤ê¤Þ¤¹¡£
¡¡½èÍý¤òÍý²ò¤·¤ÆÆɤ߲ò¤±¤ë¤è¤¦¤Ë¤Ê¤ë¤È¡¢¿§¡¹¤Êµ½ÒÊýË¡¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤Þ¤¹¡£¾¯¤·¤º¤Ä´·¤ì¤Æ¤¤¤¤Þ¤·¤ç¤¦¡£
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡¼¡¤Ï¡¡¼ê½ç£¹¡¡¡Ý¥¨¥Í¥ß¡¼¤ÎºîÀ®¤ÈÀ©¸æ¡Ý¡¡¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯