ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2023ǯ08·î08Æü(²Ð) 19:41:28ÍúÎò
¡¡¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°¤Ï½½»ú¥¡¼¤Ë¤è¤ë¤â¤Î¤Ç¡¢°ÜÆ°¼´¤ÏÁ°¸åº¸±¦¤Ë¤Ê¤ê¡¢»ëÅÀ(¸þ¤)¤ÏÊѤï¤ê¤Þ¤»¤ó¡£
¥Þ¥¦¥¹¤òÆ°¤«¤¹¤³¤È¤Ç¡¢¥«¥á¥é¤¬²óž¤·¡¢»ëÅÀ¤¬ÊѤï¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¥«¥á¥é¤ÈƱ¤¸Êý¸þ¤ò½Æ¤¬¸þ¤¤Þ¤¹¡£
¡¡¥¡¼ÆþÎÏÃͤËÂФ·¤Æ¥×¥ì¥¤¥ä¡¼¤Ï¥«¥á¥é¤ÎÀµÌÌÊý¸þ¤ò´ð½à¤ËÁ°¿Ê¡¦¸åÂष¤Þ¤¹¡£
¡ã³Îǧư²è¡¡¡¼¥«¥á¥é¤Î²óž¡¼¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡ã³Îǧư²è¡¡¡¼¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°¡¼¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡¤¢¤¯¤Þ¤Ç¤â¥µ¥ó¥×¥ë¤Î¹½À®¤Ç¤¹¤Î¤Ç¡¢¼«Ê¬¤Î¥×¥í¥¸¥§¥¯¥È¤ÎÆâÍƤ˹ç¤ï¤»¤ÆÊѹ¹¤·¤ÆÍøÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¹½À®

¡¡¥Ò¥¨¥é¥ë¥¡¼¤Ç Create Empty ¤ò¹Ô¤¤¡¢Player ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹¡£
¤½¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ¡¢Body ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢¤µ¤é¤Ë Body ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ½Æ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇÛÃÖ¤·¤Þ¤¹¡£
¡¡Player ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ï¥³¥é¥¤¥À¡¼¤È Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£
¥³¥é¥¤¥À¡¼¤Î¥µ¥¤¥º¤Ï¥²¡¼¥à¤Î´Ä¶¤Ë¹ç¤ï¤»¤Æ¡¢¥×¥ì¥¤¥ä¡¼¤ÎÅö¤¿¤êȽÄê¤È¤·¤ÆÍøÍѤ¹¤ë¤³¤È¤òÁ°Äó¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
¡¡Body ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤â Create Empty ¤ÇºîÀ®¤·¤Æ¤ª¤¤Þ¤¹¡£
¤³¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥«¥á¥é¤ÎÄɽ¾ÂоݤˤʤëÉôʬ¤Ç¤¹¡£¤Þ¤¿¡¢½Æ¸ý¤Î¸þ¤¤Ë¹ç¤ï¤»¤Æ²óž¤¹¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£
¡¡½Æ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¢¥»¥Ã¥È¥¹¥È¥¢¤Ê¤É¤«¤é¥¤¥ó¥Ý¡¼¥È¤·¤¿¤â¤Î¤òÍøÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
Player ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È

Scene¥Ó¥å¡¼

Body ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È

Scene¥Ó¥å¡¼

½Æ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È

Scene¥Ó¥å¡¼

¡¡¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤¹¤ë¤È¤¤Ë¡¢¿Æ»Ò´Ø·¸¤¬¤¢¤ë¾ì¹ç¡¢¤½¤ì¤¾¤ì¤Î°ÌÃÖ¤¬ÂçÀڤˤʤê¤Þ¤¹¡£
»Ò¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤¿¤é¡¢¤Þ¤º¤Ï (0,0,0) ¤Î°ÌÃ֤˹ç¤ï¤»¤Æ¤«¤é¡¢Ä´À°¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Þ¤·¤ç¤¦¡£
¡¡¥µ¥ó¥×¥ë¥¹¥¯¥ê¥×¥È¤Ç¤¹¤Î¤Ç¡¢¼«Ê¬¤Î¥×¥í¥¸¥§¥¯¥È¤Ë¹ç¤ï¤»¤ÆŬµ¹Ä´À°¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤³¤Î¥¹¥¯¥ê¥×¥È¤Ï¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°À©¸æ¤ò¹Ô¤¦¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£Player ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤ÆÍøÍѤ·¤Þ¤¹¡£
¡¡¥¹¥¯¥ê¥×¥È¤òÍÑ°Õ¤¹¤ë¾ì¹ç¡¢¤É¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÇÍøÍѤ¹¤ë¤«¤òÇÄ°®¤·¤Æ¤«¤éºîÀ®¤¹¤ë¤³¤È¤¬ÂçÀڤǤ¹¡£
PlayerController.cs
¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡»°¹à±é»»»Ò¤È¤¤¤¦½èÍý¤Ï¡¢if / else ʸ¤Îʬ´ô½èÍý¤ò£±¹Ô¤Ç´Ê·é¤Ëµ½Ò¤Ç¤¤ë½ñ¼°¤Ç¤¹¡£
¤¿¤À¤·¡¢¤¹¤Ù¤Æ¤Î if / else ʸ¤òÃÖ¤´¹¤¨¤é¤ì¤ë¤ï¤±¤Ç¤Ê¤¯¡¢
¡¡¡Ê¬´ô½èÍýÆâÉô¤ÇƱ¤¸ÊÑ¿ô¤ËÂФ·¤ÆÂåÆþ½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤ëʬ´ô½èÍý
¡¡¢Ê¬´ô½èÍýÆâÉô¤Çreturn ʸ¤ÇƱ¤¸·¿¤Î¾ðÊó¤òÌ᤹ʬ´ô½èÍý
¡¡¤³¤Î¤¤¤º¤ì¤«¤Î¤ß¡¢ÃÖ¤´¹¤¨¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡º£²ó¤Ç¤¢¤ì¤Ð¡¢ProcessInput ¥á¥½¥Ã¥ÉÆâ¤Îʬ´ô½èÍý¤¬¡¤Ë³ºÅö¤·¤Þ¤¹¡£
¤³¤Á¤é¤ò»°¹à±é»»»Ò¤òÍøÍѤ¹¤ë¤³¤È¤Ç½èÍý¤ò´Ê·é¤Ëµ½Ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¡¡¡¡¡¡// Shift¥¡¼¤ò²¡¤·¤Æ¤¤¤ë¾ì¹ç¤Ï®ÅÙ¤òÁý²Ã¤µ¤»¤ë ¡¡¡¡if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) ¡¡¡¡{ ¡¡¡¡speed = runSpeed; ¡¡¡¡} ¡¡¡¡else ¡¡¡¡{ ¡¡¡¡speed = walkSpeed; ¡¡¡¡}
¡¡¤³¤Î¾ò·ï¼°¤ò»°¹à±é»»»Ò¤Ë¤·¤Æ if / else ʸ¤ò£±¹Ô¤Ë¤Þ¤È¤á¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ê¼°¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¡¡¡¡¡¡¢
¡ã»°¹à±é»»»Ò¤ò»È¤Ã¤Æ½ñ¤´¹¤¨¤¿¾ì¹ç¡ä
¡¡¡¡// Shift¥¡¼¤ò²¡¤·¤Æ¤¤¤ë¾ì¹ç¤Ï®ÅÙ¤òÁý²Ã¤µ¤»¤ë speed = Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift) ? runSpeed : walkSpeed;
¡¡»°¹à±é»»»Ò¤Ï¤½¤Î̾Á°¤ÎÄ̤ê¤Ç¡¢£³¤Ä¤Î¹àÌܤ¬¤¢¤ê¤Þ¤¹¡£
¡Ú¾ò·ïʸ¡Û ? ¡Útrue¤À¤Ã¤¿¾ì¹çÊÖ¤¹Ãͤä½èÍý¡Û : ¡Úfalse¤À¤Ã¤¿¾ì¹çÊÖ¤¹Ãͤä½èÍý¡Û
¡¡±¦ÊդǤϡ¢¤³¤Î¾ò·ï¼°¤Ètrue¤Èfalse¤Î£³¤Ä¤Î¹àÌܤòÍÑ°Õ¤·¤Æ¡¢¤½¤Î·ë²Ì¤Ë¹ç¤ï¤»¤Æº¸ÊÕ¤ØÃͤòÂåÆþ¤·¤Þ¤¹¡£
»²¹Íµ»ö
Qiita @crazy_traveler ÍÍ
»²¹Í¤Ë¤Ê¤ë»°¹à±é»»»Ò
¡¡¤½¤ì¤Ç¤Ï¤³¤³¤Þ¤Ç¤Î¼ê½ç¤ò³Îǧ¤¹¤ë¤¿¤á¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¡¢Æ°ºî¤ò¸¡¾Ú¤·¤Þ¤¹¡£
¡¡¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°¤¬Àµ¾ï¤ËÆ°ºî¤¹¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£
°ÜÆ°¤·¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢PlayerController ¥¹¥¯¥ê¥×¥È¤Î¥¢¥¿¥Ã¥Á¤Î³Îǧ¡¢°Üư®ÅÙÍѤÎÃͤγÎǧ¤Ê¤É¤ò¹Ô¤¤¤Þ¤·¤ç¤¦¡£
¡¡¤É¤Î¤è¤¦¤Êµ¡Ç½¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤«¡¢ºî¤Ã¤Æ¤¤¤ë¼«Ê¬¤¬¤·¤Ã¤«¤ê¤ÈÇÄ°®¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡ã³Îǧư²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡¤³¤Î»þÅÀ¤Ç¤Ï¥«¥á¥é¤ÎÄɽ¾½èÍý¤¬¤¢¤ê¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢¥²¡¼¥à²èÌ̤ϸÇÄꤵ¤ì¤¿¤Þ¤Þ¤Ç¡¢¥×¥ì¥¤¥ä¡¼¤Î¤ß¤¬°ÜÆ°¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡Scene ¥Ó¥å¡¼¤Ç°ÜÆ°¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤·¤ç¤¦¡£
¡¡Cinemachine ¤òÍøÍѤ·¤Æ FPS ÍѤΥ«¥á¥é¤ÎºîÀ®¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡¥Ò¥¨¥é¥ë¥¡¼¤Ë¤Æ¥á¥Ë¥å¡¼¤ò³«¤¡¢Cinemachine ¢ª Virtual Camera ¤òÁªÂò¤·¤Æ¥«¥á¥é¤òÄɲä·¤Þ¤¹¡£
CM vcam1 ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£

¡¡Ì¾¾Î¤Ï¤½¤Î¤Þ¤Þ¤Ç¤â¤è¤¤¤Ç¤¹¤·¡¢FPSCamera ¤Î¤è¤¦¤ËÊѹ¹¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£
¡¡Cinemachine ¤Î¥«¥á¥é¤¬¥Ò¥¨¥é¥ë¥¡¼¤ËÄɲ䵤ì¤Þ¤·¤¿¤Î¤Ç¡¢MainCamera ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë Cinemachine Brain ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¼«Æ°Åª¤ËÄɲ䵤ì¤Þ¤¹¡£

¡¡Cinemachine ¥«¥á¥é¤Ç¤¢¤ë CM vcam1 ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡Follow ¤Ë Body ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤·¤Þ¤¹¡£
¤³¤ì¤Ç¥«¥á¥é¤¬¥×¥ì¥¤¥ä¡¼¤òÄɽ¾¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡Body ¤ÎÀßÄê¤Ë¤Ä¤¤¤Æ¤Ï¡¢Framing Transposer ¤òÀßÄꤷ¤Þ¤¹¡£
²¼µ¤Î²èÁü¤ò»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥«¥á¥é¤È¥×¥ì¥¤¥ä¡¼¤È¤Î°ÌÃÖ´Ø·¸¤Ë¤Ä¤¤¤Æ¤Ï Camera Distance ¤ÇÀßÄê¤Ç¤¤Þ¤¹¡£
¾å²¼¤Ê¤É¤ò¹ç¤ï¤»¤ë¾ì¹ç¤Ë¤Ï Tracked Object Offset ¤ÎÃͤÇÀßÄê¤Ç¤¤Þ¤¹¡£
¡¡¤Þ¤¿¡¢°ÜÆ°¤Ë¹ç¤ï¤»¤Æ¥«¥á¥é¤¬¿×®¤ËÂбþ¤¹¤ë¤è¤¦¤Ë³Æ Damping ¤ÎÀßÄê¤ò 0 ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£

¡¡Â³¤¤¤Æ¡¢Aim ¤ÎÀßÄê¤ò POV ¤Ë¤·¤Þ¤¹¡£POV ¤È¤Ï Point Of View ¤Îά¤Ç¡¢FPS »ëÅÀ¤È¤·¤ÆÍøÍѤǤ¤ë¥«¥á¥é¤ÎÀßÄê¤Ç¤¹¡£
¡¡¤³¤ÎÀßÄê¤Ë¤¹¤ë¤È¡¢¥Þ¥¦¥¹¤Î¾å²¼º¸±¦¤Ë¹ç¤ï¤»¤Æ¥«¥á¥é¤¬°ÜÆ°¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
ÆþÎÏÊý¸þ¤ÎÈ¿±Ç(Invert)¤ä´¶Å٤ˤĤ¤¤Æ¤âÀßÄê¤Ç¤¤Þ¤¹¡£

Game ¥Ó¥å¡¼

¡¡¥«¥á¥é¤Î²óž¤È½Æ¤Î²óž¤Î¸þ¤¤È¤¬Æ±´ü¤µ¤»¤ë¤¿¤á¡¢Update ¥á¥½¥Ã¥É¤Ç¤Ï¤Ê¤¯¡¢LateUpdate ¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ°ÌÃÖ¤ò¹ç¤ï¤»¤Æ¤¤¤Þ¤¹¡£
¡¡Update ¤ËÀÚ¤êÂؤ¨¤Æ»î¤¹¤È¤ï¤«¤ê¤Þ¤¹¤¬ÉÁ²è¤Î¥¿¥¤¥ß¥ó¥°¤Î´Ø·¸¤Ç¡¢²óž¤ËÂФ·¤Æ¡¢²èÌ̤ÎÉÁ²è¤¬¤º¤ì¤Þ¤¹¡£
¤³¤ì¤Ï¡¢¥«¥á¥é¤Î±Ç¤¹¾ðÊ󤬡¢Unity ¤ÎÆâÉô½èÍýŪ¤Ë¡¢Ëè¥Õ¥ì¡¼¥à¤Î¡Ö°ìÈֺǸå¡×¤Ë¹¹¿·¤¬Æþ¤ë¤¿¤á¤Ç¤¹¡£
¡¡
¡¡¤½¤Î¤¿¤á GunController ¤ÇÍøÍѤ·¤Æ¤¤¤ë½èÍý¤Ï LateUpdate ¥á¥½¥Ã¥É¤Ç¡¢¥×¥ì¥¤¥ä¡¼¤Î°ÌÃ֤ȥ«¥á¥é¤Î°ÌÃÖ¤òƱ´ü¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤Î½èÍý¤Ë¤¹¤ë¤³¤È¤Ç¥º¥ì¤¬¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
Unity ¸ø¼°¥Þ¥Ë¥å¥¢¥ë
¥¤¥Ù¥ó¥È´Ø¿ô¤Î¼Â¹Ô½ç½ø
¡¡ºÇ½é¤ÏÆɤ߲ò¤¯¤Î¤¬Æñ¤·¤¤¤Ç¤¹¤¬¡¢´ðËÜŪ¤Ë¤Ï Unity ¤Î¥Þ¥Ë¥å¥¢¥ë¤ÏÌܤòÄ̤·¤Æ¤ª¤¤¤¿Êý¤¬¤¤¤¤¤Ç¤·¤ç¤¦¡£
¡¡´°À®¤·¤Þ¤·¤¿¤Î¤Ç¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡³Îǧ¤¹¤Ù¤ÆâÍƤÏÍý²ò¤Ç¤¤Æ¤¤¤Þ¤¹¤«¡©
ÇùÁ³¤ÈÆ°¤«¤¹¤Î¤Ç¤Ï³Ø½¬¤Ë¤Ê¤ê¤Þ¤»¤ó¡£¥¹¥¯¥ê¥×¥È¤ÎÆâÍƤòÆɤ߲ò¤¡¢Unity ¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤â³èÍѤ·¤ÆÆ°ºî¤ò¸¡¾Ú¤·¤Þ¤·¤ç¤¦¡£
¡¡Æ°¤¯¤«¤É¤¦¤«¤Ç¤Ï¤Ê¤¯¤Æ¡¢Àµ¤·¤¯Æ°ºî¤ò¤·¤Æ¤¤¤ë¤«¡¢¸¡¾Úºî¶È¤Ç¤¢¤ë¤³¤È¤òÍý²ò¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥«¥á¥é¤Î²óž¤È½Æ¤Î²óž¤Î¸þ¤¤È¤¬Æ±´ü¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¡ã³Îǧư²è¡¡¡¼¥«¥á¥é¤Î²óž¡¼¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡ã³Îǧư²è¡¡¡¼¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°¡¼¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡°Ê¾å¤Ç´°À®¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯