unityタッチ移動について

どうもききです。
今回はunityでモバイルアプリを作るのに必要なタッチ操作について解説したいと思います。
例えばシューティングゲームで自機キャラをタッチで移動させたいとき次のような
スクリプトになります。
if (Input.touchCount > 0)
{
touch = Input.GetTouch(0);
Vector2 newVec = new Vector2(touch.position.x,              Screen.height – touch.position.y);
if (newVec.x >= _rect.xMin &&
newVec.x < _rect.xMax && newVec.y >= _rect.yMin &&
newVec.y < _rect.yMax) { x = touch.deltaPosition.x * 0.04f; y = touch.deltaPosition.y * 0.04f; } else { x = 0; y = 0; }

それでは解説していきます。 まず最初に
touch = Input.GetTouch(0);を書かないといけません。 Vector2 newVec = new Vector2(touch.position.x,              Screen.height – touch.position.y); タッチした時の座標を取得します。 指一本しか使わないならこれでオッケーです。 fpsだと攻撃とカメラ操作を同時に行えないのでマルチタッチやフィンガーIDなどが必要になりますがそれ以外ならややこしいスクリプトを書かないほうが安全です。
次にタッチ範囲指定をします。
先にRect型を最初に宣言し
start()で_rect = new Rect(600, 0, 1200, 800);
を書いておきます。
if (newVec.x >= _rect.xMin &&
newVec.x < _rect.xMax && newVec.y >= _rect.yMin &&
newVec.y < _rect.yMax)
タッチした座標xとyがRectの最小値以上か最大値以下であるかを判定します。
以上がタッチ移動の方法になります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)