7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Unity】指の動き(ドラッグ)に応じて動くオブジェクト

Last updated at Posted at 2019-09-30

今回はUnityで指の動き(ドラッグ)に応じて動くオブジェクトについてです。
需要高そうですが、あまり記事が無いため記述します。

今回は、横のみの移動の実装方法を記述するので、縦もやりたい方は自由に応用してください。

色々方法あると思いますが、自分は以下の方法で実装しました。

#実装方法

以下のスクリプト(DragMove.cs)を作成して、動かしたいオブジェクトにアタッチしてください。

using UnityEngine;

public class DragMove : MonoBehaviour {

	[SerializeField] private float slideSpeed = 2f; //横移動のスピード。Inspector等で設定

	private void Update () {
		PlayerInput ();
	}

	private void PlayerInput () {
		//もし入力がなかったらreturnする
		if (Input.touchCount <= 0) return;

		if (Input.GetTouch (0).phase == TouchPhase.Moved) {
			Vector2 touchPosition = Input.GetTouch (0).deltaPosition;
			transform.Translate (touchPosition.x * slideSpeed * Time.deltaTime, 0, 0);
		}
	}
}

これで実装できます。

##移動範囲に制限を設けたい場合

移動範囲に制限を設けたい場合は

using UnityEngine;

public class DragMove : MonoBehaviour {

	[SerializeField] private float slideSpeed = 2f; //横移動のスピード
	private const float limitPos = 5f; //横幅の制限

	private void Update () {
		PlayerInput ();
	}

	private void PlayerInput () {
		//もし入力がなかったらreturnする
		if (Input.touchCount <= 0) return;

		if (Input.GetTouch (0).phase == TouchPhase.Moved) {
			Vector2 touchPosition = Input.GetTouch (0).deltaPosition;
			transform.Translate (touchPosition.x * slideSpeed * Time.deltaTime, 0, 0);
		}
		
		//Clamp関数で制限する
		transform.position = new Vector3 (Mathf.Clamp (transform.position.x, -limitPos, limitPos), transform.position.y, transform.position.z);
	}
}

Mathf.Clamp関数が便利です。
こんな感じで制限できます。

#実際に確認

このコードはPC上では確認できないと思うので、
ビルドして確認するか、お手軽UnityRemoteで動作確認してください。

PCでも動くようにするには、
touchPositionの部分をInput.mousePositionにすれば動作すると思います。

move.gif

こんな感じになればOKです!!

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?