فهرست منبع

Adjust the physics sample initial object positions & friction.

Lasse Öörni 12 سال پیش
والد
کامیت
b8882c588f
1فایلهای تغییر یافته به همراه8 افزوده شده و 5 حذف شده
  1. 8 5
      Source/Samples/11_Physics/Physics.cpp

+ 8 - 5
Source/Samples/11_Physics/Physics.cpp

@@ -110,8 +110,9 @@ void Physics::CreateScene()
     light->SetShadowCascade(CascadeParameters(10.0f, 50.0f, 200.0f, 0.0f, 0.8f));
     
     {
-        // Create the floor object at origin, 100 x 100 world units
+        // Create a floor object, 100 x 100 world units. Adjust position so that the ground is at zero Y
         Node* floorNode = scene_->CreateChild("Floor");
+        floorNode->SetPosition(Vector3(0.0f, -0.25f, 0.0f));
         floorNode->SetScale(Vector3(100.0f, 0.5f, 100.0f));
         StaticModel* floorObject = floorNode->CreateComponent<StaticModel>();
         floorObject->SetModel(cache->GetResource<Model>("Models/Box.mdl"));
@@ -140,10 +141,12 @@ void Physics::CreateScene()
                 boxObject->SetMaterial(cache->GetResource<Material>("Materials/StoneEnvMap.xml"));
                 boxObject->SetCastShadows(true);
                 
-                // Create RigidBody and CollisionShape components like above. Give the RigidBody mass to make it movable.
-                // The actual mass is not important; only the mass ratios between colliding objects are significant
+                // Create RigidBody and CollisionShape components like above. Give the RigidBody mass to make it movable
+                // and also adjust friction. The actual mass is not important; only the mass ratios between colliding 
+                // objects are significant
                 RigidBody* body = boxNode->CreateComponent<RigidBody>();
                 body->SetMass(1.0f);
+                body->SetFriction(0.75f);
                 CollisionShape* shape = boxNode->CreateComponent<CollisionShape>();
                 shape->SetBox(Vector3::ONE);
             }
@@ -245,10 +248,10 @@ void Physics::SpawnObject()
     boxObject->SetMaterial(cache->GetResource<Material>("Materials/StoneEnvMap.xml"));
     boxObject->SetCastShadows(true);
     
-    // Create physics components, use a smaller mass also and add some friction so that the object stops faster
+    // Create physics components, use a smaller mass also
     RigidBody* body = boxNode->CreateComponent<RigidBody>();
     body->SetMass(0.25f);
-    body->SetFriction(0.9f);
+    body->SetFriction(0.75f);
     CollisionShape* shape = boxNode->CreateComponent<CollisionShape>();
     shape->SetBox(Vector3::ONE);