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。像地心引力一样
可以在每个实体的基础上重写