i-school - £³£Ä¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó¡¡¼ê½ç£µ
¡¡¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°µ¡Ç½¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¿·¤·¤¯³Ø½¬¤¹¤ëÆâÍƤ¬Èó¾ï¤Ë¿¤¤¤¿¤á¡¢£±¤Ä¤º¤Ä¡¢Íý²ò¤·¤Ê¤¬¤é¿Ê¤á¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¥×¥í¥°¥é¥à¤Ï¡¢»öÁ°¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëµ¡Ç½¤ò³èÍѤ·¡¢¤½¤ì¤ò¾å¼ê¤¯ÁȤßΩ¤Æ¤ë¤³¤È¤Ç¥í¥¸¥Ã¥¯¤òºî¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤è¤Ã¤Æ£±¤Ä£±¤Ä¤Îµ¡Ç½¤¬Íý²ò¤Ç¤­¤Æ¤¤¤Ê¤¤¤È¡¢½èÍýÁ´ÂΤòÆɤ߲ò¤±¤Ê¤¯¤Ê¤ê¤Þ¤¹¤·¡¢¼«Ê¬¤Ç¥í¥¸¥Ã¥¯¤òºî¤ë¤³¤È¤âÆñ¤·¤¯¤Ê¤ê¤Þ¤¹¡£

¡¡¤æ¤Ã¤¯¤ê¤È³Ø½¬¤·¡¢É¬ÍפǤ¢¤ì¤ÐÉü½¬¤ò¤ª¤³¤Ê¤Ã¤Æ¤¯¤À¤µ¤¤¡£



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

¼ê½ç£µ¡¡¡¼¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°µ¡Ç½¤Î¼ÂÁõ¡¼



¡¡¡¦RequireComponent(typeof(¥¯¥é¥¹Ì¾/¥³¥ó¥Ý¡¼¥Í¥ó¥È̾))]°À­
¡¡¡¦SerializeField °À­
¡¡¡¦TryGetComponent ¥á¥½¥Ã¥É¤È out ¥­¡¼¥ï¡¼¥ÉÀë¸À
¡¡¡¦Input.GetAxis ¥á¥½¥Ã¥É
¡¡¡¦FixedUpdate ¥á¥½¥Ã¥É
¡¡¡¦Rigidbody.velocity ÊÑ¿ô¤È velocity ÊÑ¿ô¤òÍøÍѤ·¤¿°ÜÆ°
¡¡¡¦Summary¡Ê¥µ¥Þ¥ê¡¼¡Ëµ¡Ç½

¡¡¡¦Rigidbody.velocity.normalized ÊÑ¿ô
¡¡¡¦Vector3.zero ÊÑ¿ô
¡¡¡¦Quaternion.LookRotation ¥á¥½¥Ã¥É
¡¡¡¦³Ø½¬¤Î¤¿¤á¤Î¹©É×



£±¡¥¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÜÆ°µ¡Ç½¤ò¼ÂÁõ¤¹¤ë

£±¡¥Àß·×


¡¡£³£Ä¶õ´Ö¤Ë¤ª¤±¤ë¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°¤Ë¤Ä¤¤¤Æ¤Ï¡¢Á°¸åº¸±¦Êý¸þ¤Î°ÜÆ°¤ò¹Ô¤¦·Á¤Î¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£
¾å²¼Êý¸þ(£Ù¼´)¤Î°ÜÆ°¤Ï¼ç¤Ë¥¸¥ã¥ó¥×¤äÍî²¼¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ìÊÌÅӤΰ㤦¼ê½ç¤ÇÊýË¡¤òÀâÌÀ¤·¤Þ¤¹¡£

¡¡¤Þ¤º¤ÏºÇ½é¤Ë¥×¥ì¥¤¥ä¡¼¤Îʬ¿È¤È¤Ê¤ë£³£Ä¥­¥ã¥é¥¯¥¿¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥²¡¼¥à²èÌ̤ËÇÛÃÖ¤·¤Þ¤¹¡£
¤½¤Î¸å¡¢°ÜÆ°ÍѤΥ¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Æ¡¢¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°¤ò¼ÂÁõ¤·¤Þ¤¹¡£

¡¡¤Ê¤ª¡¢¤³¤Î°ÜÆ°ÊýË¡¤Ï´ðËÜŪ¤Ê°ÜÆ°ÊýË¡¤Ç¤¹¡£ÌÜŪ¤Ç¤¢¤ëÇòÇ­¥×¥í¥¸¥§¥¯¥È¤Î¤è¤¦¤Ê¥²¡¼¥à¤Ë¤ª¤±¤ë°ÜÆ°¤Î¾ì¹ç¤Ë¤Ï¡¢
¥²¡¼¥àÆâ¤Î¥«¥á¥é¤Î¥¢¥ó¥°¥ë¤â²ÃÌ£¤·¤¿¾å¤Ç¥×¥ì¥¤¥ä¡¼¤ò°ÜÆ°¤µ¤»¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¡¡¤è¤Ã¤Æ¡¢¤Þ¤º¤Ï¤³¤Î¼ê½ç¤Ç´ðËÜŪ¤Ê°ÜÆ°ÊýË¡¤ò³Ø½¬¤·¡¢¥«¥á¥é¤Îµ¡Ç½¤ò³Ø½¬¤·¤Æ¤«¤é¡¢¿·¤·¤¤°ÜÆ°ÊýË¡¤ò³Ø½¬¤·¤Æ¤¤¤¯Î®¤ì¤Ç¿Ê¤á¤Þ¤¹¡£


£²¡¥PlayerMove ¥¯¥é¥¹¤òºîÀ®¤¹¤ë


¡¡¥×¥ì¥¤¥ä¡¼¤Î¾ðÊó¤ò´ÉÍý¤¹¤ë¤¿¤á¤Î¥¹¥¯¥ê¥×¥È¤È¤·¤Æ PlayerMove ¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£
¤³¤Î¥¹¥¯¥ê¥×¥ÈÆâ¤Ë°ÜÆ°¤Î½èÍý¤òµ­½Ò¤·¡¢¥×¥ì¥¤¥ä¡¼¤òÀ©¸æ¤·¤Þ¤¹¡£

¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Æ¤¤¤¯ºÝ¤Ë¤Ï¡¢À衹¤Î¤³¤È¤ò¹Í¤¨¤Æ¡¢»öÁ°¤Ë¥Õ¥©¥ë¥À¤òºîÀ®¤·¡¢¤½¤ÎÃæ¤Ë¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Æ¤¤¤¯¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£

¡¡Assets ¥Õ¥©¥ë¥ÀÆâ¤Ç±¦¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¥á¥Ë¥å¡¼¤ò³«¤¯¤È¡¢Create => Folder ¤È¤¤¤¦¥³¥Þ¥ó¥É¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤Ç¿·¤·¤¤¥Õ¥©¥ë¥À¤òºîÀ®¤Ç¤­¤Þ¤¹¡£
Scripts ¤Î¤è¤¦¤Ê¤ï¤«¤ê¤ä¤¹¤¤¤Ç¥Õ¥©¥ë¥À¤òºîÀ®¤·¡¢¤½¤Î¥Õ¥©¥ë¥À¤ÎÃæ¤ÇºÆÅÙ±¦¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¥á¥Ë¥å¡¼¤ò³«¤­¡¢Create => C# Script ¤òÁªÂò¤·¤Æ
¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¡¢Ì¾Á°¤ò PlayerMove ¤ËÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£


¥Õ¥©¥ë¥ÀºîÀ®




PlayerMove.cs

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



£³¡¥¡ãRequireComponent(typeof(¥¯¥é¥¹Ì¾/¥³¥ó¥Ý¡¼¥Í¥ó¥È̾))]°À­¡ä

¡¡¡¡
¡¡[] ¤Ç½ñ¤«¤ì¤¿¾ðÊó¤Ï°À­¡ÊAttribute¡Ë¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¤¹¡£
°À­¤òÉÕÍ¿¤¹¤ë»ö¤Ç¾¤ÎÊÑ¿ô¤È¶èÊ̤·¤¿¤ê¡¢ÆÃÊ̤ʵóÆ°¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

[RequireComponent(typeof(Rigidbody))]
public class PlayerMove : MonoBehaviour {

¡¡¤³¤ÎRequireComponent(¥ê¥¯¥ï¥¤¥¢¡¦¥³¥ó¥Ý¡¼¥Í¥ó¥È)°À­¤Ï¡¢¥¯¥é¥¹Ì¾¤Î£±¹Ô¾å¤Ëµ­½Ò¤¹¤ë°À­¤Ç¤¹¡£

¡¡¤³¤Î°À­¤Î(°ú¿ô)¤Ç»ØÄꤷ¤¿¥¯¥é¥¹¤ä¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¡¢¤³¤Î¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢Console ¥Ó¥å¡¼¤Ë¥¨¥é¡¼¤¬½Ð¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¡¡

¡¡¤Þ¤¿¤³¤Î°À­¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¤ò¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë¤È¡¢°ú¿ô¤Ç»ØÄꤷ¤Æ¤¤¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¼«Æ°Åª¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Þ¤¹¡£(º£²ó¤Ï Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È)
¤Ä¤Þ¤ê¤³¤Îµ¡Ç½¤Ï¡¢¥¹¥¯¥ê¥×¥È¤òÀµ¾ï¤ËÆ°ºî¤µ¤»¤ë¤¿¤á¤ËɬÍפʥ³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¶¯À©Åª¤ËÍÑ°Õ¤·¤Æ¤¯¤ì¤ëÆâÍƤˤʤäƤ¤¤Þ¤¹¡£
¡¡
¡¡º£²ó¤³¤Î PlayerMove ¥¹¥¯¥ê¥×¥È¤Ë¤è¤ê Player ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò°ÜÆ°¤µ¤»¤ë¤Ë¤Ï Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬É¬Íפˤʤê¤Þ¤¹¡£
[RequireComponent(typeof(Rigidbody))]°À­¤òÄɲ乤뤳¤È¤Ë¤è¤Ã¤Æ¡¢¼«Æ°Åª¤Ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¥¢¥¿¥Ã¥Á¤ò¹Ô¤¦¤È¤È¤â¤Ë¡¢¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¥¨¥é¡¼¤¬½Ð¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£


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


£´¡¥¡ãSerializeField °À­¡ä


¡¡ÊÑ¿ô¤ÎÀë¸À¤Ë¹ç¤ï¤»¤ÆÀë¸À¤Ç¤­¤ë¡¢Â°À­¾ðÊó¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Î£±¤Ä¤Ç¤¹¡£ÊÑ¿ô¤ÎÀë¸À¤ÎÁ°¤Ë [ ] ÉÕ¤­¤Ç½ñ¤«¤ì¤¿ÆâÍƤ¬Â°À­¾ðÊó¤È¤Ê¤ê¤Þ¤¹¡£

¡¡º£²óÍøÍѤ·¤Æ¤¤¤ë°À­¤Ï SerializeField ¤È¤¤¤¦Â°À­¾ðÊó¤Ç¤¹¡£¤³¤Îµ¡Ç½¤Ï¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¾å¤ËÊÑ¿ô¤òɽ¼¨¤µ¤»¤ë¡¢¤È¤¤¤¦¤â¤Î¤Ç¤¹¡£

¡¡¼ç¤Ë private ½¤¾þ»Ò¤È¥»¥Ã¥È¤ÇÍѤ¤¤é¤ì¡¢¥¢¥µ¥¤¥ó¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¾å¤Ç²Äǽ¤Ë¤¹¤ë¤â¤Î¤Î¡¢ÊÑ¿ô¤Î»²¾ÈÀ褬³°Éô¤Î¥¹¥¯¥ê¥×¥È¤Ë¤Ê¤¤(public¤ÎɬÍפ¬¤Ê¤¤)¾ì¹ç¤ËÍøÍѤ·¤Þ¤¹¡£

¡¡¤¿¤È¤¨¤Ð Button¥³¥ó¥Ý¡¼¥Í¥ó¥È¤äText¥³¥ó¥Ý¡¼¥Í¥ó¥È¤È¤¤¤Ã¤¿¡¢¥¢¥µ¥¤¥ó¤Ï¤¹¤ë¤â¤Î¤Î¡¢¤½¤ÎÊÑ¿ô¤ÎÍøÍÑÀ褬¾¤Î¥¹¥¯¥ê¥×¥È¤Ë¤Ï¤Ê¤¤¤è¤¦¤Ê¤â¤Î¡¢¤Ë¤ÏÍøÍѤ·¤ä¤¹¤¤¤Ç¤¹¡£

¡¡º£²ó¤Ï¥×¥ì¥¤¥ä¡¼¤Î°Üư®ÅÙ¤òÀßÄꤹ¤ë¤¿¤á¤ÎÊÑ¿ô¤ÎÀë¸À¤Ë°À­¾ðÊó¤òÉÕÍ¿¤·¤Æ¤¤¤Þ¤¹¡£
°Üư®Å٤ξðÊó¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ëɽ¼¨¤µ¤»¤ë¤³¤È¤Ë¤è¤ê¡¢°Üư®ÅÙ¤ÎÄ´À°¤Ë¤¢¤¿¤ê¡¢
¥¹¥¯¥ê¥×¥ÈÆâ¤Ç¤½¤ÎÅÔÅÙ½ñ¤­Ä¾¤µ¤Ê¤¯¤Æ¤â¤è¤¤¤è¤¦¤Ë¤¹¤ëÌÜŪ¤ÇÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£


£µ¡¥¡ãTryGetComponent ¥á¥½¥Ã¥É¤È out ¥­¡¼¥ï¡¼¥ÉÀë¸À¡ä


¡¡Unity2019.2°Ê¹ß¤ËÄɲ䵤줿¥á¥½¥Ã¥É¤Ç¤¹¡£½èÍý·ë²Ì¤È¤·¤Æ bool ·¿¤ÇÌá¤êÃͤòÊÖ¤·¤Æ¤¯¤ì¤Þ¤¹¡£
¤³¤Î¤È¤­¤Î½èÍý·ë²Ì¤È¤¤¤¦¤Î¤Ï¡¢»ØÄꤷ¤¿¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î·¿¤Î¼èÆÀ¤ò¹Ô¤¤¡¢¤½¤ì¤¬¼èÆÀ¤Ç¤­¤ì¤Ðtrue¡¢¼èÆÀ¤Ç¤­¤Ê¤±¤ì¤Ðfalse¤¬Ìá¤ê¤Þ¤¹¡£

¡¡¤Þ¤¿ out ¥­¡¼¥ï¡¼¥É¤Ë¤è¤ëÀë¸À¤¬¤¢¤ê¤Þ¤¹¡£
¡¡out ¥­¡¼¥ï¡¼¥ÉÀë¸À¤ò¹Ô¤¦¤È¡¢out ¤òÉÕ¤±¤¿°ú¿ô¤Ç»ØÄꤷ¤¿ÊÑ¿ô¤Ï¥á¥½¥Ã¥ÉÆâ¤Çɬ¤º·ë²Ì¤¬Æþ¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¤â¤Î¤Ç¤¹¡£
¤½¤Î¤¿¤á¡¢½èÍý·ë²Ì¤ÎÌá¤êÃͤ¬ true ¤Î¾ì¹ç¤Ë¤Ïɬ¤º¡¢¤³¤Î out ¤Î¸å¤ËÀë¸À¤·¤¿ÊÑ¿ôÆâ¤Ë·¿¤¬ÂåÆþ¤µ¤ì¤Þ¤¹¡£

¡¡Ã¼Åª¤Ë¤¤¤¦¤Ê¤é¤Ð¡¢GetComponent ¥á¥½¥Ã¥É¤Î½èÍý¤Ë²Ã¤¨¤Æ¡¢¤½¤Î½èÍý¤ÎÀ®ÈÝȽÄê(¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¼èÆÀ½ÐÍ褿¤«¡¢½ÐÍè¤Ê¤«¤Ã¤¿¤«)¤òƱ»þ¤Ë¹Ô¤Ã¤Æ¤¯¤ì¤ë¥á¥½¥Ã¥É¤Ë¤Ê¤ê¤Þ¤¹¡£

¡ã¼ÂÁõÎã­¡¡ä
  private Rigidbody rb;

  TryGetComponent(out rb);

¡ã¼ÂÁõÎã­¢¡¡Ìá¤êÃͤò³èÍÑ¡ä
if(col.gameObject.TryGetComponent(out Rigidbody rigid)) {

   // ½èÍý¤ò½ñ¤¯
}

¡¡º£²ó¤Ï¼ÂÁõÎã­¡¤Î½èÍý¤È¤·¤ÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£¥¹¥¯¥ê¥×¥ÈÆâ¤Ë TryGetComponent ¥á¥½¥Ã¥É¤òľÀܵ­½Ò¤·¤¿¾ì¹ç¡¢GetComponent ¥á¥½¥Ã¥É¤ÈƱÍͤˡ¢
¤³¤Î¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤·¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤«¤é»ØÄꤵ¤ì¤Æ¤¤¤ë¼ïÎà¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¼èÆÀ¤·¤Æ¤Þ¤¹¡£
¤½¤ì¤ò out ¥­¡¼¥ï¡¼¥É¸å¤Î rb ÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤¤¤Þ¤¹¡£GetComponent ¥á¥½¥Ã¥É¤Î¤è¤¦¤Ë<·¿°ú¿ô>¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤¤Î¤Ï¡¢rb ÊÑ¿ô¤Ë¤è¤Ã¤Æ·¿¤ò¿äÏÀ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¤¿¤á¤Ç¤¹¡£

¡¡out ¥­¡¼¥ï¡¼¥É°Ê¹ß¤Ë¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤·¤¿¤¤·¿¤ÈÊÑ¿ô¤òÀë¸À¤·¤Þ¤¹¡£º£²ó¤Î¤è¤¦¤Ë»öÁ°¤ËÊÑ¿ô¤ÎÀë¸À¤ò¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ÊÑ¿ô¤Î¤ß¤òÍÑ°Õ¤·¤Æ¤ª¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡¼ÂÁõÎã­¢¤Î¾ì¹ç¤Ï¡¢¤â¤·¤â¤³¤Î TryGetComponent ¥á¥½¥Ã¥É¤Î½èÍý·ë²Ì¤¬¼Â¹Ô²Äǽ¤Ê¤é¤Ð¡¢¤Ä¤Þ¤ê¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢
out ¤È¤·¤ÆÍÑ°Õ¤·¤¿ rigid ÊÑ¿ô¤Ë Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¾ðÊó¤¬ÂåÆþ¤µ¤ì¤Þ¤¹''¡£¤Þ¤¿¡¢true ¤ÎÃͤ¬¡¢¤½¤ì¤È¤ÏÊ̤˽èÍý·ë²Ì¤È¤·¤ÆÌá¤ê¤Þ¤¹¡£
out ¤ËÍÑ°Õ¤·¤¿ÊÑ¿ô¤¬»öÁ°¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ëÊÑ¿ô¤Î¾ì¹ç(Î㤨¤Ð rb ÊÑ¿ô)¤Ë¤Ï¡¢Àë¸À¤µ¤ì¤Æ¤¤¤¿ÊÑ¿ô¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡£
¤³¤ÎÊÕ¤ê¤ÏÊÑ¿ô¤Î¥¹¥³¡¼¥×¤ò¹Í¤¨¤Æ¼ÂÁõ¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£

¡¡TryGetComponent ¥á¥½¥Ã¥É¤Î½èÍý·ë²Ì¤¬ false ¤Î¾ì¹ç¤Ë¤Ï Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¼èÆÀ¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¤¿¤á¡¢rigid ÊÑ¿ô¤Ï null ¤Î¤Þ¤Þ¤Ç¡¢false ¤¬½èÍý·ë²Ì¤È¤·¤ÆÌá¤ê¤Þ¤¹''¡£


¡¡¤Ê¤ª TryGetComponent ¥á¥½¥Ã¥É¤Ë¤ÏÊ£¿ô¤Î½ñ¼°¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Á¤é¤Ï²¼µ­¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

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


£¶¡¥¡ãInput.GetAxis ¥á¥½¥Ã¥É¡ä


¡¡Ê̤ε­»ö¤Ç¾Ü¤·¤¯²òÀ⤷¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤ò³Îǧ¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£


¡¡=>¡¡Input.GetAxis¥á¥½¥Ã¥É¤ÈInputManager¤Î´ØÏ¢À­


£·¡¥¡ãFixedUpdate ¥á¥½¥Ã¥É¡ä


¡¡Rigidbody ¤Ë¤è¤ëʪÍý±é»»¤Î½èÍý¤ò·Ñ³Ū¤Ë½èÍý¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢Update ¥á¥½¥Ã¥É¤Ç¤Ï¤Ê¤¯¤Æ FixedUpdate ¥á¥½¥Ã¥É¤òÍøÍѤ·¤ÆÀ߷פò¹Ô¤¤¤Þ¤¹¡£

¡¡FixedUpdate ¥á¥½¥Ã¥É¤Ï½é´üÀßÄê¤Ç¤Ï 0.02ÉÃ(1Éô֤Ë50²ó)¤´¤È¤Î¸ÇÄê¥Õ¥ì¡¼¥à¥ì¡¼¥È¤Ç¡¢ÊªÍý±é»»¤Î½èÍý¤Î¹¹¿·¤ò¹Ô¤¦Ä¾Á°¤Ë¼«Æ°Åª¤Ë¸Æ¤Ó¤À¤µ¤ì¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£

¡¡Update ¥á¥½¥Ã¥É¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈÅù¤ÎÆ°ºî¤Î¥ì¥ó¥À¥ê¥ó¥°Á°¤ËËè¥Õ¥ì¡¼¥à¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢
½èÍý¤Î¼Â¹Ô¥¿¥¤¥ß¥ó¥°¤È¥Õ¥ì¡¼¥à¤Î¸Æ¤Ó½Ð¤·¤¬¸ÇÄ꤫¤É¤¦¤«¤¬ Update ¥á¥½¥Ã¥É¤È FixedUpdate ¥á¥½¥Ã¥É¤Î°ã¤¤¤Ç¤¹¡£

¡¡°Ê¾å¤Î¤³¤È¤«¤é¡¢FixedUpdate ¥á¥½¥Ã¥É¤ÏʪÍýµóÆ°¤Î¹¹¿·¤ÎľÁ°¤Ë¸Æ¤Ð¤ì¤ë¥á¥½¥Ã¥É¤Ç¤¢¤ë¤¿¤á¡¢ÊªÍý±é»»¤Î½èÍý¤ò¹Ô¤¦¤³¤È¤ËŬ¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç
Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÍøÍѤ·¤¿ÊªÍý±é»»¤òÍѤ¤¤¿°ÜÆ°½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¡¢FixedUpdate ¥á¥½¥Ã¥É¤Ë¤Æ¹Ô¤¦¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£


»²¹Í¥µ¥¤¥È
SamuraiBlog ÍÍ
¡ÚUnityÆþÌç¡ÛUpdate¥á¥½¥Ã¥É¤È¤Ï?FixedUpdate¤È¤Î°ã¤¤¤âÅ°Äì²òÀâ!
¤«¤á¤¯¤á ÍÍ
Unity¤ÎUpdate¤ÈFixedUpdate¡¢LateUpdate¥á¥½¥Ã¥É¤Ë¤Ä¤¤¤Æ


£¸¡¥¡ãRigidbody.velocity ÊÑ¿ô¤È velocity ÊÑ¿ô¤òÍøÍѤ·¤¿°ÜÆ°¡ä


¡¡¥­¥ã¥é¤Î°ÜÆ°¤Ë¤Ï¿§¡¹¤ÊÊýË¡¤¬¤¢¤ê¤Þ¤¹¤¬¡¢º£²ó¤Ï¡¢Rigidbody2D ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î´ÉÍý¤·¤Æ¤¤¤ë¡¢Velocity¡Ê¥Ù¥í¥·¥Æ¥£¡£Â®Å٥٥¯¥È¥ë¡Ë¤Î¾ðÊó¤òÁàºî¤·¤Æ¡¢¥­¥ã¥é¤ò°ÜÆ°¤µ¤»¤Þ¤¹¡£
Rigidbody2D ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È(º£²ó¤Ï¥­¥ã¥é)¤ËÂФ·¤Æ¡¢Â®ÅÙ¾ðÊó¤òÍ¿¤¨¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¥­¥ã¥é¤Î°ÜÆ°¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£



¡¡velocity(¥Ù¥í¥·¥Æ¥£)¤È¤ÏRigidbody¥¯¥é¥¹¤Î»ý¤Ä¾ðÊó¤Î£±¤Ä¤Ç¡¢³Æ¼´(x,y,z)¤Î®Å٥٥¯¥È¥ë¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£
¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬Ää»ß¤·¤Æ¤¤¤ë¾ì¹ç¡¢velocity¤ÎÃͤϤ¹¤Ù¤Æ 0 ¤Ç¤¹¡£(velocity = 0, 0, 0)

  // °ÜÆ°Êý¸þ¤Ë¥¹¥Ô¡¼¥É¤ò³Ý¤±¤Æ°ÜÆ°
¡¡rb.velocity = new Vector3(moveX, rb.velocity.y, moveZ) * moveSpeed;

¡¡X ¼´¤È Z ¼´¤Ë¤Ä¤¤¤Æ¤Ï¡¢³ÆÊý¸þ¤Î¥­¡¼ÆþÎϤÎÃÍ¤È moveSpeed ÊÑ¿ô¤Î·×»»·ë²Ì¤¬Æþ¤ê¡¢¤½¤Î¼´¤ÎÊý¸þ¤Ø°ÜÆ°¤ò¹Ô¤¤¤Þ¤¹¡£
Y ¼´¤Ï velocity ÊÑ¿ô¤Î y ¤ÎÃͤ¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢½ÅÎϤ˱ƶÁ¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¥Þ¥¤¥Ê¥¹Êý¸þ¤Ø¤Î®ÅÙ¤¬Æþ¤ê¡¢
¤½¤Î·ë²Ì¡¢ÃÏÌ̤˸þ¤«¤Ã¤ÆÍî²¼¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡½èÍý¤Îľ¸å¤Ë Debug.Log¥á¥½¥Ã¥É¤òÆþ¤ì¤Æ¤ª¤¯¤³¤È¤Ç¡¢Console ¥Ó¥å¡¼¤òÄ̤¸¤Æ¡¢¤³¤Î velocity ¤ÎÃͤÎÆ°¤­¤ò´Ñ»¡¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
¥­¡¼ÆþÎϤò¹Ô¤¤¤Ê¤¬¤é¡¢¤É¤Î¤è¤¦¤Ê½èÍý¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£


»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Rigidbody-velocity
SamuraiBlog ÍÍ
¡ÚUnityÆþÌç¡ÛRigidbody¤Ç¼«ºß¤Ë°ÜÆ°!velocity¤Î³èÍÑÊýË¡!


£¹¡¥¡ãSummary¡Ê¥µ¥Þ¥ê¡¼¡Ëµ¡Ç½¡ä


¡¡´Ø¿ô¡Ê¥á¥½¥Ã¥É¡Ë¤ä¥¯¥é¥¹¤òºîÀ®¤·½ª¤ï¤ê¤Þ¤·¤¿¤é¡¢É¬¤º¤½¤Î´Ø¿ô¤ä¥¯¥é¥¹¤ÎÀâÌÀ¤ò½ñ¤¯¤è¤¦¤Ë¿´¤¬¤±¤Þ¤·¤ç¤¦¡£½ñ¤¯¾ì½ê¤Ï´Ø¿ô̾¡¢¤¢¤ë¤¤¤Ï¥¯¥é¥¹Ì¾¤Î£±¹Ô¾å¤ÎÉôʬ¤Ç¤¹¡£
Ⱦ³Ñ¥¹¥é¥Ã¥·¥å¤ò3¸ÄϢ³¤Çµ­½Ò¤¹¤ë¤ÈÀâÌÀÍѤΥ³¥á¥ó¥È¤Ç¤¢¤ë¥µ¥Þ¥ê¡¼(³µÍ×)¤¬¼«Æ°Åª¤Ëµ­½Ò¤µ¤ì¤Þ¤¹¡£

    /// <summary>
    /// °ÜÆ°
    /// </summary>
    private void Move() {


¡¡Ê̤ε­»ö¤Ç¾Ü¤·¤¯²òÀ⤷¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤ò³Îǧ¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£

¡¡=>¡¡ÃΤäƤª¤­¤¿¤¤Æ¦Ãμ±


£±£°¡¥¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë PlayerMove ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤¹¤ë


¡¡¥Ò¥¨¥é¥ë¥­¡¼¤Ë¤¢¤ë¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¡¢Àè¤Û¤ÉºîÀ®¤·¤¿ PlayerMove ¥¹¥¯¥ê¥×¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£

¡¡¥Ò¥¨¥é¥ë¥­¡¼¤Î¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤òɽ¼¨¤·¤Æ¡¢PlayerMove ¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£

¡¡MoveSpeed ÊÑ¿ô¤ÎÃͤϥ¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤êÄ´À°¤Ç¤­¤Þ¤¹¡£¤³¤ÎÃͤ¬¥×¥ì¥¤¥ä¡¼ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°Üư®ÅÙ¤ÎÃͤˤʤê¤Þ¤¹¤Î¤Ç¡¢Å¬µ¹Ä´À°¤ò¤ª´ê¤¤¤·¤Þ¤¹¡£


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



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


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


¡¡¥­¡¼ÆþÎϤò¹Ô¤Ã¤¿ºÝ¤Ë¡¢¥×¥ì¥¤¥ä¡¼¤¬¼ÂºÝ¤Ë°ÜÆ°¤¹¤ë¤«¡¢Æ°ºî³Îǧ(¥Ç¥Ð¥Ã¥°)¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¡¢Ìð°õ¥­¡¼¤Î¾å²¼º¸±¦¡¢¤¢¤ë¤¤¤Ï W¡¢S¡¢A¡¢D ¥­¡¼¤ò²¡¤·Â³¤±¤Æ¤¯¤À¤µ¤¤¡£
»ØÄꤷ¤¿Êý¸þ¤Ë°ÜÆ°¤¹¤ì¤Ð¡¢À©¸æ¤ÏÀ®¸ù¤Ç¤¹¡£


¡¡¤¿¤À¤·¡¢¸½»þÅÀ¤Ç¤Ï¥«¥á¥é¤Ï¥×¥ì¥¤¥ä¡¼¤òÄɽ¾¤·¤Þ¤»¤ó¤Î¤Ç¡¢¥×¥ì¥¤¥ä¡¼¤Î¤ß¤¬°ÜÆ°¤¹¤ëÀ©¸æ¤Ë¤Ê¤ê¤Þ¤¹¡£
¤Þ¤¿¡¢¥×¥ì¥¤¥ä¡¼¤Î¸þ¤­(³ÑÅÙ)¤âÊѲ½¤·¤Þ¤»¤ó¡£

¡¡¤³¤ì¤é¤Ï¤¤¤º¤ì¤â¡¢¤½¤ì¤é¤ÎÆ°ºî¤ËÂФ·¤Æ¤ÎÀ©¸æ¤¬¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¤¿¤á¤Ç¤¹¡£



¡¡Àµ¾ï¤ËÆ°ºî¤·¤¿¾ì¹ç¡¢¤½¤ì¤Ç½ª¤ï¤ê¡¢¤Ç¤Ï¤Ê¤¯¤Æ¡¢¥×¥í¥°¥é¥à¤òÆɤßľ¤·¡¢
¤É¤Î¤è¤¦¤Ê½èÍý¤Ë¤è¤Ã¤Æ¡¢º£²ó¤Î°ÜÆ°¤ÎÀ©¸æ¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¤«¤ò¡¢¤·¤Ã¤«¤ê¤ÈÆɤ߲ò¤±¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¤Ç¤Ï³¤±¤Æ¡¢°ÜÆ°¤Ë¹ç¤ï¤»¤Æ¥×¥ì¥¤¥ä¡¼¤Î¸þ¤­(³ÑÅÙ)¤òÊѹ¹¤¹¤ëÉôʬ¤Ë¤Ä¤¤¤Æ½¤Àµ¤ò¹Ô¤¤¤Þ¤¹¡£


PlayerMove ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°ÊýË¡¤È¥×¥ì¥¤¥ä¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¸þ¤­(³ÑÅÙ)¤ò°ìÃפµ¤»¤ë

£±¡¥Àß·×


¡¡¥×¥ì¥¤¥ä¡¼¤ÎÍÑ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï°ÜÆ°¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¤¬¡¢°ÜÆ°¤¹¤ë¤À¤±¤Ç¤¢¤Ã¤Æ¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¸þ¤­¤ÏÊѹ¹¤µ¤ì¤Þ¤»¤ó¡£
¤Ä¤Þ¤ê¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¸þ¤­(³ÑÅÙ)¤ò°ìÃפµ¤»¤ë¤è¤¦¤Ê¥×¥í¥°¥é¥à¤ò½ñ¤«¤Ê¤¤¤È¡¢¼«Æ°Åª¤Ë¸þ¤­¤ò¹ç¤ï¤»¤Æ¤¯¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£

¡¡¤³¤Î¤è¤¦¤Ë¡¢¤¤¤Ä¤âÍ·¤ó¤Ç¤¤¤ë¥²¡¼¥à¤ÇÅö¤¿¤êÁ°¤ËÆ°¤¤¤Æ¤¤¤ë¤è¤¦¤Ë¸«¤¨¤ë¤â¤Î¤â¡¢
¤¹¤Ù¤Æ¡¢ÆâÉô¤Î¥×¥í¥°¥é¥à¤Ë¤è¤Ã¤ÆÀ©¸æ¤ò¤·¤Æ¤¤¤ë¡¢¤È¤¤¤¦¤³¤È¤òǧ¼±¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Ã¤Æ¤¯¤À¤µ¤¤¡£


£²¡¥PlayerMove ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤¹¤ë


¡¡¤³¤³¤Ç¤Ï¥×¥ì¥¤¥ä¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÀ©¸æ¤¹¤ë¤¿¤á¤ËºîÀ®¤·¤¿ PlayerMove ¥¹¥¯¥ê¥×¥È¤Ë½èÍý¤òÄɲä·¡¢
¥×¥ì¥¤¥ä¡¼¤¬°ÜÆ°¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î°ÜÆ°¤·¤Æ¤¤¤ëÊý¸þ¤Ë¹ç¤ï¤»¤Æ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È(¥×¥ì¥¤¥ä¡¼)¤Î¸þ¤­¤òÊѤ¨¤ë¤¿¤á¤Î¥×¥í¥°¥é¥à¤òÄɲä·¤Þ¤¹¡£

¡¡¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°¤Î½èÍý¤Ï¡¢ÆâÉôŪ¤Ë¤ß¤ì¤Ð¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎºÂɸ¤Î°ÌÃ֤ι¹¿·¤Ë¤è¤Ã¤ÆÀ©¸æ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢
¥×¥ì¥¤¥ä¡¼¤Î¸þ¤­¤òÊѤ¨¤ë½èÍý¤Ï¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î³ÑÅ٤ι¹¿·¤Ë¤è¤Ã¤ÆÀ©¸æ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

PlayerMove.cs

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



£²¡¥¡ãRigidbody.velocity.normalized ÊÑ¿ô¡ä


¡¡¤³¤Î¾ðÊó¤Ï¡¢velocity ¤Î¥Ç¡¼¥¿·¿¤Ç¤¢¤ë Vector3 ¤Ë´ð¤Å¤¤¤Æ¤¤¤ë¾ðÊó¤Ç¤¹¡£
velocity ÊÑ¿ô¤Ï Vector3 ·¿¤Ç¤¢¤ë¤¿¤á¡¢Vector3 ·¿¤Ë´ØÏ¢¤¹¤ë¾ðÊó¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡¤½¤Î¤¿¤á¡¢¤³¤Î Rigidbody.velocity.normalized ÊÑ¿ô¤È¤Ï¡¢¿·¤·¤¤·¿¤Î¾ðÊó¤Ê¤Î¤Ç¤Ï¤Ê¤¯¤Æ
Rigidbody Æâ¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë Vector3 ·¿¤Î velocity ÊÑ¿ô¤¬¤¢¤ê¡¢¤½¤Î velocity ÊÑ¿ô¤È¤Ï Vector3 ·¿¤Ç¤¢¤ë¤¿¤á¡¢
Vector3 ·¿¤«¤é¼èÆÀ¤Ç¤­¤ë normalized ÊÑ¿ô¤Î¾ðÊó¤ò¼èÆÀ¤·¤Æ¤¤¤ë(Vector3.normalized ÊÑ¿ô¤Ç¤¢¤ë)¡¢¤È¤¤¤¦½èÍý¤Îή¤ì¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡ÊÑ¿ô̾¤ËÏǤ蘆¤ì¤Ê¤¤¤è¤¦¤Ë¡¢¥Ç¡¼¥¿·¿¤ÎÆâÍƤò¸«¶Ë¤á¤Æ¤¤¤¯¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç½èÍý¤¬Æɤ߲ò¤±¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤Ê¤ª Vector3.normalized ÊÑ¿ô¤Ë¤Ä¤¤¤Æ¤Ï¤¹¤Ç¤Ë³Ø½¬ºÑ(Unity ¤Î¶µ²Ê½ñ¤Ê¤É)¤Ç¤¢¤ë¤¿¤á¡¢¼«Ê¬¤ÇºÆÅÙÄ´¤Ù¤ÆÉü½¬¤·¤Æ¤ª¤¯¤È¤è¤¤¤Ç¤·¤ç¤¦¡£


¡ã»²¹Í¥µ¥¤¥È¡ä
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¡¦¥ê¥Õ¥¡¥ì¥ó¥¹
Vector3.normalized
TechProjinÍÍ
Unity¤ÎVector3¤Ç¤è¤¯»È¤¦¤â¤Î¤Þ¤È¤á


£³¡¥¡ãVector3.zero ÊÑ¿ô¡ä


¡¡normalized ÊÑ¿ô¤ÈƱ¤¸¤è¤¦¤Ë¡¢Vector3 ·¿¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÃͤǤ¹¡£
¤³¤Î zero ÊÑ¿ô¤Ï¿·¤·¤¯ (0, 0, 0) ¤ÎÃͤò¥¤¥ó¥¹¥¿¥ó¥¹¤·¤Þ¤¹¡£

¡¡Vector3 ·¿¤Ë¤Ï¾¤Ë¤âÊØÍø¤ÊÊÑ¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢³Ð¤¨¤Æ¤ª¤¯¤È¸úΨ¤Î¤è¤¤¥×¥í¥°¥é¥à¤òµ­½Ò¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤Þ¤º¤Ï¸ø¼°¥µ¥¤¥È¤Î¥Þ¥Ë¥å¥¢¥ë¤ä¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹¤ËÌܤòÄ̤ëÊʤò¤Ä¤±¤Þ¤·¤ç¤¦¡£


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


£´¡¥¡ãQuaternion.LookRotation ¥á¥½¥Ã¥É¡ä


¡¡Quaternion ¹½Â¤ÂΤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò²óž¤µ¤»¤ë static ¥á¥½¥Ã¥É¤Ç¤¹¡£
LookRotation ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢°ú¿ô¤Ë»ØÄꤷ¤¿ Vector3 ·¿¤Î¾ðÊó¤ò Quaternion ·¿¤ËÊÑ´¹¤·¤Þ¤¹¡£(Ìá¤êÃͤη¿¤¬ Quaternion ·¿¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹)


  transform.rotation = Quaternion.LookRotation(rb.velocity.normalized);

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

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

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


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


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


¡¡Äɲä·¤¿½èÍý¤ÎÆâÍƤò¸«Ä¾¤·¡¢½èÍý¤ÎÆâÍƤòÍý²ò¤·¤¿¾å¤Ç¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¡¢Æ°ºî¤Î³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°¤Ë¹ç¤ï¤»¤Æ¡¢¸þ¤­¤¬ÊѤï¤ê¡¢¾ï¤Ë°ÜÆ°¤¹¤ëÊý¸þ¤ò¸þ¤¯¤è¤¦¤Ë¤Ê¤ì¤ÐÀ©¸æÀ®¸ù¤Ç¤¹¡£
(¥«¥á¥é¤ÎÄɽ¾À©¸æ¤Ï¤Þ¤À¤Ç¤¹)


£·¡¥¡ã³Ø½¬¤Î¤¿¤á¤Î¹©Éסä


¡¡¤Ê¤ª¡¢³ÑÅÙ¤ÎÀ©¸æ¤¹¤ë½èÍý¤Ë¤Ï if ʸ¤Ë¤è¤ëʬ´ô¤¬¤¢¤ê¤Þ¤·¤¿¡£
¤³¤Îʬ´ô¤ÎÍýͳ¤ò³Î¤«¤á¤ë¤¿¤á¤Ë¤â¡¢°ìÅÙ¡¢Ê¬´ô¤ÎÉôʬ¤ò¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
³ÑÅÙ¤ÎÀ©¸æ¤Ë¤Ä¤¤¤Æ¡¢Í½´ü¤·¤Æ¤¤¤Ê¤¤½èÍý¤¬È¯À¸¤¹¤ë¤³¤È¤¬¤ï¤«¤ë¤È»×¤¤¤Þ¤¹¡£


¡ã¥¹¥¯¥ê¥×¥È¤Ë¤è¤ëÀ©¸æ¤Î³Îǧ¡ä
        //if (rb.velocity.normalized != Vector3.zero) {

            // if ʸ¤Ë¤è¤ëʬ´ô¤ò¤Ê¤¯¤·¡¢¤³¤Î½èÍý¤ò¡¢¾ï¤ËÆ°¤¯½èÍý¤ËÊѹ¹¤·¤Æ¤ß¤ë
            transform.rotation = Quaternion.LookRotation(rb.velocity.normalized);
        //}

¡¡µ¤¤Ë¤Ê¤Ã¤¿Éôʬ¤Ï¤³¤Î¤è¤¦¤Ë¤·¤Æ¡¢½èÍý¤Î¥³¥á¥ó¥È¥¢¥¦¥È¤Ê¤É¤ò¤¹¤ë¤³¤È¤Ç¡¢¤É¤¦¤¤¤Ã¤¿½èÍý¤¬Æ°¤¤¤Æ¤¤¤ë¤Î¤«¤òÍý²ò¤¹¤ë¾å¤ÇÌòΩ¤Á¤Þ¤¹¡£
³Ø½¬¤Ë¤Ï¹©Éפ¬É¬ÍפǤ¹¡£¥×¥í¥°¥é¥à¤Ø¤ÎÍý²ò¤ò¿¼¤á¤Æ¤¤¤¯¤¿¤á¤Ë¤Ï¤É¤¦¤¤¤Ã¤¿¤³¤È¤ò¹Í¤¨¤ì¤Ð¤¤¤¤¤Î¤«¡¢¼«Ê¬¤Ê¤ê¤Ë¹Í¤¨¤Æ¤¤¤¯¤³¤È¤¬½ÅÍפǤ¹¡£


¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£

¡¡=>¡¡¼¡¤Ï¡¡¼ê½ç£¶¡¡¡¼¥«¥á¥é¤ÎÄɽ¾µ¡Ç½¤Î¼ÂÁõ¡¼¡¡¤Ç¤¹¡£