我使用我的技巧来缩放整个场景以匹配屏幕分辨率。
然后我坚持使用缩放场景的问题。
我无法将pSceneTouchEvent坐标转换为本地实体坐标
在我的BaseGameActivity中,我喜欢这样:
minScale = getMinScaleToMatchDeviceResolution();
mainScene.setScale(minScale);
sceneXposition = -(minScale*screenWidth-screenWidth)/2.0f;
sceneYposition = -(minScale*screenHeight-screenHeight)/2.0f;
mainScene.setPosition(screenWidth, screenHeight);
我在场景中有两层:
1)mBaseEntity是Entity直接属于Scene
mBaseEntity = new Entity(relativeBaseEntityXposition,relativeBaseEntityYposition);
mainScene.attachChild(mBaseEntity);
2)第二个实体属于mBaseEntity mSecondLayer = new Entity(); mBaseEntity.attachChild(mSecondLayer);
我的孩子Sprite是在第二层创建的: Sprite stickerySprite = new StickerySprite(stickeryXposition,stickeryYposition,stickeryTextureRegion) mSecondLayer.attachChild(stickerySprite);
现在我的目标是在触摸移动后移动stickerySprite。
我的想法是将pSceneTouchEvent转换为本地位置,但它不起作用 本地坐标错了!
StickerySprite(stickeryXposition, stickeryYposition, stickeryTextureRegion)
{
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX,
float pTouchAreaLocalY)
{
float[] realPosition =
mSecondLayer.convertSceneToLocalCoordinates(
(pSceneTouchEvent.getX() - this.getWidth() / 2),
(pSceneTouchEvent.getY() this.getHeight() / 2)/);
this.setPosition(realPostion[0], realPosition[1]);
}
我使用了AndEngine示例,但在这种情况下,它无法工作,因为我的场景是如上所述的比例。 我试图重新计算当地的实际位置,但似乎我错过了一些重要的事情。 你能不能给我任何建议:)真的很感激和赞赏 对不起我的英语!!!