У меня есть этот класс, который расширяет SurfaceView. Код, который я до сих пор заставляет игрока следить за моим пальцем, но он также позволяет игроку «телепортироваться» туда, куда палец идет, и я этого не хочу.Как сделать изображение (нарисованное) следовать за моим пальцем?
@Override
public boolean onTouchEvent(MotionEvent event) {
pointerX = (int)event.getX();
pointerY = (int)event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (!player.getPlaying()) {
player.setPlaying(true);
}
if (!player.playerAlive) {
if ((pointerX >= rescaleX(600) && pointerX <= rescaleX(842)) && (pointerY >= rescaleY(900) && pointerY <= rescaleY(1142))) {
//newGame();
player.setX(600);
player.setY(900);
}
}
if (player.playerAlive) {
// player.move(true);
}
break;
case MotionEvent.ACTION_MOVE:
if (!player.getPlaying()){
player.setPlaying(true);
player.move(true);
} else {
player.move(true);
}
break;
case MotionEvent.ACTION_UP:
//player.move(true);
if (!player.playerAlive) {
if ((pointerX >= rescaleX(600) && pointerX <= rescaleX(842)) && (pointerY >= rescaleY(900) && pointerY <= rescaleY(1142))) {
newGame();
player.setX(600);
player.setY(900);
}
}
break;
}
return true;
//return super.onTouchEvent(event);
}
Вот метод перемещения() в классе игрока:
public void move(boolean b) {
if(b){
if((GamePanel.pointerX * GamePanel.WIDTH/MainActivity.dispX) - 141 >= 1380 - getWidth()){setX(1380-getWidth());}
if((GamePanel.pointerY * GamePanel.HEIGHT/MainActivity.dispY) - 141 >= 1880 - getHeight()){setY(1880 - getHeight());}
setX((int) ((GamePanel.pointerX * GamePanel.WIDTH/MainActivity.dispX) - 141));
setY((int) ((GamePanel.pointerY * GamePanel.HEIGHT/MainActivity.dispY) - 141));
}
Разве это не то, что я уже делаю? Я использую метод перемещения в игроке для перемещения. Но похоже, что вы говорите об организации ради, я не могу понять, почему игрок держит «телепорт», когда палец отрывается от игрока, когда я вызываю метод перемещения только при срабатывании MOVE MotionEvent. –