Learn what Felgo offers to help your business succeed. Start your free evaluation today! Felgo for Your Business

Stack With Friends Demo

 import QtQuick 2.0
 import Felgo 3.0

 EntityBase {
   id: box
   entityType: "box"

   // the origin (the 0/0 position of the entity) of this entity is the center, thus we cannot use an anchors.fill: parent in Image and BoxCollider, otherwise it would use the top left corner as origin
   width: 30
   height: 30

   // the 0/0 of the entity should be the center of the collider and image
   // this is required when a width & height are set to the entity! in that case, the rotation should be applied around the center (which is top-left, not the width/2,height/2 Item.Center which is the default value)
   transformOrigin: Item.TopLeft

   Component.onCompleted: {
     boxImage.width = box.width
     boxImage.height = box.height
   }

   Image {
     id: boxImage
     source: "../../assets/img/crate.png"

     // set the size of the image to the one of the collider and not vice versa, because the physics properties depend on the collider size
     x: boxCollider.x
     y: boxCollider.y
     width: 1
     height: 1
     Behavior on width {
       NumberAnimation {duration: 200}
     }
     Behavior on height {
       NumberAnimation {duration: 200}
     }
   }

   BoxCollider {
     id: boxCollider

     // the size effects the physics settings (the bigger the heavier)
     // this is set automatically in any collider - the default size is the one of parent!
     //        width: parent.width
     //        height: parent.height
     // the collider should have its origin at the x/y of the entity (so the center is in the TopLeft)
     x: -width/2
     y: -height/2

     friction: 1.6
     restitution: 0 // restitution is bounciness - a wooden box doesn't bounce
     density: 0.2 // this makes the box more heavy

     categories: Box.Category1

     angularVelocity: utils.generateRandomValueBetween(-4, 4);

     EditableComponent {
       editableType: "Balancing"
       defaultGroup: "Box"
       properties: {
           "friction": {"min": 0, "max": 10, "stepsize": 0.1 },
           "restitution": {"min": 0, "max": 1,"stepsize": 0.1 },
           "density": {"min": 200, "max": 1000, "stepsize": 10 }
       }
Qt_Technology_Partner_RGB_475 Qt_Service_Partner_RGB_475_padded