【发布时间】:2016-06-18 21:02:06
【问题描述】:
我正在尝试开发一个需要投掷子弹的简单游戏。 我希望球跟随触摸或滑动方向。
但是,我有一个小问题没有成功解决。
我在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);
}
}
提前谢谢你!
【问题讨论】:
-
当你向右或向左移动时,这些事件都不会被调度,所以可能你正在失去一些交互(这可能会导致速度降低),尝试在这种情况下添加一个默认选项,抱歉没有帮助更多,但我对android中的游戏知之甚少:)
-
我必须在哪里添加选项 right 或 left ?在 moveDirection 函数中还是在 onTouch 函数中?
-
在 onTouch 中,您正在捕获上下运动,如果您在案例中添加默认选项,则可以捕获其他触摸事件。您可以添加一个 VelocityTracker 来确定事件的速度,我将发布带有示例的代码
标签: java android swipe ontouch