タッチ入力の処理
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