2016-03-06 4 views
8

Im пытается применить силу к объекту. Чтобы заставить его перемещаться по углу, который моя мышь создает по отношению к объекту.Требуется вычислительная сила Matter.js

У меня есть угол

targetAngle = Matter.Vector.angle(myBody.pos, mouse.position); 

Теперь мне нужно применить силу, чтобы получить тело двигаться вдоль этого угла. Что я могу добавить в значения ниже для метода applyForce?

// applyForce(body, position, force) 

    Body.applyForce(myBody, { 
    x : ??, y : ?? 
    },{ 
    x:??, y: ?? // how do I derive this force?? 
    }); 

Что я могу добавить в значения x и y здесь, чтобы заставить тело двигаться по углу между мышью и телом.

ответ

2

Чтобы применить силу для перемещения объекта в этом направлении, вам необходимо взять синус и косинус угла в радианах. Вы хотите просто передать позицию объекта в качестве первого вектора, чтобы не применять крутящий момент (вращение).

var targetAngle = Matter.Vector.angle(myBody.pos, mouse.position); 
var force = 10; 

Body.applyForce(myBody, myBody.position, { 
    x: cos(targetAngle) * force, 
    y: sin(targetAngle) * force 
}); 

Кроме того, если вам это нужно, то документы на applyForce() являются here.

(Я понимаю, этот вопрос стар, я более или менее делать это для тех, кто натыкается через него)

+1

это полезно, но что такое вращение? Разве он не хотел подавать в mouseX и mouseY в направлении. Также вы пропустили некоторые полуколоны после 180. Было бы хорошо, если бы это было в вики или примерах. –

+0

Плохо, спасибо, что указали это. – brennanenanen

+1

Я думаю, что ваша переменная 'theta' такая же, как' targetAngle'. Таким образом, вы можете просто передать targetAngle в функции 'cosine()' и 'sine()'. –