2

私はボタンの助けを借りて動かす体を持っています。これが私がやっていることです:

-(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);
}

条件が満たされないときはいつでも体の動きを止めたいだけです。ですべての力を 0 にリセットしようとしていますcpBodyResetForces(body)が、これは機能しません。動き続けるだけです。

体の動きを止めるにはどうしたらいいですか?

4

2 に答える 2

1

基本的な物理学を読めば、すべての力をゼロにリセットするだけで、摩擦がなければ、物体は永遠に動き続けることを思い出すでしょう。あなたがする必要があるのは、体が動いている空間に摩擦を追加するか、元の力を殺して、体が止まるまで反対方向に力を加えることです - そして、すべての力を殺します.

物理エンジンを使用すると、これを行うための非常に効率的な方法があるかもしれませんが、私はこれをすべて自分で学んでいます - これが役に立てば幸いです!

乾杯!

于 2011-03-22T03:54:01.080 に答える