2016-03-06 15 views
8

Sto cercando di applicare una forza a un oggetto. Per farlo muovere nell'angolo che la mia posizione si sta generando rispetto all'oggetto.Matter.js calcolo forza necessaria

devo l'angolo

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

Ora ho bisogno di applicare una forza, per arrivare al corpo di muoversi lungo tale angolo. Cosa inserisco nei seguenti valori per il metodo applyForce?

// applyForce(body, position, force) 

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

Cosa metto in valori xey qui per ottenere il corpo a muoversi lungo l'angolo tra il mouse e il corpo.

risposta

2

Per applicare una forza per spostare l'oggetto in quella direzione è necessario prendere il seno e il coseno dell'angolo in radianti. Dovrai semplicemente passare la posizione dell'oggetto come primo vettore per non applicare la coppia (rotazione).

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 
}); 

Anche se ne avete bisogno, la documentazione su applyForce() sono here.

(capisco questa domanda è vecchio, sto più o meno a fare questo per chi si imbatte in esso)

+1

questo è utile, ma che cosa è la rotazione? Non voleva mangiare in mouseX e mouseY come direzione. Inoltre hai perso alcuni punti e virgola dopo 180. Sarebbe bello se questo fosse nel wiki o negli esempi. –

+0

Mio male, grazie per averlo indicato. – brennanenanen

+1

Penso che la tua variabile 'theta' sia la stessa di 'targetAngle'. Quindi puoi semplicemente alimentare il targetAngle nelle funzioni 'cosine()' e 'sine()'. –