Android 使用多点触控旋转对象
我对andengine甚至android游戏开发都是新手。我已经创建了精灵作为一个盒子。现在可以使用此编码拖动此框。它很好用 但我想要多点触控,我想在这个盒子里用2个手指旋转一个精灵,甚至它应该是可拖动的。。。。请帮助某人 我尝试了很多天,但不知道Android 使用多点触控旋转对象,android,sprite,andengine,Android,Sprite,Andengine,我对andengine甚至android游戏开发都是新手。我已经创建了精灵作为一个盒子。现在可以使用此编码拖动此框。它很好用 但我想要多点触控,我想在这个盒子里用2个手指旋转一个精灵,甚至它应该是可拖动的。。。。请帮助某人 我尝试了很多天,但不知道 final float centerX = (CAMERA_WIDTH - this.mBox.getWidth()) / 2; final float centerY = (CAMERA_HEIGHT - this.mBox.getH
final float centerX = (CAMERA_WIDTH - this.mBox.getWidth()) / 2;
final float centerY = (CAMERA_HEIGHT - this.mBox.getHeight()) / 2;
Box= new Sprite(centerX, centerY, this.mBox,
this.getVertexBufferObjectManager()) {
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
this.setPosition(pSceneTouchEvent.getX() - this.getWidth()/ 2,
pSceneTouchEvent.getY() - this.getHeight() / 2);
float pValueX = pSceneTouchEvent.getX();
float pValueY = CAMERA_HEIGHT-pSceneTouchEvent.getY();
float dx = pValueX - gun.getX();
float dy = pValueY - gun.getY();
double Radius = Math.atan2(dy,dx);
double Angle = Radius * 360 ;
Box.setRotation((float)Math.toDegrees(Angle));
return true;
}
确保在游戏中启用了多点触摸。您可以在
onLoadEngine
方法中使用中使用的相同代码
算法非常简单,类似于您在这里发布的内容
pSceneTouchEvent.getPointerID()
)来获取指针ID)pTouchAreaLocalX
和pTouchAreaLocalY
)ACTION\u DOWN
),保存初始角度。(Math.tan2(pointer1Y-pointer2Y,pointer1X-pointer2X)
)ACTION\u UP
,则在指针的每个ACTION\u MOVE
事件中更新新角度,并获取角度增量(delta=currentAngle-initialAngle
)。然后调用setRotation(Math.toDegrees(delta))
pointer1.dX = 50;
pointer1.dY = -20;
pointer2.dX = 40;
pointer2.dY = -10;
精灵在X轴上移动+40个单位,在Y轴上移动-10个单位。Plz有人能澄清这个疑问吗。这对所有安卓用户都很重要。你能为它提供代码吗?我不明白如何获得两个指针ID?当我用两个手指触摸并通过pSceneTouchEvent.getMotionEvent.getCount()计数时;所以它给出了1。如果我写pSceneTouchEvent.getPointerID());然后它给出了第一个指针id,如何获得第二个指针id?我查看了
MultiTouchController.java
的代码,然后引擎为MotionEvent
中的每个指针触发一个TouchEvent
,所以你应该得到两个对你的touch-event方法的调用。有人能发布如何做的事情吗