나는 총알을 던질 필요가있는 간단한 게임을 개발하려고합니다. 볼을 터치 또는 스 와이프 방향으로 따라오고 싶습니다.자바 Android onTouch 방향
그러나 나는 해결하는데 성공하지 못한 작은 문제가 있습니다.
I는 다음이 직선에 따른 공 이동하기 위해 직선의 방정식을 계산 MotionEvent
의 ACTION_DOWN
좌표 및 MotionEvent
의 ACTION_UP
의 좌표를 가지고.
"위로"또는 "앞으로"또는 "앞에서"가까운 방향으로 스 와이프하면 볼이 번쩍이는 속도로 움직이며 다른 방향으로 기울어 지거나 (오른쪽 또는 왼쪽) 또는 대각선에서는 볼이 정상 속도로 움직입니다.
내 계산의 결함은 어디에 있습니까?
제발 도와주세요, 나는 결과에서 멀지는 않지만이 문제를 해결해야합니다!
onTouch
방법 :
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()) {
case(MotionEvent.ACTION_DOWN):
balle.setX(event.getX());
balle.setY(event.getY());
ya = event.getY();
xa = event.getX();
break;
case(MotionEvent.ACTION_UP):
xb = event.getX();
yb = event.getY();
balle.setMove(true);
break;
}
return true;
}
이 내 moveDirection
방법 :
public void moveDirection(float xa, float ya, float xb, float yb) {
if(!move) {
return;
}
else {
float m, b;
float dx = xb-xa;
m = (yb - ya)/(xb - xa);
b = ya - (m * xa);
if(dx > 0) {
this.x += speedX;
}
else {
this.x += -speedX;
}
this.y = (m * this.x + b);
}
}
사전에 감사합니다!
오른쪽 또는 왼쪽으로 이동하면 해당 이벤트가 전달되지 않으므로 속도가 느려질 수있는 일부 상호 작용이 손실 될 수 있습니다.이 경우 기본 옵션을 추가해보십시오. 더 도움이되지 않아서 미안하지만 안드로이드에서 게임에 대해 거의 알지 못한다 :) –
어디에 오른쪽 또는 왼쪽 옵션을 추가해야합니까? moveDirection 함수 또는 onTouch 함수에서? –
onTouch의 경우 기본 동작 옵션을 추가하면 다른 터치 이벤트를 캡처 할 수 있습니다. VelocityTracker를 추가하여 이벤트의 속도를 결정할 수 있습니다. 예를 들어 코드를 게시합니다. –