我正在与Cocos2D-X和Box2D进行小型手机游戏。保持速度不变和玩家位置 - Sidescrolling
我卡住的地方是box2d-body(主要演员)和相应的雪碧的移动。现在我想:
- 移动这身搭配沿x轴的恒定速度,不管它是滚动(这是一个circleshape)向上或向下
- 保持身体几乎贴到地面上它滚动
- 保持正文和相应的雪碧在屏幕中心。
我尝试什么:
在更新() - 方法我用
body->SetLinearVelocity(b2Vec2(x,y))
较高/较低的值,如果身体中传递一个恒定值为他的速度我用于设置非常高的y值
body->SetLinearVelocity(b2Vec2(x,y))
首先尝试使用CCFollow和我的playerSprite,这也是沿y轴滚动的,因为我只有n因此我决定将包含氛围(平台等)的整个图层移动到屏幕左侧和我的播放器主体&屏幕右侧的播放器精灵,调整速度使玩家保持在屏幕中心的值。
嗯......
...因为我想它,因为每个i手动设置的速度时(我还试图用
body->applyLinearImpulse(...)
当身体没有工作向上移动,就像玩着world->Step(...)
中的velocityIterations的值一样),会有一个小的延迟,将玩家身体推向屏幕中心或多或少。...并没有像我预期的那样工作,因为我需要调整x值,当身体向上移动以保持它不会变慢时,这使得我的身体更不粘滞到地面......
... CCFollow做了一个很好的工作,除了我不想沿着Y轴滚动,它也强制了在屏幕中心开始的宽恕精灵。移动整个图层甚至没有带来好的结果,我已经尝试了很长时间来调整图层和身体的移动速度的值,以保持它相互抵消,玩家几乎停留在屏幕的中心... 。
所以我的问题是:
是否有人对你有新的方法的任何一种为我解决问题的这种凝聚力一堆?
干杯,
勒布
这将很难用box2d完成,你会在这里找到一些解释:http://www.learn-cocos2d.com/2013/08/physics-engine-platformer-terrible-idea/ – LearnCocos2D