我正在研究andengine,我有两个精灵,一个是盘子,另一个是苹果.我的盘子精灵从第1点移动到第2点,我的苹果精灵正在上下跳跃.
现在我想让苹果跳上盘子.我尝试用带有板的苹果苹果,但苹果没有放在盘子上.苹果放在盘子下面我使用了zindex,但它不起作用.
实际上问题是同时移动苹果和盘子.任何帮助都会得到满足.我坚持认为这就是为什么会发生这种情况以及解决方案.这是我的代码:
platedisplay = new Sprite( 250, 300, this.plate, this.getVertexBufferObjectManager()); appledisplay = new Sprite( 250, 140, this.apple, this.getVertexBufferObjectManager()); platedisplay.registerEntityModifIEr(new LoopEntityModifIEr(new PathModifIEr(20, path, Easelinear.getInstance()))); appledisplay.registerEntityModifIEr(new LoopEntityModifIEr(new ParallelEntityModifIEr(new MoveYModifIEr(1, appledisplay.getY(), (appledisplay.getY()+70), EaseBounceInOut.getInstance())))); this.appledisplay.setZIndex(1); platedisplay.setZIndex(0); platedisplay.attachChild(this.appledisplay); scene.attachChild(platedisplay);
解决方法:
您遇到的问题是每个对象都有不同的坐标系. Plate sprite在场景坐标中有自己的X和Y.但是当你将苹果添加到平板对象时,你现在正在使用平板局部坐标.因此,如果苹果在场景中的50,50,当你将它添加到盘子时,从盘子的变换中心点测量它现在将是50,50.
andengine中有LocaltoScene和ScenetoLocal坐标实用程序,可帮助您进行此转换.但是在它们下面并不是超级复杂 – 它们只是添加了所有嵌套精灵的变换.这两个utilite都是Sprite类的一部分,所以你可以从有问题的sprite中调用它们.在你的情况下可能
// Get the scene coordinates of the apple as an array.float[] coodinates = [appledisplay.getX(), appledisplay.getY()];// Convert the the scene coordinates of the apple to the local corrdinates of the plate.float[] localCoordinates = platedisplay.convertScenetoLocalCoordinates(coordinates);// Attach and set position of appleappledisplay.setposition(localCoordinates[0], localCoordintates[1]);platedisplay.attachChild(appledisplay);
总结 以上是内存溢出为你收集整理的android – 在另一个Sprite ANDENGINE上附加Sprite全部内容,希望文章能够帮你解决android – 在另一个Sprite ANDENGINE上附加Sprite所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)