您好,如何将身体移动到准确的位置,例如 cocos2d 中的 CCMoveTo 动作。我想出了如何用 SetLinearVelocity 做到这一点
b2Vec2 force = (t * endPosition) - body->GetLinearVelocity();
[self runAction: [CCSequence actions: [CCCallBlock actionWithBlock:^{
body->SetLinearVelocity( force );
}],
[CCDelayTime actionWithDuration: (1.0f / t)],
[CCCallBlock actionWithBlock:^{
body->SetLinearVelocity( b2Vec2_zero );
}],nil]];
我在论坛上找到了这段代码,但它对我没有帮助..
b2Vec2 currentPosition = body->GetPosition();
b2Vec2 desiredPosition = ...;
b2Vec2 necessaryMovement = desiredPosition - currentPosition;
float necessaryDistance = necessaryMovement.Length();
necessaryMovement.Normalize();
float forceMagnitude = b2Min(maxAllowableForce, necessaryDistance);
b2Vec2 force = forceMagnitude * necessaryMovement;
body->ApplyForce( force, body->GetWorldCenter() );
同样的问题不能在目标点停止身体..所以请帮助我。