Cocos2d iphone 如何施加不应连续的力

Cocos2d iphone 如何施加不应连续的力,cocos2d-iphone,chipmunk,Cocos2d Iphone,Chipmunk,我有一个身体,我用一个按钮移动,下面是我正在做的: -(void) step: (ccTime) delta { int steps = 2; CGFloat dt = delta/(CGFloat)steps; for(int i=0; i<steps; i++){ cpSpaceStep(space, dt); } cpSpaceHashEach(space->activeShapes, &eachShape, nil); cpSpace

我有一个身体,我用一个按钮移动,下面是我正在做的:

-(void) step: (ccTime) delta
{
  int steps = 2;
  CGFloat dt = delta/(CGFloat)steps;

  for(int i=0; i<steps; i++){
    cpSpaceStep(space, dt);
  }
  cpSpaceHashEach(space->activeShapes, &eachShape, nil);
  cpSpaceHashEach(space->staticShapes, &eachShape, nil);


  if(MoveBody)  
  {     
    cpFloat movementPadding = 0.1;
    cpBodyApplyForce(body, 
    cpvmult(ccp( 10, 0), movementPadding), cpvzero);   
  }
  else
    cpBodyResetForces(body);
}
-(void)步长:(ccTime)增量
{
int步数=2;
CGFloat dt=增量/(CGFloat)步长;
对于(int i=0;iactiveShapes,&eachShape,nil);
cpSpaceHashEach(空间->静态形状和每个形状,无);
如果(移动体)
{     
cpFloat movementPadding=0.1;
cpBodyApplyForce(车身,
cpvmult(ccp(10,0),movementPadding,cpvzero);
}
其他的
cpbodyreset力(body);
}
我只想在条件不好的时候停止身体的移动。我试图用
cpBodyResetForces(body)
将所有力重置为0,但这永远不会起作用-它只是继续移动


我怎样才能阻止身体移动?

如果你读了一些基本的物理知识,你会记得,只要将所有力重置为零——如果没有摩擦力——身体就会永远移动。你需要做的是,要么给物体移动的空间增加摩擦力,要么消除原始力,向相反方向施加力,直到物体停止,然后消除所有的力

使用物理引擎可能是一个非常有效的方法,但我只是自己学习所有这些-希望这是有帮助的


干杯

物体向前移动的原因是它的动量。要让对象“自动”停止,需要将空间阻尼设置为大于0。从文档:

> cpFloat cpSpaceGetDamping(const cpSpace *space) void
> cpSpaceSetDamping(cpSpace *space, cpFloat value) 
应用于空间的简单阻尼量。值为0.9表示每个实体 每秒会损失10%的速度。默认值为1。像地心引力一样 可以在每个实体的基础上重写