ios - iOS Spritekit 和 Android Andengine 之间的物理标准化

标签 ios sprite-kit box2d andengine

我同时在 iOS Sprite Kit 和 AndEngine(使用 Box2d)上开发游戏。我希望游戏的物理特性在两个平台上都相同。 Sprite Kit 在内部使用 Box2d 进行与 AndEngine 相同的物理模拟。

在 AndEngine 的 Box2d 中,我使用 body.SetLinearVelocity(x,y) 其中 x = y = density/34f(some constant value)

在 Sprite Kit 中,我使用 ball.physicsBody.velocity = CGVectorMake(x,y)

我同样在 AndEngine 和 Sprite Kit 中分别使用下面的代码来处理重力和冲量。

对于重力:

在AndEngine的Box2d中,我使用

mPhysicsWorld = new FixedStepPhysicsWorld(60, 1, new Vector2(0, -1f),false, 6, 2);

在 Sprite Kit 中,我使用

self.physicsWorld.gravity = CGVectorMake(0, -1);

对于冲动:

在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 中,我给出了速度 w.r.t 设备的密度,这样我们就可以让游戏在所有安卓设备上看起来都一样,就像球在所有设备(手机、平板电脑)中几乎同时开始和结束

我想知道在 sprite kit w.r.t AndEngine 中应该赋予什么值,以便两个平台中的物理效果看起来相似。此外,我们是否必须像在 AndEngine 中那样为不同的屏幕尺寸提供不同的速度,或者应该为所有 iOS 设备提供相同的速度。

除了设置速度外,我还需要知道是否应该根据屏幕尺寸保持 Gravity 和 Impulse 变量。

最佳答案

两个不同的游戏引擎、两个不同版本的 Box2D(对 Sprite Kit 版本进行了未知的修改)、两个不同的设备平台、两种不同的编程语言,甚至可能是两组不同的硬件(iOS 与 Android)之间的物理相同)?这几乎是不可能的。

一开始,您必须在 Sprite Kit 和 AndEngine 中运行完全相同版本的 Box2D。因为您无法知道 SK 开发人员对 Box2D 进行的内部修改。还有一些。

然后您需要确保使用相同的build设置编译代码,特别是因为它与浮点运算有关。

关于ios - iOS Spritekit 和 Android Andengine 之间的物理标准化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427069/

相关文章:

ios - 框架 "weak-link"是什么意思?

ios - 自定义附件 View 按钮的操作是什么 - swift

ios - CoreData - 如何快速创建具有现有对象的重复对象

iphone - 当我尝试摧毁 b2Body 时游戏崩溃,我该怎么办?

ios - 通过 Urban Airship iOS 发送 PUSH

ios - 按顺序执行未知数量的动画

swift |我正在尝试旋转 Sprite 并在每次点击时更改旋转方向

iphone - 应该设置球的哪些物理属性?

java - setVelocity 在 OutofScreen 上没有改变

ios - SKNode runAction 滞后 :completion: in recursive method