質問: 1; } // 回転 transform.Rotate(0, spHorizontalVal * rotateSpeed, 0); // 移動 transform.position += transform.forward * spVerticalVal * speed; } // UnityEditor(PC) else if (Mathf.Abs(Input.GetAxisRaw("Vertical")) > 0f || Mathf.Abs(Input.GetAxisRaw("Horizontal")) > 0f) { // 回転 transform.Rotate(0, Input.GetAxisRaw("Horizontal") * rotateSpeed, 0); // 移動(Input.GetAxisRawは↑ or →なら+で↓ or ←なら-) transform.position += transform.forward * Input.GetAxisRaw("Vertical") * speed; } } ```
回答: 公式のリファレンスを見る限り、deltaPositionは「タッチを開始した位置からの差分」ではないと思われます。 意図した動作にするためには、以下のようにすればよいです。 (こちらのサンプルスクリプトを参考にしました) 1. タッチ開始時(touch.phase == TouchPhase.Began)に、その位置(touch.position)を変数に格納 2. タッチ移動時(touch.phase == TouchPhase.Moved)に、その時の現在位置(touch.position)と1.の変数との差分を計算し、その結果を使って移動する 3. タッチ終了(touch.phase == TouchPhase.Ended)を検知するまで、2.を繰り返す 4. タッチ終了時に、移動をやめるようにする