Tôi đang làm việc trên trò chơi điện tử đầu tiên của mình cho nền tảng Android như một dự án đêm và cuối tuần.Sử dụng Màn hình cảm ứng để điều khiển trò chơi
Nó đang đến cùng độc đáo, nhưng tôi rất không hài lòng với cảm giác kiểm soát.
Trong trò chơi này, bạn di chuyển một đối tượng sang trái và phải trên màn hình. Ở dưới cùng của màn hình là một "touchpad" của các loại, đó là nơi ngón tay của bạn nên nghỉ ngơi.
/-------------------------\
| |
| |
| |
| Game Area |
| |
| |
| |
| |
| |
/-------------------------\
| |
| Touch Area |
| |
\-------------------------/
Tôi hiện đang sử dụng biến trạng thái để giữ "MOVING_LEFT, MOVING_RIGHT, NOT_MOVING" và đang cập nhật vị trí của đối tượng trình phát mỗi khung dựa trên biến đó.
Tuy nhiên, mã của tôi mà đọc đầu vào màn hình cảm ứng và bộ biến trạng thái này là một trong hai quá sensative, hoặc quá lag, tùy thuộc vào cách tôi tinh chỉnh nó:
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;
}
}
Ý tưởng là khi có bất kỳ chuyển động , Tôi kiểm tra vị trí trước đó của ngón tay người dùng và sau đó tìm ra hướng di chuyển người chơi.
Điều này không hoạt động tốt, tôi thấy có một số nhà phát triển iPhone/Android ở đây đã tìm ra cách thực hiện điều khiển tốt qua màn hình cảm ứng và có thể đưa ra một số lời khuyên.
Bạn có thể xác định "không hoạt động tốt" và "quá chậm hoặc quá nhạy cảm" hay không. Một mô tả về cách hoạt động này sẽ hữu ích –
Hai phương tiện nhạy cảm mà tôi di chuyển ngón tay của tôi một giây một inch và người chơi đang ở trên màn hình .. độ trễ có nghĩa là tôi phải di chuyển ngón tay trên toàn bộ màn hình để di chuyển trình phát một inch. :) – FlySwat