gpt4 book ai didi

iphone - 使用触摸屏进行游戏控制

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:57:02 25 4
gpt4 key购买 nike

我正在为 Android 平台开发我的第一个视频游戏,这是一个晚上和周末的项目。

进展顺利,但我对控制灵敏度非常不满意。

在这个游戏中,您可以在屏幕上左右移动一个物体。屏幕底部是一个类似“触摸板”的地方,您的手指应该放在上面。

/-------------------------\
| |
| |
| |
| Game Area |
| |
| |
| |
| |
| |
/-------------------------\
| |
| Touch Area |
| |
\-------------------------/

我目前正在使用一个状态变量来保存“MOVING_LEFT、MOVING_RIGHT、NOT_MOVING”,并根据该变量在每一帧更新播放器对象的位置。

但是,我读取触摸屏输入并设置此状态变量的代码要么过于敏感,要么过于滞后,具体取决于我如何调整它:

public void doTouch (MotionEvent e) {
int action = e.getAction();

if (action == MotionEvent.ACTION_DOWN) {
this.mTouchX = (int)e.getX();
this.mTouchY = (int)e.getY();
}
else if (action == MotionEvent.ACTION_MOVE) {
if ((int)e.getX() >= this.mTouchX) {
this.mTouchX = (int)e.getX();
this.mTouchY = (int)e.getY();
if (this.TouchRect.contains(this.mTouchX, this.mTouchY)) {
this.mTouchDirection = MOVING_RIGHT;
}
}
else if ((int)e.getX() <= this.mTouchX) {
this.mTouchX = (int)e.getX();
this.mTouchY = (int)e.getY();
if (this.TouchRect.contains(this.mTouchX, this.mTouchY)) {
this.mTouchDirection = MOVING_LEFT;
}
}
else {
this.mTouchDirection = NOT_MOVING;
}
}
else if (action == MotionEvent.ACTION_UP) {
this.mTouchDirection = NOT_MOVING;
}
}

我的想法是,当有任何移动时,我会检查用户手指之前的位置,然后找出移动播放器的方向。

这不是很好用,我想这里有一些 iPhone/Android 开发人员已经想出了如何通过触摸屏进行良好的控制,并且可以提供一些建议。

最佳答案

您可以在 Windows 上尝试类似于“拖动矩形”的操作。当您在某物上按住鼠标按钮时,您不会开始拖动操作,直到鼠标移出鼠标按下位置周围的一个小区域。原因是单击时很难将光标保持在同一像素上。

所以第一次尝试可以是 (int)e.getX() >= this.mTouchX + DEAD_ZONE 和另一种情况类似,其中 DEAD_ZONE 是一个小的整数。

然而,这并不涉及在同一行程中转身。您可以通过仅在当前位置距右转后最后一个位置左侧至少 DEAD_ZONE 像素时才左转来处理该问题,反之亦然。

关于iphone - 使用触摸屏进行游戏控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com