Nanashi-softプログラマ専用PSSuite開発


◇PS Suite開発 -タッチ取得-

Updateに以下を追加します
		public static void Update ()
		{
			GamePadData gamePadData = GamePad.GetData(0);
			List<TouchData> touchData = Touch.GetData(0);	//追加
		}
この List<>というのは,Listジェネリッククラスと言い,連想配列のようなものと思えば大体合っています
TouchDataと言う Listジェネリッククラスが存在していて,それを生成したと言うことです(たぶん)

○タッチ本数

touchData.Countで,今現在,何本の指でタッチしているのかがわかります
こればっかりは実機が無いと確認できないと思うのですが,
最大認識は,PS Vitaで 6本指,Xperia PLAYで 4本指まででした
それ以上の本数でタッチすると,ちょっと具合の悪い結果になるようです(要研究)

○各指の状態

最初にタッチした指から順番に,touchData[0]~touchData[3]のように割り振られます
途中で他の指を離しても,既に認識された指番号(?)は変わりません

.Statusで各指の状態を取得できます
TouchStatus列挙型に定義されています
・TouchStatus.Down
タッチされた
・TouchStatus.Move
タッチしたまま,または,指を動かした
・TouchStatus.Up
指を離した
・TouchStatus.Canceled
キャンセルされた(普通は発生しません)
・TouchStatus.None
タッチしていない(普通は発生しません)

if(touchData[0].Status == TouchStatus.Down){
    //タッチされた
という感じで使用します

状態はどれか1つにしかなりませんので,switch文を使用しても良いです
switch(touchData[0].Status){
	case TouchStatus.Down:
		//タッチされた
		break;

○タッチした座標

横位置は .X,縦位置は .Yで取得できます
返ってくる値がリファレンスに書いてありませんので,調べたところ
中心を (0.0f, 0.0f)
左上を (-0.5f, -0.5f)
右下を (0.5f, 0.5f)

そのままだとさすがに使い辛いらしく,サンプルでもピクセルに直して使用していました
float x = ((touchData[0].X + 0.5f) * SampleDraw.Width);
float y = ((touchData[0].Y + 0.5f) * SampleDraw.Height);
これで画面のどの位置をタッチされたのかが,ドットでわかります

○全部のタッチ処理

			for(int v=0; v < touchData.Count; v++){
				if(touchData[v].Status == TouchStatus.Move){
					//タッチしたまま,または,指を動かした
				}else if(touchData[v].Status == TouchStatus.Down){
					//タッチされた
				}else if(touchData[v].Status == TouchStatus.Up){
					//指を離した
				}else if(touchData[v].Status == TouchStatus.Canceled){
					//キャンセルされた(普通は発生しません)
				}else if(touchData[v].Status == TouchStatus.None){
					//タッチしていない(普通は発生しません)
				}else{
					//状態がおかしい
				}

				//タッチ・タップ座標取得
				float x = ((touchData[v].X + 0.5f) * SampleDraw.Width);
				float y = ((touchData[v].Y + 0.5f) * SampleDraw.Height);
			}

○Error CS0246: 型または名前空間名 'List' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 (CS0246)


↓コレを追加すれば解決します
using System.Collections.Generic;	//Listに必要



TOPプログラマ専用PSSuite開発