Unityã®æ°ããInputSystemã®æ©è½ã§ããEnhancedTouchã¨ããæ©è½ã使ã£ã¦æ軽ã«ç«¯æ«ã®ã¿ããå ¥åãå¦çã§ããã®ã§ã¡ã¢ã§ãã
ã¯ããã«
æ¬è¨äºã§ã¯æ°ããInputSystemã®æ©è½ã®èª¬æããå°å
¥æé ãªã©ã¯çç¥ãã¾ãã
以ä¸ã®ãªã³ã¯å
ã大å¤åèã«ãªãã¾ããã®ã§ã確èªãã¦ããã ããã¨å¹¸ãã§ããï¼ä¸çªä¸ã®ãªã³ã¯å
ãå
¬å¼ããã¥ã¡ã³ãã«ãªãã¾ãã®ã§ãæ
å ±ãå¤ãã§ããï¼
【Unity】新しいInput System入門 - 従来のUnityEngine.Inputに代わる高機能な入力管理システム - LIGHT11
Unityの新しい入力システムInputSystemを使ってみる | Unityを使った3Dゲームの作り方(かめくめ)
Namespace UnityEngine.InputSystem | Input System | 1.0.2
æ¤è¨¼ãã¦ãããã¼ã«ã¨ããã±ã¼ã¸ã®ãã¼ã¸ã§ã³ã¯ä»¥ä¸ã®éãã§ãã
- Unity 2021.1.0b1
- Input System 1.0.2
ãã¼ã¸ã§ã³ã«ãã£ã¦ã¯æåãéããã¨ãããã¾ãã®ã§ãã注æãã ããã
EnhancedTouch
EnhancedTouchã¯æ°ããInputSystemã§ç«¯æ«ã®ã¿ããå
¥åå¨ãã®æ
å ±ã®åç
§ãã¤ãã³ãå¦çãè¡ãããã®æ©è½ã§ãã
EnhancedTouch.Touchã使ãã«ã¯EnhancedTouchSupportãæå¹ã«ããå¿
è¦ãããã¾ãã
// UnityEngine.Touchã§ã¯ãªãã®ã§æ³¨æ using UnityEngine.InputSystem.EnhancedTouch; // EnhancedTouchã®æå¹å EnhancedTouchSupport.Enable(); // ãããããªæ©è½ãæã¤EnhancedTouch.Touch var touch = Touch;
ä¸ç¹æ³¨æãªã®ã§ãããEnhancedTouchã¯InputSystemã§å
¥åã®ã¤ãã³ãå¦çãå®è£
ããããã®æ©è½ã§ããInputActionã¨ä½µç¨ãã§ããªãããã§ãã
æ¬è¨äºã§ã¯ç´¹ä»ãã¦ããªãæ©è½ã§ããããã¡ãã使ãå ´åãå¤ãã¨æãã¾ãã®ã§ãæ°ãã¤ããã ããã
ãã¦ãTouchã¯ã¿ããæ å ±ãæ ¼ç´ãã¦ããstructã§ãã¿ããå ¥åã«ã¤ãã¦ç®¡çããã¦ããæ å ±ãåç §ã§ãã¾ãã
void DebugTouch(Touch touch) { // ã¿ããã®ç¶æ³ï¼Beganã¨ãMoveã¨ãï¼ TouchPhase phase = touch.phase; // ã¿ããã®åº§æ¨ Vector2 screenPosition = touch.screenPosition; // ã¿ãããå§ããåº§æ¨ Vector2 startScreenPosition = touch.startScreenPosition; }
ã²ã¼ã å ã®ã¿ããå ¥åã¯Touchã®staticãªã¡ã³ãã¨ãã¦ç®¡çããã¦ãã¾ãããã¡ãã¯èªã¿åãç¨ã®publicãªããããã£ãç¨æããã¦ãã¾ãã
// 端æ«ã®å¦çã§ããé·ãã®ã¿ããå ¥åæ å ±ã®é å // éå»ã®ã¿ããå ¥åã®åº§æ¨ãªã©ããã£ãã·ã¥ããã¦ãã ReadOnlyArray<Finger> fingerList = Touch.fingers; // ç¾å¨ã®ã¿ããå ¥åæ å ± ReadOnlyArray<Finger> activeFingerList = Touch.activeFingers; // ã¤ãã³ãå¦ç // æãé¢ããæ Touch.onFingerUp += OnFingerUp; // æã触ããæ Touch.onFingerDown += OnFingerDown; // æãåãããï¼ãã©ãã°ï¼æ Touch.onFingerMove += OnFingerMove; void OnFingerUp(Finger finger) { Debug.Log(finger.screenPosition); } void OnFingerDown(Finger finger) { Debug.Log(finger.screenPosition); } void OnFingerMove(Finger finger) { Debug.Log(finger.screenPosition); }
ããã§åºã¦ããFingerã¯Touchã®æ å ±ãã¾ã¨ãã¦ããclassã§ãã座æ¨ãç¶æ ãªã©ã®æ å ±ãä¿æãã¦ãããæ´æ°å¦çããããªã«ãã£ã¦ããã¾ãã
// ä¸çªæå¾ã«è§¦ããã¿ããå ¥åã®æ å ±ãä¿æããFingerã¤ã³ã¹ã¿ã³ã¹ Finger finger = Touch.activeFingers.Last(); // ç¾å¨ã®ã¿ããå ¥åã®ä¸ã§ã®é çª int index = finger.index; // ã¿ããå ¥åã®åº§æ¨ Vector2 screenPosition = finger.screenPosition; // ç¾å¨ã¿ããããã¦ãããã©ãã bool isActive = finger.isActive; // ç¾å¨ã®ã¿ããå ¥åæ å ±ï¼åº§æ¨ãç¶æ ã¯æ´æ°ãããï¼ Touch currentTouch = finger.currentTouch; // ã¿ããå ¥åã®å±¥æ´(IReadOnlyList<Touch>) TouchHistory touchHistory = finger.touchHistory;
ã¿ãããã座æ¨ãå
¥åã®æ°ãªã©ã«åºã¥ãã¦å¦çãè¡ãããæã«Fingerãéãã¦æ
å ±ãåç
§ãã¾ããEnhancedTouchã ã¨ãããã£ãæ
å ±ãã¾ã¨ãã¦ç®¡çãã¦ãããã®ã§ãæ軽ã§ãã
å
¥åæ
å ±ã®å±¥æ´ã®åç
§ãªã©ãä»ã«ãããã¤ãæ©è½ãããã®ã§ä½¿ãæ¹ã¯æåã«ç´¹ä»ããå
¬å¼ã®ããã¥ã¡ã³ããåèã«ãã¦ã¿ã¦ãã ããã
çµããã«
ã¨ããããã·ã³ãã«ã«ç»é¢ãã¿ããããã¨ãã®æåãå®ç¾©ãããæã«EnhancedTouchã使ãã¨ããã£ã¨å®è£
ãã§ãããã§ãã
ã¾ã ã¾ã æ
å ±ã®æµ
ãæ°ããInputSystemã§ããããããããªæ©è½ãæ¢ã£ã¦ããããã§ãã