使用花栗鼠的问题

Cri*_*riz 1 iphone chipmunk cocos2d-iphone iphone-sdk-3.0

我做了一个游戏,使用可以通过触摸屏幕向左或向右移动的角色,在角色上方,它是一个苹果,我需要的是苹果会掉下来,角色可能会像打排球一样再次推动苹果.这就是问题,我从"边界球"中学到的是给精灵一个形状和身体,然后它们会自动碰撞,当我给角色赋予形状和身体,动画不起作用,角色移动后第二个他"跳"到起点,无论我使用setPosition还是Action(MoveTo)来精灵也无用移动身体也不行.我用touchmoved来设置body-> p,它一直在颤抖,当我释放时按钮,它"飞"总是出界..........任何人都可以告诉我该怎么做或给出一个类似的例子(例如排球等类似的东西),Plx帮助!

我很感激,如果有人能帮助我.

nas*_*ash 5

将花栗鼠身体和形状添加到精灵中并不是解决这个问题的最佳方法.尽量不要从屏幕的角度思考!相反,创建一个控制器,其中包含对物理主体和精灵的引用.

使用物理引擎,如花栗鼠,可能有点令人生畏.它有助于启用调试绘图.看看你如何才能做到最好!您可以从cocos2d chipmunk示例中获取一些代码,其中包含正常的cocos2d下载)

我认为你已经添加了一个"地面"形状作为静态形状并具有重力设置?

当您移动一个具有body->p = cpv(x,y);问题的主体时,您不会更改除其位置之外的对象状态.对物理引擎来说,就像你传送物体一样.如果物体掉落,它仍然会掉落.

所以现在,你坠落的物体不会碰到地面.它的速度提高了.你再次"传送"它......但是直到碰到任何东西,重力会不断增加它的下降速度.

因此,如果将对象移动到另一个点,请务必重置该对象上的所有力和速度,如果需要这样做的话!

比使用更好的方法body->p使用这些功能:

  • void cpBodySlew(cpBody*body,cpVect pos,cpFloat dt)
  • void cpBodyUpdateVelocity(cpBody*body,cpVect gravity,cpFloat damping,cpFloat dt)
  • void cpBodyUpdatePosition(cpBody*body,cpFloat dt)

这些功能的文档不是太多,但还有其他文档.给它一个谷歌:-p我还没有完全掌握使用这些功能(我仍然试图绕过花栗鼠)但他们是这样做的方式.

或者你可以(而不是设置body->p)直接设置对象的速度(虽然cpBodySlew为你做这个)