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

¡ß

¤Ï¤¸¤á¤Ë


¡¡Unity ¤Î¿· Input System ¤Ï¹âµ¡Ç½¤Ç¤¹¤¬¡¢¡Ú»ÅÁȤߤ¬Æñ¤·¤¤¡Û¡Ú¾ðÊó¤¬ÃÇÊÒŪ¡Û¡Ú¸ø¼°¥µ¥ó¥×¥ë¤¬Â絬ÌϤ¹¤®¤ë¡Û¤È¤¤¤Ã¤¿Íýͳ¤Ç¡¢½é¿´¼Ô¤¬ºÃÀÞ¤·¤ä¤¹¤¤ÆâÍÆ¤Ç¤¹¡£
ÆÃ¤Ë½¾Íè¤Î InputManager ¤ËÈæ¤Ù¤ë¤ÈÆñ¤·¤¤ÆâÍÆ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡¤³¤Îµ­»ö¤Ç¤Ï¡¢½é¿´¼Ô¤¬ºÇû¤Ç¡Ö¼ÂÍÑŪ¤ÊÁàºîÆþÎϡפò¼ÂÁõ¤Ç¤­¤ë¹½À®¤ò¥Ù¡¼¥¹¤Ë¡¢¸åȾ¤Ç Generate C# ¤ò»È¤Ã¤¿³ÈÄ¥Àß·× ¤Þ¤ÇÃʳ¬Åª¤Ë²òÀ⤷¤Þ¤¹¡£

¡¡¤Ê¤ª¡¢¤³¤Á¤é¤Î¥µ¥¤¥È¤¬Èó¾ï¤ËÃúÇ«¤«¤Ä¡¢¤ï¤«¤ê¤ä¤¹¤¤¤Î¤Ç¤ª¤¹¤¹¤á¤Ç¤¹¡£

¡¡¡¡=>¡¡¤Í¤³¤¸¤ã¤é¥·¥Æ¥£ ÍÍ ¡ÚUnity¡ÛInput System¤Î»È¤¤ÊýÆþÌç


½é¿´¼Ô¤Ë¤ª¤¹¤¹¤á¤ÎÆþÎÏÀß·×Êý¿Ë


¡¡·ëÏÀ¤«¤é¤¤¤¦¤È¡¢¸ø¼°¤Ç²òÀ⤷¤Æ¤¤¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤òÍøÍѤ¹¤ë¤è¤ê¤â¡¢
InputActionReference ¥¢¥»¥Ã¥È¤ò¥¢¥µ¥¤¥ó¤·¤Æ¡¢Ä¾ÀÜÆþÎϤòÆÉ¤àÊý¼°¤¬½é¿´¼Ô¤ÎÊý¤Ë¤Ï¤ï¤«¤ê¤ä¤¹¤¤¤Ç¤¹¡£

¡¡Íýͳ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£

¡¦Update ¤ÇÆþÎÏ ¢ª ½èÍý¤È¤¤¤¦Ä¾´¶Åª¹½Â¤
¡¦¥Ç¥Ð¥Ã¥°¤¬Íư×
¡¦¥­¡¼¥«¥¹¥¿¥Þ¥¤¥º¤¬Èó¾ï¤Ë´Êñ
¡¦µì InputManager ¤ÈȯÁÛ¤¬¶á¤¤


´ðËܹ½À®¡ÊInputActionReferenceÊý¼°¡Ë

­¡Input Actions ¥¢¥»¥Ã¥ÈºîÀ®


¡¡¤³¤Á¤é¤Ï InputSystem ¤Î¥Ç¥Õ¥©¥ë¥ÈÀßÄê¤Î¤â¤Î¤òÍøÍѤ·¤Æ¤âÌäÂꤢ¤ê¤Þ¤»¤ó¡£

¡¡¼«ºî¤·¤Æ¤¤¤¯¾ì¹ç¤Ë¤Ï¡¢Assets ¢ª Create ¢ª Input Actions ¤ÇÀ©ºî¤·¤Æ¤¯¤À¤µ¤¤¡£








¡¡ActionMap ¹½À®Îã¤Ç¤¹¡£

Player
¡¡¨§ Move (Value / Vector2)
¡¡¨§ Jump (Button)
¡¡¨§ Dash (Button)


­¢InputActionReference ºîÀ®


¡¡¤³¤Á¤é¤â InputSystem ¤Î½é´üÀßÄê¤ò¤½¤Î¤Þ¤ÞÍøÍѤ·¤ÆÌäÂꤢ¤ê¤Þ¤»¤ó¡£





­£ÆþÎÏ´¶ÃΥǥХå°ÍÑ¥¹¥¯¥ê¥×¥ÈºîÀ®


¡¡ÆþÎÏ´¶ÃΤò¹Ô¤¦¤¿¤á¤Î¡¢¥Ç¥Ð¥Ã¥°ÍÑ¥¹¥¯¥ê¥×¥È¤È¤·¤Æ PlayerInputHandler ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Þ¤¹¡£

¡¡¤³¤Á¤é¤Ç¤Ï InputActionReference ·¿¤ò¥¢¥µ¥¤¥ó¤·¡¢³Æ Action ¤«¤éÆþÎϤò¼õ¤±ÉÕ¤±¤é¤ì¤ë¾õÂÖ¤òºî¤Ã¤Æ¤¤¤Þ¤¹¡£

PlayerInputHandler.cs

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




¡¡¤³¤Á¤é¤òǤ°Õ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¡¢³Æ InputActionReference ¤ò¥¢¥µ¥¤¥ó¤·¤¿¾å¤Ç¥²¡¼¥à¤ò¼Â¹Ô¤·¤Þ¤¹¡£
¤½¤·¤Æ¥­¡¼ÆþÎϤò¹Ô¤¤¡¢Console ¥Ó¥å¡¼¤Ë¥Ç¥Ð¥Ã¥°¥í¥°¤¬É½¼¨¤µ¤ì¤ë¤«¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£





¤³¤ÎÊý¼°¤Î¥á¥ê¥Ã¥È


¡¡InputSystem ¤òÍøÍѤ¹¤ë¤Ë¤¢¤¿¤ê¡¢InputActionReference ¤ò³èÍѤ¹¤ë¥á¥ê¥Ã¥È¤Ç¤¹¡£
¹àÌÜÆâÍÆ
³Ø½¬¥³¥¹¥ÈÈó¾ï¤ËÄ㤤
¥Ç¥Ð¥Ã¥°Update Æâ¤ÇÄɤ¨¤ë
¥­¡¼Êѹ¹¥¢¥»¥Ã¥ÈÊѹ¹¤À¤±(¥×¥í¥°¥é¥à¤ÎÊѹ¹ÉÔÍ×)
ºÆÍøÍÑPrefab²½²Äǽ
²ÄÆÉÀ­Èó¾ï¤Ë¹â¤¤



¡¡InputSystem ºÇÂç¤ÎÍøÅÀ¤Ï¡Ú¥­¡¼ÀßÄê¤ò¥Ç¡¼¥¿(¥¢¥»¥Ã¥È)¦¤Ç´°·ë¤Ç¤­¤ë = ¥×¥í¥°¥é¥à¤ÎÊѹ¹¤¬ÉÔÍסۤȤ¤¤¦ÅÀ¤Ç¤¹¡£

¡¡WASD ¢ª Ìð°õ¥­¡¼ ¢ª ¥²¡¼¥à¥Ñ¥Ã¥É

¡¡¤¹¤Ù¤Æ InputAction ¦¤Î Binding ¤òÊѹ¹¤¹¤ë¤À¤±¤Ç¤¹¡£


¤Ê¤¼ Generate C# ¤¬¤¢¤ë¤Î¤«¡©


¡¡InputAction ¥¢¥»¥Ã¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ë¤Ï Generate C# Class ¤È¤¤¤¦¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤¬¤¢¤ê¤Þ¤¹¡£



¡¡¤³¤Á¤é¤Ï¥¤¥Ù¥ó¥È¶îư·¿¤Î»ÅÁȤߤò¼ÂÁõ¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£
¥³¡¼¥ë¥Ð¥Ã¥¯Êý¼°¤Ë¤è¤ê¡¢»ØÄê¤Î¥á¥½¥Ã¥É¤¬¥¤¥Ù¥ó¥È¤È¤·¤Æ¼Â¹Ô¤µ¤ì¡¢°ú¿ô¤È¤·¤ÆÆþÎÏÃͤò¼õ¤±¼è¤ëÊý¼°¤Ç¤¹¡£

¡¡¤Ç¤¹¤¬¡¢½é¿´¼Ô¸þ¤±¤Ë¤ÏÆñ¤·¤¤ÆâÍÆ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤Þ¤º¤Ï InputActionReference ·¿¤ò¥¢¥µ¥¤¥ó¤¹¤ëÊý¼°¤Ë´·¤ì¤Æ¤ª¤­¡¢
InputSystem ¤Î»ÅÁȤߤò¤¢¤ëÄøÅÙÍý²ò¤Ç¤­¤Æ¤«¤é¼ÂÁõ¤ò¹Ô¤Ã¤¿Êý¤¬¤ï¤«¤ê¤ä¤¹¤¤¤È»×¤¤¤Þ¤¹¡£


­¡À¸À®¤µ¤ì¤ë¹½Â¤¥¤¥á¡¼¥¸


¡¡Input Actions ¥¢¥»¥Ã¥È ¢ª Inspector Æâ¤Î Generate C# Class ¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Þ¤¹¡£

¡¡³Æ¹àÌܤòÆþÎϤ¹¤ë¾ì½ê¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£






¡¡C# Class File ¤Î±¦Ã¼¤Î ¡Ä ¤ò²¡¤¹¤È¡¢¿·¤·¤¯ InputAciton ÍѤΥ¹¥¯¥ê¥×¥È¤¬¼«Æ°À¸À®¤µ¤ì¤Þ¤¹¡£
¥¯¥é¥¹Ì¾¤ÏǤ°Õ¤Ç¤¹¡£





­¢¥µ¥ó¥×¥ë¥¹¥¯¥ê¥×¥È


¡¡²¼µ­¤Ï C# Class File ¤Ç¼«Æ°À¸À®¤µ¤ì¤¿ PlayerControls ¥¹¥¯¥ê¥×¥È¤òÍøÍѤ·¡¢
¥­¡¼ÆþÎϤò¥³¡¼¥ë¥Ð¥Ã¥¯(¥¤¥Ù¥ó¥È)Êý¼°¤Ç¼õ¤±¼è¤Ã¤ÆÆ°¤«¤¹¥¿¥¤¥×¤Î¥µ¥ó¥×¥ë¥³¡¼¥É¤Ç¤¹¡£


public class PlayerInputHandler : MonoBehaviour
{
    private PlayerControls controls;

    void Awake()
    {
        controls = new PlayerControls();

        controls.Player.Move.performed += ctx => OnMove(ctx);
        controls.Player.Jump.performed += ctx => OnJump();
    }

    void OnEnable() => controls.Enable();
    void OnDisable() => controls.Disable();

    void OnMove(InputAction.CallbackContext ctx)
    {
        Vector2 input = ctx.ReadValue<Vector2>();
        Debug.Log($"Move: {input}");
    }

    void OnJump()
    {
        Debug.Log("Jump!");
    }
}


­£InputActionReferenceÊý¼°¤È¤ÎÀß·×Ū°ã¤¤


ReferenceÊý¼°
MonoBehaviour
  ¨¦ InputActionReference ¢ª action.ReadValue()


Generate C#Êý¼°
Input´ÉÍý¥¯¥é¥¹
  ¨¦ PlayerControls ¢ª ActionMap ¢ª ¥¤¥Ù¥ó¥È

¡¡¤³¤Î¤è¤¦¤Ë¡¢´°Á´¤Ë¡ÖÆþÎÏ´ÉÍý¥·¥¹¥Æ¥à¡×¤È¤·¤ÆÊ¬Î¥¤Ç¤­¤ë¤Î¤¬ Generate C# ¤ò»È¤¦¥á¥ê¥Ã¥È¤È¥Ý¥¤¥ó¥È¤Ë¤Ê¤ê¤Þ¤¹¡£


­¤Ãí°ÕÅÀ


¡¡InputSystem ¤Ï OnEnable ¥á¥½¥Ã¥É¤Ê¤É¤òÍøÍѤ·¤Æ¡¢controls.Enable(); ¤Î¤è¤¦¤ËÌÀ¼¨Åª¤Ë InputAction ¤Îµ¯Æ°¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤Ï InputActionReference ¤òÍøÍѤ¹¤ë¾ì¹ç¤âƱ¤¸¤Ç¤¹¡£

¡¡¥¢¥µ¥¤¥ó¤·¤Æ¡¢¥³¡¼¥ë¥Ð¥Ã¥¯¥á¥½¥Ã¥É¤òºîÀ®¤·¤¿¤À¤±¤Ç¤Ïư¤­¤Þ¤»¤ó¤Î¤ÇÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

void Awake()
{
    controls = new PlayerControls();
    controls.Newactionmap.AddCallbacks(this);
}

void OnEnable()
{
    controls.Enable();
}

void OnDisable()
{
    controls.Disable();
}

¡¡¤³¤Î¤è¤¦¤Ë¥é¥¤¥Õ¥µ¥¤¥¯¥ë¤òºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£


£²£Ä²£¥¹¥¯¥í¡¼¥ëÍÑ¡¡¥×¥ì¥¤¥ä¡¼°Üư½èÍý¤Î¥µ¥ó¥×¥ë¥³¡¼¥É


¡¡InputSystem + Rigidbody2D ¤òÍøÍѤ·¤¿¡¢¥¹¡¼¥Ñ¡¼¥Þ¥ê¥ª¤Î¤è¤¦¤Ê£²£Ä²£¥¹¥¯¥í¡¼¥ë(¥×¥é¥Ã¥È¥Õ¥©¡¼¥Þ¡¼)ÍѤΥץ쥤¥ä¡¼¤Î°Üư½èÍý¤Î¥µ¥ó¥×¥ë¥³¡¼¥É¤Ç¤¹¡£
£³£Ä¤Ë¤Ä¤¤¤Æ¤Ï¥«¥á¥é¤Î²óž¤ò¥×¥ì¥¤¥ä¡¼¤ÎÊý¸þ¤ËÈ¿±Ç¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢Ê̵­»ö¤Ë¤Æ¾Ò²ð¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¡¡¢ª¡¡¡ÚUnity 6000 Èǡۥ­¥ã¥é¥¯¥¿¡¼¤Î°Üư¤È¥«¥á¥é¤Î²óžµ¡Ç½
¡¡



PlayerPlatformerController.cs

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



£²£Ä¥È¥Ã¥×¥À¥¦¥óÍÑ¡¡¥×¥ì¥¤¥ä¡¼°Üư½èÍý¤Î¥µ¥ó¥×¥ë¥³¡¼¥É


¡¡¡¡InputSystem + Rigidbody2D ¤òÍøÍѤ·¤¿¡¢½éÂ奼¥ë¥À¤ÎÅÁÀâ¤Î¤è¤¦¤Ê¾å¤«¤é¸«²¼¤í¤·¤¿»ëÅÀ(¥È¥Ã¥×¥À¥¦¥ó)¤Î¥×¥ì¥¤¥ä¡¼¤Î°Üư½èÍý¤Î¥µ¥ó¥×¥ë¥³¡¼¥É¤Ç¤¹¡£


PlayerTopDown2DController.cs

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




¡¡°Ê¾å¤Ë¤Ê¤ê¤Þ¤¹¡£

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


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

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

Menu



´ðÁÃ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

private



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

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

¹­¹ðÊç½¸Ãæ