2016-10-26 6 views
2

J'essaie de déplacer une KinematicBody d'une distance spécifique en calculant la vitesse correspondante nécessaire pour la déplacer complètement dans une image. Ci-dessous est un morceau de pseudocode décrit ce que je fais:Vitesse linéaire par rapport à la distance déplacée dans une image

var v = 0; 
function update(){ 
    // do update 
    world.Step(1/60, 10, 10); 

    // do rendering stuff 

    // set linear velocity to v 
    objectBody.SetLinearVelocity(new b2Vec2(0, v)); 
    // reset v to 0 
    v = 0; 

    // wait 16.6ms 

    update(); 
} 

function moveBy(n){ 
    v = n * 60; // set velocity to be n units/sec 
} 

Appel moveBy(300) ne se déplace pas en fait par 300 unités. Il descend, mais la distance n'est pas de 300 unités.

Pourquoi est-ce et qu'est-ce qu'une solution possible?

Répondre

1

Apparemment, il existe une limite maximale de déplacement d'une KinematicBody dans une étape pour empêcher le tunneling. Pour résoudre cela, j'ai dû tout réduire.