我正在使用 Cocos2D-X 和 Box2D 开发一款小型手机游戏。
我被卡住的地方是box2d-body(主要演员)和相应的Sprite的运动。现在我想:
- 沿 x 轴以恒定速度移动此 Body,无论它是向上还是向下滚动(它是一个圆形)
- 保持身体几乎粘在它滚动的地面上
- 将 Body 和相应的 Sprite 保持在屏幕的中心。
我尝试了什么:
在 update()- 方法中,我使用
body->SetLinearVelocity(b2Vec2(x,y))
了更高/更低的值,如果身体为他的速度传递了一个常数值我曾经在
body->SetLinearVelocity(b2Vec2(x,y))
首先尝试将 CCFollow 与我的 playerSprite 一起使用,它也在沿 y 轴滚动,因为我只需要沿 x 轴滚动,所以我决定将包含环境(平台等)的整个层移动到我的屏幕左侧和屏幕右侧的玩家身体和玩家精灵,调整速度值以使玩家保持在屏幕的中心。
出色地...
...没有像我想要的那样工作,因为每次我手动设置速度(我也尝试
body->applyLinearImpulse(...)
在 Body 向上移动时使用,就像在使用 velocityIterations in 的值一样world->Step(...)
)有一个小的延迟,这将玩家的身体或多或少地推离屏幕中心。... 也没有像我预期的那样工作,因为我需要调整 x 值,当身体向上移动以保持它不会减速时,这使我的身体更加不粘在地面上。 ..
... CCFollow 做得很好,除了我不想也沿着 y 轴滚动,它会强制过度给定的精灵从屏幕中心开始。移动整个图层甚至没有带来好的效果,我尝试了很长时间来调整图层的移动速度值和身体保持相互抵消,玩家几乎停留在屏幕中心...... .
所以我的问题是:
你们中有人有什么新方法可以让我解决这一系列有凝聚力的问题吗?
干杯,
塞布