2015-03-23 5 views
0
require.config({ 
    baseUrl: 'http://wellcaffeinated.net/PhysicsJS/assets/scripts/vendor/', 
    packages: [ 
    { 
    name: 'physicsjs', 
    location: 'physicsjs-current', 
    main: 'physicsjs-full.min' 
    } 
    ] 
    }); 

    var colors = [ 
    ['0x268bd2', '0x0d394f'] 
    ,['0xc93b3b', '0x561414'] 
    ,['0xe25e36', '0x79231b'] 
    ,['0x6c71c4', '0x393f6a'] 
    ,['0x58c73c', '0x30641c'] 
    ,['0xcac34c', '0x736a2c'] 
    ]; 

    function initWorld(world, Physics) { 

    // bounds of the window 
    var viewWidth = window.innerWidth 
    ,viewHeight = window.innerHeight 
    ,viewportBounds = Physics.aabb(0, 0, window.innerWidth-50, window.innerHeight-50) 
    ,edgeBounce 
    ,renderer 
    ,styles = { 
    'circle': { 
    fillStyle: colors[0][0], 
    lineWidth: 1, 
    strokeStyle: colors[0][1], 
    angleIndicator: colors[0][1] 
    } 
    ,'rectangle': { 
    fillStyle: colors[1][0], 
    lineWidth: 1, 
    strokeStyle: colors[1][1], 
    angleIndicator: colors[1][1] 
    } 

    } 
    ; 

    // create a renderer 
    renderer = Physics.renderer('pixi', { el: 'viewport', styles: styles }); 
    // add the renderer 
    world.add(renderer); 
    // render on each step 
    world.on('step', function() { 
    world.render(); 
    }); 

    // constrain objects to these bounds 
    edgeBounce = Physics.behavior('edge-collision-detection', { 
    aabb: viewportBounds 
    ,restitution: 0.2 
    ,cof: 0.8 
    }); 

    // resize events 
    window.addEventListener('resize', function() { 

    // as of 0.7.0 the renderer will auto resize... so we just take the values from the renderer 
    viewportBounds = Physics.aabb(0, 0, renderer.width, renderer.height); 
    // update the boundaries 
    edgeBounce.setAABB(viewportBounds); 

    }, true); 

    // add behaviors to the world 
    world.add([ 
    Physics.behavior('constant-acceleration') 
    ,Physics.behavior('body-impulse-response') 
    ,Physics.behavior('body-collision-detection') 
    ,Physics.behavior('sweep-prune') 
    ,edgeBounce 
    ]); 
    } 

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

    // 
    // Add some interaction 
    // 
    function addInteraction(world, Physics){ 
    // add the mouse interaction 
    world.add(Physics.behavior('interactive', { el: world.renderer().container })); 
    // add some fun extra interaction 
    var attractor = Physics.behavior('attractor', { 
    order: 0, 
    strength: 0.002 
    }); 

    world.on({ 
    'interact:poke': function(pos){ 
    world.wakeUpAll(); 
    attractor.position(pos); 
    world.add(attractor); 
    } 
    ,'interact:move': function(pos){ 
    attractor.position(pos); 
    } 
    ,'interact:release': function(){ 
    world.wakeUpAll(); 
    world.remove(attractor); 
    } 
    }); 
    } 
    // helper function (bind "this" to Physics) 
    function makeBody(obj){ 
    return this.body(obj.name, obj); 
    } 

    // 
    // Add bodies to the world 
    // 
    function addBodies(world, Physics){ 
    var v = Physics.geometry.regularPolygonVertices; 
    var bodies = [ 
    { name: 'circle', x: 100, y: 100, vx: 0.1, radius: 60,mass:10 } 

    ]; 
    var wallbody =[{ 
    name: 'rectangle', x: (innerWidth/2) - 60,fixed:true, y: innerHeight - 30, vx: 0, width: 60, height: 300, mass: 1000, restitution: 0.0, cof: 1000 
    }];//want this rectangle to be fixed like a wall 

    world.add(bodies.map(makeBody.bind(Physics))); 
    world.add(wallbody.map(makeBody.bind(Physics))); 



    } 

    // 
    // Load the libraries with requirejs and create the simulation 
    // 
    require([ 
    'physicsjs', 
    'pixi' 
    ], function(Physics, PIXI){ 
    window.PIXI = PIXI; 

    var worldConfig = { 
    // timestep 
    timestep: 6, 
    // maximum number of iterations per step 
    maxIPF: 4, 
    // default integrator 
    integrator: 'verlet', 
    // is sleeping disabled? 
    sleepDisabled: false, 
    // speed at which bodies wake up 
    sleepSpeedLimit: 0.1, 
    // variance in position below which bodies fall asleep 
    sleepVarianceLimit: 2, 
    // time (ms) before sleepy bodies fall asleep 
    sleepTimeLimit: 500 
    }; 

    Physics(worldConfig, [ 
    initWorld, 
    addInteraction, 
    addBodies, 
    startWorld 
    ]); 

    }); 

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

ответ

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