2014-12-20 2 views
0

Я приложил динамическое тело к статическому телу, используя веревочное соединение в испытательном стенде box2d. Я хочу, чтобы динамическое тело вращалось вокруг статического тела, когда нажаты кнопки «a» или «d». Я не хочу использовать револьверное соединение, потому что длина револьвного сустава фиксирована. Поэтому я хочу применить центробежную силу к объекту, может ли кто-нибудь сказать мне, как это сделать? Заранее спасибо.Как применить центробежную силу в box2d?

+0

Похоже, вы просто имеете в виду обычную «силу» ... которую вы можете сделать с помощью ApplyForce. Есть ли что-то особенное, что делает его «центробежным»? – iforce2d

+0

@ iforce2d на самом деле нет ничего особенного, просто я не знаю, как применить силу, чтобы заставить объект вращать другой объект. – Tony

ответ

0

Я не знаком с испытательным стендом, но логика того, что вы просите, довольно проста. То, что вы хотите сделать, это найти угол между динамическим телом и статическим телом. С этим углом вы просто создаете новый Vector2(x,y), который будет представлять вашу силу для использования с ApplyForce.

В Java это будет выглядеть так:

// This is the dimension of the vector representing the applied force (you choose that) 
    float forceDimension = 10; 

    // This is the angle you have to find (I use PI since the Math class uses radians) 
    // PI radians == 90 degrees (your dynamic body would then be directly above your static body) 
    double angle = Math.PI; 

    // This is the actual vector of the force 
    Vector2 force = new Vector2(forceDimension * (float) Math.sin(angle), forceDimension * (float) Math.cos(angle)); 

Тогда вы можете повторно вычислить эту силу каждое обновление и применить его к динамическому тела.

Смежные вопросы