0

どうすれば衝動を抑えることができますか? 体が速くジャンプして、その後ジャンプを制限したいです。

次のようなもの、インパルス後の摩擦を探していますが、これは機能していません (vec2.y が「0」になるため、プレーヤーは y 軸の位置にとどまります)

//after a touch
body->ApplyLinearImpulse( b2Vec2(x,y), body->GetPosition() );
vec2 = body->GetLinearVelocity();

//in the tick method, called every step
vec2.y = vec2.y * 0.99;
CCLOG(@"vec2.y : %f", vec2.y);
body->SetLinearVelocity(vec2);
4

1 に答える 1

0

私は長い間この静かなものを探していましたが、ついにそれをやった:

//call this after touch
       body->ApplyLinearImpulse(b2Vec2(0, 35000), body->GetPosition());

        [self schedule:@selector(CheckVelocity) interval:0.0001];
        [self scheduleOnce:@selector(toggleCheckForLanding) delay:.5];


-(void)CheckVelocity
{
set a max velocity according to your jump i have set it 13.....
    int velocitymax = MAX_VELOCITY;//13
    b2Vec2 vel = body->GetLinearVelocity();
    if(vel.y>velocitymax)
    {
        vel.x = 0;
        vel.y = MAX_VELOCITY;
        body->SetLinearVelocity( vel );
    }

}


-(void) toggleCheckForLanding
{
    [self unschedule:@selector(CheckVelocity)];
    canCheckForLanding_ = YES;
}
于 2015-01-02T13:40:20.603 に答える