第11回目はUnity内でのタッチ処理についてです。
スマートフォン用ゲームの特徴は、画面を触って遊べることです。Unityですと、このタッチ処理が簡単に実装できます。
前回:【Unity】タグとレイアー(tag and Layer) | albatrus.com
画面全体を利用
まずは、画面のどの部分を触ってもタッチへの反応がある処理です。コードは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void Update(){ //タッチがあるかどうか? if (Input.touchCount > 0){ //タッチ直後 if(touch.phase == TouchPhase.Began){ //タッチの処理 } } } |
非常に簡単です。
[TouchPhase]は、[Began]以外にも[Moved]、[Ended]、[Canceled]などがあるので、それぞれの反応で処理を分けることができます。
有効範囲を設定する
画面内でも、ある一定の場所ごとに処理を分けるにはどうすればいいでしょうか?その場合は以下のようなコードを書けば上手くいきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Rect _rect = new Rect(100,100,300,300); void Update(){ if (Input.touchCount > 0) { Touch _touch = Input.GetTouch(0); Vector2 newVec = new Vector2(_touch.position.x,Screen.height - _touch.position.y); //Rectとタッチの位置を判定 if(newVec.x >= _rect.xMin && newVec.x < _rect.xMax && newVec.y >= _rect.yMin && newVec.y <_rect.yMax){ //タッチ処理 } } } |
タッチ処理の位置と指定されたRectを判定して、Rect内でタッチされていれば特定の処理を行います。
![]() | ゲーム作りのはじめかた Unityで覚える企画からレベルデザインまで あすな こうじ SBクリエイティブ 売り上げランキング : 8959 Amazonで詳しく見る |
