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

¡ß

´Ä¶­

¡¦Unity 6000.3.5f2
¡¦Cinemachine 3.0.1
¡¦InputSystem



¡¡TPS ¥²¡¼¥à¤Ë¤ª¤±¤ë¥«¥á¥é¤ÎÄɽ¾½èÍý¤È²óž½èÍý¤Ë¤Ä¤¤¤Æ¤Î¼ÂÁõÎã¤Ç¤¹¡£

¡¡Unity 6000 °Ê¹ß¤Ç¤Ï Cinemachine 3 ¤¬¥Ç¥Õ¥©¥ë¥È¤ÇºÎÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£

¡¡Cinemachine 3 ¤Ç¤Ï¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ç¤ÎÀßÄê¹àÌܤÎÊѹ¹¤Ë²Ã¤¨¡¢API ¤Ë¤Ä¤¤¤Æ¤âÇ˲õŪÊѹ¹¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢Cinemachine 2 °ÊÁ°¤ÎÀßÄ꤬¹Ô¤¨¤Ê¤«¤Ã¤¿¤ê¡¢¥½¡¼¥¹¥³¡¼¥É¤Ë¤ª¤¤¤Æ¤Ï¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

¡¡¤³¤ì¤é¤òƧ¤Þ¤¨¤¿¾å¤Ç TPS ¥²¡¼¥à¤Ç¤Î¥«¥á¥éÀ©¸æ½èÍý¤Î¼ÂÁõÎã¤ò¤Þ¤È¤á¤Æ¤ª¤­¤Þ¤¹¡£


Àß·×


¡¡¥×¥ì¥¤¥ä¡¼¥­¥ã¥é¤Î°Üư¤Ï CharacterController ¤È InputSystem ¤Ç¹Ô¤¤¤Þ¤¹¡£¥«¥á¥é¤ÎÄɽ¾¤È²óž¤Ï Cinemachine ¤Ç¹Ô¤¤¤Þ¤¹¡£

¡¡°Üư¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢¤³¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈÍѤ˥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Æ¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£
¤³¤Î¥¹¥¯¥ê¥×¥È¤Ç¤Ï CharacterController ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤È InputSystem ¤òÍøÍѤ·¡¢¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ©¸æ¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤·¤Æ¡¢°Üưµ¡Ç½¤ò¼ÂÁõ¤·¤Þ¤¹¡£

¡¡¥«¥á¥é¤ÎÄɽ¾¤È²óž¤Ë¤Ä¤¤¤Æ¤Ï¡¢Cinemachine ¤òÍøÍѤ·¤Þ¤¹¡£¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ä¥¢¥»¥Ã¥È¤Ç¤ÎÀßÄê¤Î¤ß¤Ç¼ÂÁõ²Äǽ¤Ç¤¹¡£¥¹¥¯¥ê¥×¥È¤ÏÉÔÍפˤʤê¤Þ¤·¤¿¡£
¥Þ¥¦¥¹¤Î±¦¥Ü¥¿¥ó¤ò²¡¤·Â³¤±¤Æ¤¤¤ë´Ö¤Ï¥«¥á¥é¤¬¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¼þ°Ï¤ò¸øÅ¾²óž¤¹¤ëµ¡Ç½¤ò¼ÂÁõ²Äǽ¤Ç¤¹¡£
¡¡

¥«¥á¥é¤ÎÄɽ¾½èÍý

¡ã¼ÂÁõư²è¡ä

ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯

¡¡YouTube ¤Ë¤â Unity 6000 °Ê¹ß¤Ç¤Î Cinemachine 3 ¤òÍøÍѤ·¤¿¼ÂÁõư²è¤¬¾Ò²ð¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

Intro to Cinemachine in Unity 6: What is it, Why should I care, and How to Get Started?(±Ñ¸ì)
https://www.youtube.com/watch?v=24EaQ2-5M4w


PlayerTPSController ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë


¡¡¥×¥ì¥¤¥ä¡¼¥­¥ã¥é¤Î°Üư½èÍýÍѤΥ¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Þ¤¹¡£
CharacterController ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¡ÖʪÍý±é»»¤Ï¤·¤Ê¤¤¡×¤¬¡¢¡Ö¾×ÆÍȽÄê¤ÏȯÀ¸¡×¤·¤Þ¤¹¡£
¤Þ¤¿¼«Á°¤Ç½ÅÎϤòÍ¿¤¨¤ë¤³¤È¤Ç¼«Á³Íî²¼¡¢¼ÐÌÌÍî²¼¤Ë¤âÂбþ¤·¤Þ¤¹¡£
¤½¤Î¤¿¤áº£²ó¤Î°Üư¤ä¥¸¥ã¥ó¥×¤Ë¤Ï RigidBody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÏÍøÍѤ·¤Þ¤»¤ó¡£

¡¡°ÜưÊý¸þ¤Ç¤¹¤¬¡¢TPS¤Ç¤Ï W ¥­¡¼(¢¬ ¥­¡¼) ¤Ç¡Ö¥«¥á¥é¤Î¸þ¤¤¤Æ¤¤¤ëÊý¸þ¤Ø¿Ê¤à¡×½èÍý¤¬¼«Á³¤Ç¤¹¡£
¤³¤ì¤ò¼Â¸½¤¹¤ë¤Ë¤Ï¡¢¥«¥á¥é´ð½à¤Ç°Üư¤¹¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¤¿¤á¡¢cameraRoot.forward ¤È cameraRoot.right ¤ò½èÍýÆâ¤Ç»È¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡¥³¥á¥ó¥È¤òÊäµ­¤·¤Æ¤¤¤ë¤¿¤á¡¢¥½¡¼¥¹¥³¡¼¥É¤¬Ä¹¤¤¤è¤¦¤Ë¸«¤¨¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢½èÍý¤Îή¤ì¤Ï¥·¥ó¥×¥ë¤Ç¤¹¡£

­¡ ÃÏÌÌȽÄê
­¢ ¥­¡¼ÆþÎϼèÆÀ
­£¡Ý£± ¥«¥á¥é´ð½à¤Î°ÜưÊý¸þ·×»»
­£¡Ý£² ¥­¥ã¥é²óž
­¤¡Ý£± ¥¸¥ã¥ó¥×
­¤¡Ý£² ½ÅÎÏÍî²¼
­¤¡Ý£³ ¥­¥ã¥é°Üư

¡¡¤³¤Î½çÈ֤˥᥽¥Ã¥É¤òµ­ºÜ¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤·¤Æ¡¢Ëè¥Õ¥ì¡¼¥à¡¢ÆâÉô¤Ç¤Ï¤³¤Î½çÈ֤ǽèÍý¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


PlayerTPSController.cs

<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤­¤Þ¤¹¡£



¡ãCharacterController.Move ¥á¥½¥Ã¥É¡ä


¡¡Unity ¤Î CharacterController ¤Î°·¤¨¤ë¥á¥½¥Ã¥É¤Î£±¤Ä¤Ç¤¹¡£

¡¡°ú¿ô¤Ë Vector3 ·¿¤Î¾ðÊó¤òÅϤ¹¤³¤È¤Ç¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò°Üư¤µ¤»¤Þ¤¹¡£Vector3 ¤ÏÀäÂÐÃͤǤλØÄê¤Ç¤¹¡£
¸ø¼°¥É¥­¥å¥á¥ó¥È¤Îµ­ºÜ¤Ë¤â¤¢¤ê¤Þ¤¹¤¬¡¢¾ã³²Êª¤ËÀÜ¿¨(¾×ÆÍ¤¬È¯À¸)¤¹¤ë¤È°Üư¤òÄä»ß¤·¡¢½ÅÎϤαƶÁ¤Ï¼õ¤±¤Þ¤»¤ó¡£

¡¡Ìá¤êÃÍ¤Ï CollisionFlags ·¿¤Ç¡¢¾×ÆÍ¤ÎÊý¸þ¡ÊNone¡¢Sides¡¢Above¡¢Below¡Ë¤ò¼¨¤·¤Þ¤¹¡£

// ºÇ½ªÅª¤Ê°ÜưÊý¸þ
Vector3 moveDir = forward * input.y + right * input.x;

// ¥À¥Ã¥·¥åȽÄê
float speed = runAction.IsPressed() ? runSpeed : walkSpeed;

// °Üư½èÍý
controller.Move(moveDir * speed * Time.deltaTime);

»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
CharacterController.Move



¡ãQuaternion.LookRotation ¥á¥½¥Ã¥É¡¿Quaternion.Slerp ¥á¥½¥Ã¥É¡ä


¡¡LookRotation ¥á¥½¥Ã¥É¤Ï Quaternion ¹½Â¤ÂΤËÍѰդµ¤ì¤Æ¤¤¤ë¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò²óž¤µ¤»¤ë static ¥á¥½¥Ã¥É¤Ç¤¹¡£
LookRotation ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢°ú¿ô¤Ë»ØÄꤷ¤¿ Vector3 ·¿¤Î¾ðÊó¤ò Quaternion ·¿¤ËÊÑ´¹ ¡á ²óž¾ðÊó¤È¤·¤ÆÊÑ´¹¡¦ºîÀ®¤·¤Þ¤¹¡£(Ìá¤êÃͤη¿¤¬ Quaternion ·¿¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹)
Ê̤θÀ¤¤´¹¤¨¤ò¤¹¤ë¤Ê¤é¡¢Êý¸þ¥Ù¥¯¥È¥ë(Vector3) ¢ª ¸þ¤­¡ÊQuaternion¡¦²óž¡Ë¤ËÊÑ´¹¤¹¤ë¡¢¤È¤â¸À¤¨¤Þ¤¹¡£

¡¡Slerp ¥á¥½¥Ã¥É¤â Quaternion ¹½Â¤ÂΤËÍѰդµ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Î£±¤Ä¤Ç¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¤Ê¤á¤é¤«¤Ë²óž¤µ¤»¤ë¤¿¤á¤ÎÊä´Ö½èÍý¤ò¹Ô¤¦ static ¥á¥½¥Ã¥É¤Ç¤¹
¤³¤Î½èÍý¤òÆþ¤ì¤ë¤³¤È¤Ç¡¢²óž»þ¤Î¤«¤¯¤Ä¤­¤òÍÞ¤¨¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¤Ê¤á¤é¤«¤Ë²óž(¸þ¤­¤òÊѤ¨)¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¡¡°ú¿ô¤Ï£³¤Ä¤¢¤ê¡¢¡Ö°ú¿ô£±(A) ¤«¤é°ú¿ô£²(B) ¤Ø¡¢°ú¿ô£³(t) ¤Î³ä¹ç¤Ç³ê¤é¤«¤Ë²óž¡×¤È¤¤¤¦Êä´Ö½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
º£²ó¤Ç¤¢¤ì¤Ð¡¢transform.rotation ¢ª ¸½ºß¤Î¸þ¤­¡¢targetRot ¢ª ÌÜɸ¤Î¸þ¤­¡¢¤½¤ì¤ËÂФ·¤Æ rotationSpeed * Time.deltaTime ¤Î³ä¹ç(²óž¥¹¥Ô¡¼¥É)¤Ç¡¢²óž½èÍý¤òÊä´Ö¤·¤Þ¤¹¡£
Î㤨¤Ð rotationSpeed = 12¡¢Time.deltaTime ¢â 0.016 (60fps) ¤Ç¤¢¤ë¾ì¹ç¡¢t ¢â 0.2 ¤È¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢20%¤º¤Ä²óž¤µ¤»¤ë½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê²óž»þ¤Î¤«¤¯¤Ä¤­¤¬¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

// ¥«¥á¥é¤ÎÊý¸þ¤È¥­¡¼ÆþÎϤè¤ê¿Ê¹ÔÊý¸þ¤ò¼èÆÀ
Vector3 moveDir = forward.normalized * input.y + right.normalized * input.x;

// ¿Ê¹ÔÊý¸þ¤ò¸þ¤¯²óž¤òºîÀ®
Quaternion targetRot = Quaternion.LookRotation(moveDir);

// ¸½ºß¤Î¸þ¤­¤«¤é¡¢ÌÜɸ¤Î¸þ¤­(¿Ê¹ÔÊý¸þ)¤Ø¡¢¾¯¤·¤º¤Ä²óž
transform.rotation = Quaternion.Slerp(
    transform.rotation,
    targetRot,
    rotationSpeed * Time.deltaTime
);

¡¡transform.rotation ÊÑ¿ô¤Ï Vector3 ·¿¤Ç¤Ï¤Ê¤¯¡¢Quaternion ·¿¤Ç¤¹¡£
¤½¤Î¤¿¤á¡¢Vector3 ·¿¤ÎÃͤò¤½¤Î¤Þ¤Þ transform.rotation ÊÑ¿ô¤ËÂåÆþ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¡£

¡¡¾åµ­¤Î¤è¤¦¤Ë¡¢Quaternion.LookRotation ¥á¥½¥Ã¥É¤ò³èÍѤ¹¤ë¤³¤È¤Ç¡¢Vector3 ·¿¤Î¾ðÊó¤ò Quaternion ·¿¤ËÊÑ´¹¤·¡¢ÂåÆþ½èÍý¤òÀ®Î©¤µ¤»¤Æ¤¤¤Þ¤¹¡£

¡¡¤Ê¤ª¡¢Vector3 ·¿¤Î¾ðÊó¤ò¤½¤Î¤Þ¤Þ²óž¾ðÊó¤È¤·¤ÆÂåÆþ¤¹¤ë¤Ë¤Ï¡¢Quaternion.LookRotation ¥á¥½¥Ã¥É¤Ç¤Ï¤Ê¤¯¡¢Transform.eulerAngles ÊÑ¿ô¤òÍøÍѤ·¤Þ¤¹¡£


»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Quaternion.LookRotation


hildsoft¤Î¥³¡¼¥ÉÃÖ¤­¾ì ÍÍ
Unity¤ÇÂоݤȤʤ륪¥Ö¥¸¥§¥¯¥È¤ò¸þ¤¯¤è¤¦¤Ë²óž¤µ¤»¤¿¤¤(Quaternion.LookRotation)


Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Quaternion.Slerp


Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Transform-eulerAngles



¥×¥ì¥¤¥ä¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë PlayerTPSController ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤ÆÀßÄꤹ¤ë


¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤é¡¢¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤Æ¤¯¤À¤µ¤¤¡£
PlayerTPSController ¥¹¥¯¥ê¥×¥È¤Ë¤Ï RequireComponent(typeof(CharacterController)) °À­¤¬ÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢¼«Æ°Åª¤Ë CharacterController ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤â¥¢¥¿¥Ã¥Á¤µ¤ì¤Þ¤¹¡£

¡¡PlayerTPSController ¥¹¥¯¥ê¥×¥È¤Î³ÆÊÑ¿ô¤Ë¤Ï½é´üÃͤ¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢É¬Íפ˱þ¤¸¤Æ MoveSpeed ÊÑ¿ô¤Ê¤É¤ÎÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£
¼ÂºÝ¤Ë¥²¡¼¥à¤òư¤«¤·¤Ê¤¬¤éÄ´À°¤·¤Æ¤¤¤¯¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£


¥µ¥ó¥×¥ë²èÁü




¡¡InputActionReference ·¿¤Î move¡¢jump¡¢run ÊÑ¿ô¤Ë¤Ï¡¢InputSystem ÍѤΠInputActionReference ¥¢¥»¥Ã¥È¤ò¥¢¥µ¥¤¥ó¤·¤Þ¤¹¡£
½é´üÀßÄê¤Î¤â¤Î¤ÇÌäÂꤢ¤ê¤Þ¤»¤ó¡£run ¤Ë¤Ä¤¤¤Æ¤ÏÊÌÅÓºîÀ®¤·¤Æ¤«¤é¡¢¥¹¥¯¥ê¥×¥ÈÆâ¤Î¥³¥á¥ó¥È¥¢¥¦¥È¤ò²ò½ü¤·¤Æ¤«¤é¥¢¥µ¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£

¥µ¥ó¥×¥ë²èÁü



¥×¥ì¥¤¥ä¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°Üư¤ò³Îǧ¤¹¤ë


¡¡¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë PlayerTPSController ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤Þ¤·¤¿¤Î¤Ç
¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¡¢¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¥²¡¼¥àÆâ¤Ç°Üư¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Þ¤¹¡£

¡¡¤³¤Î»þÅÀ¤Ç¤Ï¡¢¤Þ¤À¥«¥á¥é¤¬¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÄɽ¾¤·¤Þ¤»¤ó¤Î¤Ç¡¢
°Üư¤·¤Æ¤¤¤ë¤È¡¢¥²¡¼¥à²èÌ̤«¤é¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¤Ï¤ß½Ð¤·¤Æ¸«¤¨¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

¡¡¥²¡¼¥à¤ÎÀ½ºî¤Ç¤Ï¡¢£±¤Ä¤Îµ¡Ç½¤ò¼ÂÁõ¤·¤¿¤¬¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¤¡¢ÌäÂêÅÀ¤¬¤Ê¤¤¤«¤ò³Îǧ¤·¤Þ¤¹¡£
¤½¤Î¾å¤Ç¡¢Àè¤Î¼ê½ç¤Ë¿Ê¤à¤³¤È¤Ë¤è¤ê¡¢¾¯¤·¤º¤Äµ¡Ç½¤Î¼ÂÁõ¤ò¹Ô¤¤¤Ê¤¬¤é¡¢ÌÜɸ¤È¤¹¤ë½èÍý¤Î¹½ÃÛ¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡ºÇ½é¤«¤é¤¹¤Ù¤Æ¤ò°ìµ¤¤ËºîÀ®¤¹¤ë¤³¤È¤ÏÆñ¤·¤¤¤¿¤á¡¢£±¤Ä¤Îµ¡Ç½¤¬´°À®¤·¤¿¤é¡¢É¬¤º¤Ç¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦Êʤò¤Ä¤±¤Þ¤·¤ç¤¦¡£

¡¡ÌäÂê¤Ê¤¯¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬°Üư¤ò¹Ô¤¨¤ë¤³¤È¤ò³Îǧ¤Ç¤­¤¿¤é¡¢¼¡¤Î¥«¥á¥éµ¡Ç½¤Î¼ÂÁõ¤Ë°Ü¤ê¤Þ¤¹¡£


¥«¥á¥é¤Î¸øÅ¾²óž½èÍý

¡ã¼ÂÁõư²è¡ä




Cinemachine ¤ÎÀßÄê


¡¡¥«¥á¥é¤Ë Cinemachine ¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¢CinemachineVirtualCamera ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÎÀßÄê¤ò¸«Ä¾¤·¤Þ¤¹¡£

¡¡Follow ¥×¥í¥Ñ¥Æ¥£¤Ë¤Ï¡¢¥«¥á¥é¤¬Äɽ¾¤¹¤ëÂоݤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡LookAt ¥×¥í¥Ñ¥Æ¥£¤Ë¤Ï²¿¤â¥¢¥µ¥¤¥ó¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£¤½¤Î¾ì¹ç¡¢Aim ¤ÎÉôʬ¤Ë·Ù¹ð¤¬É½¼¨¤µ¤ì¤Þ¤¹¤¬¡¢¼ê½çÄ̤ê¤Ë¿Ê¤á¤ë¤È²ò¾Ã¤µ¤ì¤Þ¤¹¡£


¡¡Â³¤¤¤Æ¡¢ Body ¥×¥í¥Ñ¥Æ¥£¤ÎÀßÄê¤ò Framing Transposer ¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£(CinemachineBrain ¤Î WorldUpOverride ¤ÎÀßÄê¤ÏÉÔÍפǤ¹¡£)
¤Þ¤¿¡¢Aim ¥×¥í¥Ñ¥Æ¥£¤ÎÀßÄê¤ò Do nothing ¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤³¤ÎÀßÄê¤ò¹Ô¤¦¤È LookAt ¤ÎÉôʬ¤Î·Ù¹ð¤â²ò¾Ã¤µ¤ì¤Þ¤¹¡£
¤Ê¤ª¡¢¤³¤Î£²¤Ä¤ÎÀßÄê¤ò¹Ô¤ï¤Ê¤¤¤ÈÀµ¾ï¤Ë¥¹¥¯¥ê¥×¥È¤¬Æ°ºî¤·¤Þ¤»¤ó¡£(Î㤨¤Ð Aim ¤ÎÀßÄê¤ò DoAnything ¤Ë¤·¤Æ¤¤¤Ê¤¤¤È¡¢¥«¥á¥é¤Î¾å²¼²óž¤¬Æ°¤­¤Þ¤»¤ó¡£)


¡ãÀßÄêÎã­¡(CinemachineCamera ¤Î¾åµ­¤ÎÀßÄê¤Î¤ß»²¹Í¤È¤·¡¢Transform ¤Ê¤É¤ÎÃͤϻ²¹Í¤Ë¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤)¡ä












































¡¡Cinemachine ¤Î¥«¥á¥é¤Î¾å²¼º¸±¦¤Î°ÌÃ֤ϡ¢Tracked Traget Offset ¤ÎÃͤǤϤʤ¯¡¢ScreenY ¤È ScreenX ¤ÎÃͤÇÄ´À°¤·¤Æ¤¯¤À¤µ¤¤¡£
¥ª¥Õ¥»¥Ã¥È¤ËÃͤòÀßÄꤹ¤ë¤È²óž»þ¤Ë¥«¥á¥é¤¬ÁÛÄꤷ¤Æ¤¤¤ëµóư¤ò¹Ô¤ï¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

¡¡Äɽ¾ÂоݤȤε÷Î¥(Z¼´Êý¸þ)¤Ë¤Ä¤¤¤Æ¤Ï¡¢Camera Distance ¤ÎÃͤÇÄ´À°¤·¤Æ¤¯¤À¤µ¤¤¡£


¡ãÀßÄêÎã­¢(³Æ¹àÌܤÎÃͤϡ¢Ç¤°Õ¤ÎÃͤËÄ´À°¤·¤Æ¤¯¤À¤µ¤¤)¡ä



¡¡³Æ Damping ¤ÎÃͤò 0 ¤Ë¤¹¤ë¤³¤È¤Ç¡¢¥«¥á¥é¤¬¤¹¤°¤Ë¥×¥ì¥¤¥ä¡¼¤òÄɽ¾¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


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


¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¡¢¥×¥ì¥¤¥ä¡¼¤Î°Üư¡¢¤ª¤è¤Ó¥«¥á¥é¤¬²óž¤¹¤ë¤«¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ë¤¢¤ë³Æ¿ôÃͤòÄ´À°¤·¡¢¼«Ê¬¤Î¹Í¤¨¤Æ¤¤¤ë¥¤¥á¡¼¥¸¤Ë¶á¤¤·Á¤Ç¼ÂÁõ¤·¤Þ¤·¤ç¤¦¡£


¡ã¼ÂÁõư²è¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯

¡¡°Ê¾å¤Ç´°À®¤Ç¤¹¡£
¤ª¤Ä¤«¤ì¤µ¤Þ¤Ç¤·¤¿¡£

¡¡Ãí°ÕÅÀ¤È¤·¤Þ¤·¤Æ¤Ï¡¢Ä̾ï¤Î¥«¥á¥é¡¢Cinemachine Ìä¤ï¤º¡¢¥«¥á¥é¤ò½Ö»þ¤Ëȿž¤µ¤»¤ë½èÍý(Rotation.y ¤ò 0 ¢ª 180 ¤Ê¤É)¤Ë¤Ä¤¤¤Æ¤Ï¡¢
°Üư¤Î½èÍý¤Ë¥«¥á¥é¤ÎÊý¸þ¤ò»²¾È¤·¤Æ¤¤¤ëÅÔ¹ç¾å¡¢²óž½èÍý¤¬¶¥¹ç¤·¤Æ¤·¤Þ¤¤¡¢Àµ¾ï¤Ëưºî¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£


»²¹Í¥µ¥¤¥È


note ¤ä¤Þ¤Àsktn ÍÍ
Cinemachine Camera (Unity6Âбþ)
https://note.com/kind_boar6846/n/n5e5affa9868c

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


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

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

Menu



´ðÁÃ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

private



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

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

¹­¹ðÊç½¸Ãæ