TwoWorlds.qml Example File

examples/physics/box2d-examples/qml/twoWorlds/TwoWorlds.qml
 import QtQuick 2.0
 import VPlay 2.0

 //demonstrates how to use 2 different physics worlds with different gravity
 //is a copy of Boxes with one box and one wall in a different world
 GameWindow {
   id: gameWindow
   screenWidth: 960
   screenHeight: 640

   Image {
     anchors.fill: parent
     source: "background.png"
   }

   Scene {
     id: scene
     width: 480
     height: 320

     Repeater {
       model: 3
       delegate: WoodenBox {
         x: Math.random() * (scene.width - 100)
         y: Math.random() * (scene.height / 3)
         rotation: Math.random() * 90
       }
     }

     //this box now belongs to the second world
     WoodenBox {
       id: box
       x: 100
       y: 200
       collider.body.world: world2
     }

     Rectangle {
       // this is another way to set a shape to a physics body - mention that the rotation of the box must be set, and the transformOrigin must be set to Topleft, as this is used for Body as well!
       width: box.width
       height: box.height
       x: box.x-box.width/2
       y: box.y-box.height/2
       color: "green"
       opacity: 0.5
       rotation: box.rotation
     }

     // the darkblue rectangle of the Walls is only visible when the GameWindow has a different aspect ratio than the Scene, because it is anchored to the outside of the visible scene
     Wall {
       id: ground
       height: 20
       anchors { left: parent.left; right: parent.right; top: parent.bottom }
     }
     Wall {
       id: ceiling
       height: 20
       anchors { left: parent.left; right: parent.right; bottom: parent.top }
     }
     Wall {
       id: leftWall
       width: 20
       anchors { right: parent.left; bottom: ground.top; top: ceiling.bottom }
     }

     //the right wall now belongs to the second world
     Wall {
       id: rightWall
       width: 20
       collider.body.world: world2
       anchors { left: parent.right; bottom: ground.top; top: ceiling.bottom }
     }

     //worlds can anywhere in the scene (if placed outside of scene, debug view is wrong)
     PhysicsWorld {
       id: world
       gravity.y: 9.81
       debugDrawVisible: true
     } // end of PhysicsWorld

     PhysicsWorld {
       id: world2
       gravity.x: 1
       debugDrawVisible: true
     } // end of PhysicsWorld
   } // end of Scene

   MouseArea {
     id: debugMouseArea
     anchors.fill: parent
     onPressed: world.debugDrawVisible = !world.debugDrawVisible
   }

   EntityManager {
     id: entityManager
   }
 }

Voted #1 for:

  • Easiest to learn
  • Most time saving
  • Best support

Develop Cross-Platform Apps and Games 50% Faster!

  • Voted the best supported, most time-saving and easiest to learn cross-platform development tool
  • Based on the Qt framework, with native performance and appearance on all platforms including iOS and Android
  • Offers a variety of plugins to monetize, analyze and engage users
FREE!
create apps
create games
cross platform
native performance
3rd party services
game network
multiplayer
level editor
easiest to learn
biggest time saving
best support