2014-02-06 2 views
1

Я пытаюсь выяснить, как использовать PhysicsJS. Сначала я просто хочу просто понять, как изменить, скажем, положение или скорость объекта при щелчке ... но я просто не могу понять это!PhysicsJS - перемещение объекта

(function() 
{ 
    var viewWidth = 500, 
    viewHeight = 300, 
    renderer = Physics.renderer('canvas', 
    { 
     el: 'viewport', 
     width: viewWidth, 
     height: viewHeight, 
     meta: false, 
     styles: 
     { 
      'circle' : 
      { 
       strokeStyle: 'hsla(60, 37%, 17%, 1)', 
       lineWidth: 1, 
       fillStyle: 'hsla(60, 37%, 57%, 0.8)', 
       angleIndicator: 'hsla(60, 37%, 17%, 0.4)' 
      } 
     } 
    }), 
    viewportBounds = Physics.aabb(0, 0, viewWidth, viewHeight), 
    constraint = { 
     aabb: viewportBounds, 
     restitution: 0.99, 
     cof: 0.99 
    }, 
    ballOptions = { 
     x: 100,   // x-coordinate 
     y: 100,   // y-coordinate 
     vx: 0.0, // velocity in x-direction 
     vy: 0.0, // velocity in y-direction 
     radius: 20 
    }, 
    gravity = Physics.behavior('constant-acceleration', 
    { 
     acc: { x : 0, y: 0.0004 } 
    }), 
    ball = Physics.body('circle', ballOptions); 

    Physics(function(world) 
    { 

    // add the renderer 
    world.add(renderer); 
    // add circle 
    world.add(ball); 

    // subscribe to ticker to advance the simulation 
    Physics.util.ticker.subscribe(function(time, dt) 
    { 
     world.step(time); 
    }); 

    // on every step... 
    world.subscribe('step', function() 
    { 
     world.render(); 
    }); 

    world.subscribe('collisions:detected', function($collision) 
    { 

    }); 

    var onElementClick = function() 
    { 
     // do something 
    }; 

    document.getElementById('viewport').addEventListener('click', onElementClick, false); 

    // Lets GO! 
    Physics.util.ticker.start(); 

}); 
})(); 

любая помощь очень ценится

+0

Что @ScottSPerry сказал. И вы можете просто применить некоторую силу. С .applyForce(). – slacktracer

ответ

4

Одним из вариантов является взять вес, который был создан, но никогда не добавляемые к миру и сделать это OnClick.

world.add(gravity); 

Это мошенничество в том смысле, что вы задали вопрос об изменении положения или скорости объекта. Для этого измените состояние шара. See the docs on Bodies, в частности, свойства. Вы можете установить state.pos, чтобы переместить его. Для того, чтобы поместить его в движение, установите скорость:

ball.state.vel.set(.1,-.5); // move right and upward 

jsfiddle that sets velocity

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