我正在使用andengine通过box2d创建一个物理模拟。
使用Sprites通过PhysicsFactory创建实体。
我的想法是按照这种模式在程序上定位这些精灵:
基本上是一个代表我的世界坐标中心的中心精灵,以及一系列通过在我的世界中心(圆圈内的“X”)周围旋转基础精灵而创建的克隆精灵。
我试过在andengine中使用opengl方式(翻译,旋转,反向翻译)
super(stamiRadious, 0, image); //stamiDoadious is te distance from radix (world center) and "petal" attach point
this.setRotationCenter(0, 0);
this.setRotation((float) Math.toDegrees(angleRad));
this.setPosition(this.getX()+radixX, this.getY()+radixY);
但是我失败了:结果不对(错误的最终位置,以及错误的box2d正文属性,好像精灵比图像大得多)
我相信问题的一部分依赖于我对setRotation
和setRotationCenter
的解释,以及我对andengine坐标系+ box2d坐标系统的理解。
对doc /说明的任何想法/链接?
答案 0 :(得分:4)
一旦你创建了一个Sprite的物理表示(Body),你应该非常小心你如何修改Sprite!通常你不再修改Sprite,而是通过调用
来修改BodysomeBody.setTransform(); // Note that positions must be divided by PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT!
希望有所帮助:)