我同时在iOS Sprite Kit和AndEngine(与Box2d)上开发游戏。我希望游戏的物理在两个平台上都是相同的。 Sprite Kit在内部使用Box2d进行物理模拟,与AndEngine相同。
在AndEngine的Box2d中,我使用body.SetLinearVelocity(x,y)
,其中x = y =密度/ 34f(某个常数值)
在Sprite Kit中,我使用ball.physicsBody.velocity = CGVectorMake(x,y)
我同样使用下面的代码来表示重力和AndEngine&精灵套件。
为了重力:
在AndEngine的Box2d中,我使用
mPhysicsWorld = new FixedStepPhysicsWorld(60, 1, new Vector2(0, -1f),false, 6, 2);
在Sprite Kit中,我使用
self.physicsWorld.gravity = CGVectorMake(0, -1);
对于Impulse:
在AndEngine的Box2d中,我使用
body.applyLinearImpulse(new Vector2(2f, 2f),new Vector2(body.getWorldCenter().x, body.getWorldCenter().y));
在Sprite Kit中,我使用
[ball.physicsBody applyImpulse:CGVectorMake(2,2)];
在AndEngine中,我给出的速度与设备的密度一致,这样我们就可以让所有Android设备中的游戏玩法看起来都相同,就像所有设备(手机,平板电脑)中的球几乎同时开始和结束一样< / p>
我想知道在sprite kit w.r.t AndEngine中给出的值,以便两个平台中的物理看起来相似。此外,对于所有iOS设备,我们是否必须为AndEngine或相同速度的不同屏幕尺寸提供不同的速度。
除了设置速度之外,我还需要知道是否应该根据屏幕尺寸保留Gravity,Impulse变量。
答案 0 :(得分:1)
两个不同游戏引擎,两个不同版本的Box2D(对Sprite Kit版本进行了未知修改),两个不同的设备平台,两种不同的编程语言,甚至两个不同的硬件组(iOS与Android之间)相同的物理)?这几乎是不可能的。
你必须在Sprite Kit和AndEngine中运行完全相同版本的Box2D才能开始。由于您无法了解SK开发人员对Box2D所做的内部修改。还有一些。
然后,您需要确保使用相同的构建设置编译代码,特别是与浮点运算相关的代码。