【Unity】フリック入力を実装してみた
Unity使用者のみなさんこんにちは!Unityを使ってスマホ・タブレットゲームを作る研究をするスマホ・タブレット研究室の編集者です!
今回はUnityでスマホやタブレットなどを作る際に使用できる
フリック入力のテストを実装してみたので
本記事では、そのフリック入力の実装手順を紹介していきたいと思います。
と言っても、とても簡単で汎用性も高いので是非この記事を見て、
自由度の高いゲームにチャレンジしてみてください。
フリック操作の仕組みを解説
フリック操作では指やマウスから入力を取るので、2つの座標が
必要になります。
一つは開始地点、スマホであれば指が触れた位置、PCであれば
クリックした位置になります
二つ目は終了地点、スマホであれば指が離れた地点、PCであれば
クリックを終えた地点です
この二つの座標の差分を計算して実装する流れになります
フリックの実装
実際にフリック入力を作っていきます。
下準備
まず初めに適当なcubeとplaneを配置して、cubeをplaneの上に置きます。
cubeには物理演算に使用する「BoxCollider」と「Rigdbody」を
付けておきます。
スクリプトの作成
今回はcubeにアタッチするFlickScriptのみを使用します。
以下を作成してcubeに貼り付けましょう。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FlickScript : MonoBehaviour
{
Vector3 startTouchPos;
Vector3 endTouchPos;
float flickValue_x;
float flickValue_y;
Rigidbody player_rb;
[SerializeField] float jumpPower = 10.0f;
void Start()
{
player_rb = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetMouseButtonDown(0) == true)
{
startTouchPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z);
}
if (Input.GetMouseButtonUp(0) == true)
{
endTouchPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z);
FlickDirection();
GetDirection();
}
}
void FlickDirection()
{
flickValue_x = endTouchPos.x - startTouchPos.x;
flickValue_y = endTouchPos.y - startTouchPos.y;
}
void GetDirection()
{
if (flickValue_x > 500.0f)
{
transform.position -= new Vector3(0, 0, 3);
}
if (flickValue_x < -500.0f)
{
transform.position += new Vector3(0, 0, 3);
}
if (flickValue_y > 500.0f)
{
player_rb.velocity += new Vector3(0, jumpPower, 0);
}
}
}
スクリプト解説
〇関数の解説:FlickDirection()
![](https://assets.st-note.com/img/1690165884992-tGB7EWyT41.png)
この関数ではflickValueの値をendTouchPosからstartTouchPosを引いて
計算します、つまり、どのくらいの量フリックしたかを計算してます。
〇関数の解説:GetDirection()
![](https://assets.st-note.com/img/1690165965768-akXGeUEHul.png?width=800)
この関数では先ほどのFlickDirection関数で計算してたflickValueの値が、一定
以上の大きさだったらpositionが変化するといった処理を行っています
この処理がない場合、ただ画面に触れただけでflickValueが計算されてしまい
移動してしまうからです、それを防ぐために
「ある一定以上のフリックが発生した時」という条件が必要になります。
完成!
これでフリック操作での移動の実装は終了です。
フリック入力は様々なゲームの操作の幅が広がると思うので
積極的に使っていきたいです。
この記事が気に入ったらサポートをしてみませんか?