タッチ入力の処理

タッチ入力の処理

SceneクラスにonSceneTouchEventを実装すれば良い。

タッチのアクションには種類がある。タッチした瞬間やスクロール、タッチを離した瞬間など。
onSeneTouchEventは全部認識するので、タッチ時だけ処理したい処理を書くなら、そのように指定する必要がある。

ソース

GameScene.javaの追加部分

@Override
	public boolean onSceneTouchEvent(TouchEvent pSceneTouchEvent) {
 
		switch (pSceneTouchEvent.getAction()) {
		//タッチしたときの動作
		case TouchEvent.ACTION_DOWN:
			//顔の位置を2次元で取得
			Vector2 faceVector = faceBody.getPosition();
			//タッチ位置を2次元で取得
			//物理はピクセル単位でなくメートル単位なので、変換する。
			Vector2 touchVector = new Vector2(pSceneTouchEvent.getX()
					/ PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT,
					pSceneTouchEvent.getY()
							/ PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT);
			//タッチ位置と顔の位置距離を見る
			float len = faceVector.dst(touchVector);
			//距離が小さいほど影響が大きくなるように調整
			len =  (len > 10) ? 0 : 3*(10-len);
			//タッチ位置から顔の方向に、距離に応じた速度を足す
			faceBody.setLinearVelocity(faceBody.getLinearVelocity().add(faceVector.sub(touchVector).nor().mul(len)));
		default:
			break;
 
		}
		return super.onSceneTouchEvent(pSceneTouchEvent);
	}
 

実行結果

タッチすると、タッチ位置から離れるように顔に速度が加わる。
最終更新:2013年07月15日 05:53