我试图创建一个简单的Android游戏,它的屏幕上有2个操作杆(圆)2D动作射击游戏,左边的一个是运动控制和正确的武器控制。方向由拇指相对于圆心的位置控制。为Android游戏创建“控制杆”?
我一直在关注这个网站的教程:http://www.kilobolt.com/day-7-creating-an-android-game-from-start-to-finish.html,但只给了我基础上下工夫。我没有编程经验,所以我现在很迷茫。
我运动只在TOUCH_DOWN事件的工作,英雄移动到哪里应该,但改变方向我得提高我的拇指和再次触摸圈子。如果我碰到的角色移动非常快的圈拖我的手指TOUCH_DRAGGED(或ACTION_MOVE),是因为打破。我想问题是触摸事件正在处理太多,但我不知道如何解决它。
我怎样才能改变这种做法,我可以拖动周围一圈我的拇指和英雄会立即改变其方向,并保持它的变速恒所有的时间?无论离你接触的圆心有多近还是远,速度都应该是一样的。
private void updateRunning(List<TouchEvent> touchEvents, float deltaTime) {
int len = touchEvents.size();
for (int i = 0; i < len; i++) {
TouchEvent event = touchEvents.get(i);
if (event.type == TouchEvent.TOUCH_DOWN || event.type == TouchEvent.TOUCH_DRAGGED) {
if (inBounds(event, 50, 300, 150, 150, 'c')) {
ctrl.setX(event.x);
ctrl.setY(event.y);
ctrl.direction();
hero.move(ctrl.getDirX(), ctrl.getDirY());
}
}
if (event.type == TouchEvent.TOUCH_UP) {
if (inBounds(event, 0, 0, 35, 35,'r')) {
pause();
}
hero.stopMove();
}
}
hero.update();
运动:英雄的speedX和speedY被添加到英雄的centerX和centerY每个hero.update()调用中。
public void move(float x, float y) {
speedX += x * MOVESPEED;
speedY += y * MOVESPEED;
}
该方法处理速度。在stackoverflow找到它,并且因为touch_down事件工作正常,我猜这是在做它的工作。虽然我觉得它不是应该如此。 L_STICK_C是一个值为100和350(圆的中心)的常量。
public void direction() {
dir.x = x - L_STICK_C.x;
dir.y = y - L_STICK_C.y;
double hyp = Math.sqrt(dir.x * dir.x + dir.y * dir.y);
dir.x = (float) (dir.x/hyp);
dir.y = (float) (dir.y/hyp);
}
哎呀,我看你是在寻找一个tutorail,是我不好。 – aglassman 2013-02-18 21:39:04