From 2e2e2f937fa70db6a6ad627cdb8a45b73097f69a Mon Sep 17 00:00:00 2001 From: Vaclav Elias Date: Sun, 8 Dec 2024 21:48:53 +0000 Subject: [PATCH 1/5] feat: Add run-skip.pdf.bat for faster testing --- run-skip-pdf.bat | 1 + 1 file changed, 1 insertion(+) create mode 100644 run-skip-pdf.bat diff --git a/run-skip-pdf.bat b/run-skip-pdf.bat new file mode 100644 index 00000000..ca13bc38 --- /dev/null +++ b/run-skip-pdf.bat @@ -0,0 +1 @@ +powershell.exe -ExecutionPolicy Bypass -File "BuildDocs.ps1" -SkipPdfBuilding From fe0899bdbcc488f1b9ce10d90e7927269191eeae Mon Sep 17 00:00:00 2001 From: Vaclav Elias Date: Sun, 8 Dec 2024 21:58:17 +0000 Subject: [PATCH 2/5] docs: Bullet physics moved to a separate folder --- en/includes/bullet-physics-deprecation.md | 2 + en/manual/physics-bullet/characters.md | 44 +++ en/manual/physics-bullet/collider-shapes.md | 143 +++++++++ en/manual/physics-bullet/colliders.md | 93 ++++++ en/manual/physics-bullet/constraints.md | 83 +++++ .../physics-bullet/create-a-bouncing-ball.md | 127 ++++++++ .../physics-bullet/fix-physics-jitter.md | 125 ++++++++ en/manual/physics-bullet/index.md | 30 ++ .../physics-bullet/kinematic-rigid-bodies.md | 29 ++ .../media/add-character-component.png | 3 + .../add-debug-physics-shapes-component.png | 3 + .../media/add-debug-physics-shapes-script.png | 3 + .../bouncing-ball-no-trigger-first-frame.png | 3 + .../media/bouncing-ball-no-trigger.mp4 | 3 + .../bouncing-ball-no-trigger_first_frame.png | 3 + ...bouncing-ball-with-trigger-first-frame.png | 3 + ...ball-with-trigger-material-first-frame.png | 3 + .../bouncing-ball-with-trigger-material.mp4 | 3 + ...all-with-trigger-no-effect-first-frame.png | 3 + .../bouncing-ball-with-trigger-no-effect.mp4 | 3 + .../bouncing-ball-with-trigger-scaled.mp4 | 3 + ...g-ball-with-trigger-scaled_first-frame.png | 3 + .../media/bouncing-ball-with-trigger.mp4 | 3 + .../media/bouncing-ball-with-trigger.tscproj | 265 ++++++++++++++++ en/manual/physics-bullet/media/box.png | 3 + en/manual/physics-bullet/media/capsule.png | 3 + .../media/collider-shape-in-asset-view.png | 3 + .../media/collider-shape-properties.png | 3 + en/manual/physics-bullet/media/cone.png | 3 + .../physics-bullet/media/convex-hull.png | 3 + .../media/create-collider-shape-asset.png | 3 + .../media/create-collider-shape.png | 3 + en/manual/physics-bullet/media/cylinder.png | 3 + .../media/display-gizmo-options.png | 3 + .../media/display-physics-option.png | 3 + .../physics-bullet/media/display-physics.png | 3 + .../media/how-to-find-ide-icon.png | 3 + .../media/how-to-find-raycasting-sample.png | 3 + .../physics-bullet/media/infinite-plane.png | 3 + .../media/is-kinematic-checkbox.png | 3 + .../media/physics-component.png | 3 + .../media/physics-index-physics-in-stride.png | 3 + .../media/physics-index-physics-in-xenko.psd | 3 + .../physics-tutorials-added-trigger-area.png | 3 + ...s-tutorials-added-trigger-doubled-area.png | 3 + .../physics-tutorials-camera-preview.png | 3 + ...a-bouncing-ball-add-collider-component.png | 3 + ...-bouncing-ball-add-rigitbody-component.png | 3 + ...a-bouncing-ball-change-camera-position.png | 3 + ...a-bouncing-ball-change-sphere-position.png | 3 + ...-create-a-bouncing-ball-collider-shape.png | 3 + ...ouncing-ball-falling-and-bouncing-ball.gif | 3 + ...ouncing-ball-falling-and-bouncing-ball.stg | 3 + ...ls-create-a-bouncing-ball-falling-ball.gif | 3 + ...ls-create-a-bouncing-ball-falling-ball.stg | 3 + ...eate-a-bouncing-ball-higher-and-higher.gif | 3 + ...eate-a-bouncing-ball-higher-and-higher.stg | 3 + ...bouncing-ball-infinitely-bouncing-ball.gif | 3 + ...bouncing-ball-infinitely-bouncing-ball.stg | 3 + ...rials-create-a-bouncing-ball-positions.png | 3 + ...-bouncing-ball-restitution-of-a-sphere.png | 3 + ...ouncing-ball-restitution-of-the-ground.png | 3 + ...create-a-bouncing-ball-rigitbody-shape.png | 3 + ...-create-a-trigger-add-a-material-asset.png | 3 + ...create-a-trigger-add-a-model-component.png | 3 + ...tutorials-create-a-trigger-add-a-model.png | 3 + ...ials-create-a-trigger-add-async-script.png | 3 + ...e-a-trigger-add-box-shape-to-a-trigger.png | 3 + ...orials-create-a-trigger-add-new-entity.png | 3 + ...trigger-add-script-component-to-entity.png | 3 + ...s-create-a-trigger-ball-passes-trigger.gif | 3 + ...s-create-a-trigger-ball-passes-trigger.stg | 3 + ...s-create-a-trigger-is-trigger-checkbox.png | 3 + ...als-create-a-trigger-reload-assemblies.png | 3 + ...torials-create-a-trigger-scale-trigger.png | 3 + ...gger-trigger-between-ground-and-sphere.png | 3 + ...create-a-trigger-trigger-on-the-ground.png | 3 + ...hysics-tutorials-material-asset-picker.png | 3 + .../physics-tutorials-pick-an-asset-up.png | 3 + ...hysics-tutorials-rigidbody-restitution.png | 3 + .../physics-tutorials-select-cube-model.png | 3 + ...hysics-tutorials-select-material-asset.png | 3 + ...-tutorials-select-transparent-material.png | 3 + .../physics-tutorials-set-blend-alpha.png | 3 + .../media/physics-tutorials-set-blend.png | 3 + ...-tutorials-static-collider-restitution.png | 3 + .../rigid-bodies-is-kinematic-checkbox.png | 3 + .../media/rigid-bodies-kinematic-elevator.png | 3 + .../media/rigid-bodies-kinematic-elevator.psd | 3 + .../rigid-bodies-non-kinematic-elevator.png | 3 + .../rigid-bodies-non-kinematic-elevator.psd | 3 + ...bodies-static-and-rigid-body-colliders.png | 3 + ...bodies-static-and-rigid-body-colliders.psd | 3 + .../media/rigid-body-properties.png | 3 + .../media/select-asset-collider-shape.png | 3 + .../media/select-collider-shape-asset.png | 3 + .../media/select-collider-shape.png | 3 + .../physics-bullet/media/select-model.png | 3 + .../media/simulation-physics-settings.png | 3 + en/manual/physics-bullet/media/sphere.png | 3 + .../media/static-collider-properties.png | 3 + .../triggers-select-is-trigger-checkbox.png | 3 + en/manual/physics-bullet/raycasting.md | 57 ++++ en/manual/physics-bullet/rigid-bodies.md | 58 ++++ en/manual/physics-bullet/script-a-trigger.md | 292 ++++++++++++++++++ en/manual/physics-bullet/simulation.md | 29 ++ en/manual/physics-bullet/static-colliders.md | 58 ++++ en/manual/physics-bullet/triggers.md | 72 +++++ en/manual/physics-bullet/tutorials.md | 4 + en/manual/physics/index.md | 2 +- en/manual/toc.yml | 34 ++ 111 files changed, 1822 insertions(+), 1 deletion(-) create mode 100644 en/includes/bullet-physics-deprecation.md create mode 100644 en/manual/physics-bullet/characters.md create mode 100644 en/manual/physics-bullet/collider-shapes.md create mode 100644 en/manual/physics-bullet/colliders.md create mode 100644 en/manual/physics-bullet/constraints.md create mode 100644 en/manual/physics-bullet/create-a-bouncing-ball.md create mode 100644 en/manual/physics-bullet/fix-physics-jitter.md create mode 100644 en/manual/physics-bullet/index.md create mode 100644 en/manual/physics-bullet/kinematic-rigid-bodies.md create mode 100644 en/manual/physics-bullet/media/add-character-component.png create mode 100644 en/manual/physics-bullet/media/add-debug-physics-shapes-component.png create mode 100644 en/manual/physics-bullet/media/add-debug-physics-shapes-script.png create mode 100644 en/manual/physics-bullet/media/bouncing-ball-no-trigger-first-frame.png create mode 100644 en/manual/physics-bullet/media/bouncing-ball-no-trigger.mp4 create mode 100644 en/manual/physics-bullet/media/bouncing-ball-no-trigger_first_frame.png create mode 100644 en/manual/physics-bullet/media/bouncing-ball-with-trigger-first-frame.png create mode 100644 en/manual/physics-bullet/media/bouncing-ball-with-trigger-material-first-frame.png create mode 100644 en/manual/physics-bullet/media/bouncing-ball-with-trigger-material.mp4 create mode 100644 en/manual/physics-bullet/media/bouncing-ball-with-trigger-no-effect-first-frame.png create mode 100644 en/manual/physics-bullet/media/bouncing-ball-with-trigger-no-effect.mp4 create mode 100644 en/manual/physics-bullet/media/bouncing-ball-with-trigger-scaled.mp4 create mode 100644 en/manual/physics-bullet/media/bouncing-ball-with-trigger-scaled_first-frame.png create mode 100644 en/manual/physics-bullet/media/bouncing-ball-with-trigger.mp4 create mode 100644 en/manual/physics-bullet/media/bouncing-ball-with-trigger.tscproj create mode 100644 en/manual/physics-bullet/media/box.png create mode 100644 en/manual/physics-bullet/media/capsule.png create mode 100644 en/manual/physics-bullet/media/collider-shape-in-asset-view.png create mode 100644 en/manual/physics-bullet/media/collider-shape-properties.png create mode 100644 en/manual/physics-bullet/media/cone.png create mode 100644 en/manual/physics-bullet/media/convex-hull.png create mode 100644 en/manual/physics-bullet/media/create-collider-shape-asset.png create mode 100644 en/manual/physics-bullet/media/create-collider-shape.png create mode 100644 en/manual/physics-bullet/media/cylinder.png create mode 100644 en/manual/physics-bullet/media/display-gizmo-options.png create mode 100644 en/manual/physics-bullet/media/display-physics-option.png create mode 100644 en/manual/physics-bullet/media/display-physics.png create mode 100644 en/manual/physics-bullet/media/how-to-find-ide-icon.png create mode 100644 en/manual/physics-bullet/media/how-to-find-raycasting-sample.png create mode 100644 en/manual/physics-bullet/media/infinite-plane.png create mode 100644 en/manual/physics-bullet/media/is-kinematic-checkbox.png create mode 100644 en/manual/physics-bullet/media/physics-component.png create mode 100644 en/manual/physics-bullet/media/physics-index-physics-in-stride.png create mode 100644 en/manual/physics-bullet/media/physics-index-physics-in-xenko.psd create mode 100644 en/manual/physics-bullet/media/physics-tutorials-added-trigger-area.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-added-trigger-doubled-area.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-camera-preview.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-add-collider-component.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-add-rigitbody-component.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-change-camera-position.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-change-sphere-position.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-collider-shape.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-and-bouncing-ball.gif create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-and-bouncing-ball.stg create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-ball.gif create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-ball.stg create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-higher-and-higher.gif create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-higher-and-higher.stg create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-infinitely-bouncing-ball.gif create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-infinitely-bouncing-ball.stg create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-positions.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-restitution-of-a-sphere.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-restitution-of-the-ground.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-rigitbody-shape.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-material-asset.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-model-component.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-model.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-async-script.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-box-shape-to-a-trigger.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-new-entity.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-script-component-to-entity.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-ball-passes-trigger.gif create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-ball-passes-trigger.stg create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-is-trigger-checkbox.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-reload-assemblies.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-scale-trigger.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-trigger-between-ground-and-sphere.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-trigger-on-the-ground.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-material-asset-picker.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-pick-an-asset-up.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-rigidbody-restitution.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-select-cube-model.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-select-material-asset.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-select-transparent-material.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-set-blend-alpha.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-set-blend.png create mode 100644 en/manual/physics-bullet/media/physics-tutorials-static-collider-restitution.png create mode 100644 en/manual/physics-bullet/media/rigid-bodies-is-kinematic-checkbox.png create mode 100644 en/manual/physics-bullet/media/rigid-bodies-kinematic-elevator.png create mode 100644 en/manual/physics-bullet/media/rigid-bodies-kinematic-elevator.psd create mode 100644 en/manual/physics-bullet/media/rigid-bodies-non-kinematic-elevator.png create mode 100644 en/manual/physics-bullet/media/rigid-bodies-non-kinematic-elevator.psd create mode 100644 en/manual/physics-bullet/media/rigid-bodies-static-and-rigid-body-colliders.png create mode 100644 en/manual/physics-bullet/media/rigid-bodies-static-and-rigid-body-colliders.psd create mode 100644 en/manual/physics-bullet/media/rigid-body-properties.png create mode 100644 en/manual/physics-bullet/media/select-asset-collider-shape.png create mode 100644 en/manual/physics-bullet/media/select-collider-shape-asset.png create mode 100644 en/manual/physics-bullet/media/select-collider-shape.png create mode 100644 en/manual/physics-bullet/media/select-model.png create mode 100644 en/manual/physics-bullet/media/simulation-physics-settings.png create mode 100644 en/manual/physics-bullet/media/sphere.png create mode 100644 en/manual/physics-bullet/media/static-collider-properties.png create mode 100644 en/manual/physics-bullet/media/triggers-select-is-trigger-checkbox.png create mode 100644 en/manual/physics-bullet/raycasting.md create mode 100644 en/manual/physics-bullet/rigid-bodies.md create mode 100644 en/manual/physics-bullet/script-a-trigger.md create mode 100644 en/manual/physics-bullet/simulation.md create mode 100644 en/manual/physics-bullet/static-colliders.md create mode 100644 en/manual/physics-bullet/triggers.md create mode 100644 en/manual/physics-bullet/tutorials.md diff --git a/en/includes/bullet-physics-deprecation.md b/en/includes/bullet-physics-deprecation.md new file mode 100644 index 00000000..78d2548f --- /dev/null +++ b/en/includes/bullet-physics-deprecation.md @@ -0,0 +1,2 @@ +> [!WARNING] +> The Bullet physics is being phased out in Stride. We no longer plan to update or expand its features as our focus shifts to the [Bepu physics](../manual/physics/index.md). We recommend transitioning to Bepu Physics for access to the latest updates and ongoing improvements. \ No newline at end of file diff --git a/en/manual/physics-bullet/characters.md b/en/manual/physics-bullet/characters.md new file mode 100644 index 00000000..547a0c8e --- /dev/null +++ b/en/manual/physics-bullet/characters.md @@ -0,0 +1,44 @@ +# Characters + +Beginner +Designer + +**Character** colliders are used for player and script-controlled characters such as NPCs. Entities with [character components](xref:Stride.Physics.CharacterComponent) can only be moved with [SetVelocity](xref:Stride.Physics.CharacterComponent.SetVelocity\(Stride.Core.Mathematics.Vector3\)), [Jump](xref:Stride.Physics.CharacterComponent.Jump), and [Teleport](xref:Stride.Physics.CharacterComponent.Teleport\(Stride.Core.Mathematics.Vector3\)). + +## Add a character component to an entity + +1. In the **Scene Editor**, select the entity you want to add the component to. + +2. In the **Property Grid**, click **Add component** and select **Character**. + + ![Add character component](media/add-character-component.png) + +>[!Note] +> For the character collider to interact with other physics objects, you also need to set a collider shape in the collider component properties. The capsule shape is appropriate for most character colliders. For more information, see [collider shapes](collider-shapes.md). + +## Component properties + +You can adjust the character component properties in the **Property Grid**. + +Property | Description +----------------------|----------------------- +Collision Group | Sets which collision group the object belongs to. +Can Collide With | Sets which groups the object collides with. +Collision Events | If this is enabled, the object reports collision events, which you can use in scripts. It has no effect on physics. If you have no scripts using collision events for the object, disable this option to save CPU. +Can Sleep | If this is enabled, the physics engine doesn't process physics objects when they're not moving. This saves CPU. +Restitution | Sets the amount of kinetic energy lost or gained after a collision. A typical value is between 0 and 1. If the restitution property of colliding entities is 0, the entities lose all energy and stop moving immediately on impact. If the restitution is 1, they lose no energy and rebound with the same velocity they collided at. Use this to change the "bounciness" of rigidbodies. +Friction | Sets the surface friction. +Rolling Friction | Sets the rolling friction. +CCD Motion Threshold | Sets the velocity at which continuous collision detection (CCD) takes over. CCD prevents fast-moving entities (such as bullets) erroneously passing through other entities. +CCD Swept Sphere Radius | Sets the radius of the bounding sphere containing the position between two physics frames during continuous collision detection. +Gravity | For rigidbodies, sets a custom gravity vector applied if Override Gravity is selected. For characters, specifies how much gravity affects the character. +Step Height | The maximum height the character can step onto. +Fall Speed | The maximum fall speed. +Max Slope | The maximum slope the character can climb, in degrees. +Jump Speed | The amount of jump force. + +## See also + +* [Static colliders](static-colliders.md) +* [Rigidbodies](rigid-bodies.md) +* [Collider shapes](collider-shapes.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/collider-shapes.md b/en/manual/physics-bullet/collider-shapes.md new file mode 100644 index 00000000..253d2cc0 --- /dev/null +++ b/en/manual/physics-bullet/collider-shapes.md @@ -0,0 +1,143 @@ +# Collider shapes + +Beginner +Designer + +For [colliders](colliders.md) to interact, you need to set their shape in the **Property Grid**. You can specify a geometric shape, or use a collider shape asset. + +![Select a collider shape](media/select-collider-shape.png) + +Components can have multiple intersecting shapes, and don't have to match the entity model, if it has one. Each shape has additional properties including size, orientation, offset, and so on. + +## Types of collider shape + +### Box + +![Box](media/box.png) + +| Property | Description | +| -------------- |-------------| +| Is 2D | Makes the box infinitely flat in one dimension. | +| Size | The box size in XYZ values. | +| Local offset | The box position relative its entity.| +| Local rotation | The box rotation in XYZ values.| + +### Capsule + +![Capsule](media/capsule.png) + +The capsule shape is especially useful for character components, as its curved base lets the entity move to higher planes (eg when climbing staircases). + +| Property | Description | +| -------------- |-------------| +| Is 2D | Makes the capsule infinitely flat in one dimension.| +| Length | The length of the capsule.| +| Radius | The radius of the capsule.| +| Orientation | The axis along which the shape is stretched (X, Y, or Z).| +| Local offset | The capsule position relative to its entity.| +| Local rotation | The capsule rotation in XYZ values.| + +### Cone + +![Cone](media/cone.png) + +| Property | Description | +| -------------- |-------------| +| Height | The height of the cone.| +| Radius | The radius of the cone at the bottom end.| +| Orientation | The axis along which the shape is stretched (X, Y, or Z).| +| Local offset | The cone position relative to its entity.| +| Local rotation | The cone rotation in XYZ values.| + +### Cylinder + +![Cylinder](media/cylinder.png) + +| Property | Description | +| -------------- |-------------| +| Height | The length of the cylinder.| +| Radius | The radius of the cylinder.| +| Orientation | Sets the axis along which the shape is stretched (X, Y, or Z).| +| Local offset | The cylinder position relative to its entity.| +| Local rotation | The cylinder rotation in XYZ values.| + +### Sphere + +![Sphere](media/sphere.png) + +| Property | Description | +| -------------- |-------------| +| Is 2D | Makes the sphere infinitely flat in one dimension. | +| Radius | The radius of the sphere.| +| Local offset | The sphere position relative to its entity.| + +### Infinite plane + +![Infinite plane](media/infinite-plane.png) + +The infinite plane covers an infinite distance across one dimension. +Think of it like a wall or floor stretching into the distance for ever. +You can use several infinite planes together to box users in and stop them "tunneling" outside the level. + +| Property | Description | +| -------------- |-------------| +| Normal | Which vector (X, Y, or Z) is perpendicular to the plane. For example, to make an infinite floor, set the normal property to: _X:0, Y:1, Z:0_. | +| Offset | The plane position relative to its entity.| + +### Asset + +Assigns a collider shape from a collider shape asset (see **Collider shape assets** below). + +| Property | Description | +| -------------- |-------------| +| Shape | The collider shape asset used to generate the collider shape.| + +## Collider shape assets + +You can also create **collider shape assets** and use them as your collider shape. This means you can edit the collider shape asset and automatically update it in every entity that uses it. + +## Create a collider shape asset + +1. In the **Asset View** (bottom by default), click **Add asset**. + +2. Select **Physics**, then select the shape you want to create. + + ![Create collider shape asset](media/create-collider-shape-asset.png) + +Game Studio creates the new collider shape asset in the **CollisionMeshes** folder. + +![Collider shape asset in Asset View](media/collider-shape-in-asset-view.png) + +### Create a collider shape asset from a model + +This is useful to quickly create a collider shape that matches a model. + +1. In the **Asset View** (bottom by default), click **Add asset**. + +2. Select **Physics** > **Convex hull**. + + The **Select an asset** window opens. + + ![Select model](media/select-model.png) + +3. Browse to the model asset you want to create a collider shape asset from and click **OK**. + +Game Studio creates a collider shape asset from the model. + +## Use a collider shape asset + +1. Under the **static collider** or **rigidbody** properties, under **Collider Shapes**, select **Asset**. + + ![Select collider shape asset](media/select-asset-collider-shape.png) + +2. Next to **Shape**, specify the collider shape asset you want to use. + + ![Select collider shape asset](media/select-collider-shape-asset.png) + + To do this, drag the asset from the **Asset View** to the **Shape** field in the Property Grid. Alternatively, click ![Hand icon](~/manual/game-studio/media/hand-icon.png) (**Select an asset**) and browse to the asset. + +## See also + +* [Colliders](colliders.md) +* [Tutorial: Create a bouncing ball](create-a-bouncing-ball.md) +* [Tutorial: Script a trigger](script-a-trigger.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/colliders.md b/en/manual/physics-bullet/colliders.md new file mode 100644 index 00000000..c5ec0077 --- /dev/null +++ b/en/manual/physics-bullet/colliders.md @@ -0,0 +1,93 @@ +# Colliders + +Beginner +Designer + +To use physics in your project, add a **collider** component to an entity. + +Colliders define the shapes and rules of physics objects. There are three types: + +* [static colliders](static-colliders.md) don't move (eg walls, floors, heavy objects, etc) +* [rigidbodies](rigid-bodies.md) are moved around by forces such as collision and gravity (eg balls, barrels, etc) +* [characters](characters.md) are controlled by user input (ie player characters) + +You can also: + +* set the [shape of collider components](collider-shapes.md) +* make [triggers](triggers.md), and detect when objects pass through them +* constrict collider movement with [constraints](constraints.md) + +## How colliders interact + +Colliders interact according to the table below. + +| | Kinematic objects | Kinematic triggers | Rigidbody colliders | Rigidbody triggers | Static colliders | Static triggers +|---|-------------|---------------------|-------------|---------------------|----------|------------------ +| Kinematic objects | Collisions | Collisions | Collisions and dynamic| Collisions | Collisions | Collisions +| Kinematic triggers | Collisions | Collisions |Collisions | Collisions | Collisions | Collisions +| Rigidbody colliders | Collisions and dynamic | Collisions | Collisions and dynamic | Collisions | Collisions and dynamic| Collisions +| Rigidbody triggers | Collisions | Collisions | Collisions | Collisions | Collisions | Collisions +| Static colliders| Collisions| Collisions| Collisions and dynamic | Collisions | Nothing | Nothing +|Static triggers | Collisions | Collisions | Collisions | Collisions | Nothing | Nothing + +* "Collisions" refers to collision information and events only. This means the collision is detected in the code, but the objects don't bump into each other (no dynamic response). + +* "Dynamic" means both collision information and events, plus dynamic response (ie the colliders bump into each other instead of passing through). + +For example, rigidbody colliders dynamically collide with static colliders (ie bump into them). However, no objects dynamically collide with triggers; collisions are detected in the code, but objects simply pass through. + +## Show colliders in the Scene Editor + +By default, colliders are invisible in the Scene Editor. To show them: + +1. In the Game Studio toolbar, in the top right, click the **Display gizmo options** icon. + + ![Display gizmo options](media/display-gizmo-options.png) + +2. Select **Physics**. + + ![Display physics option](media/display-physics-option.png) + +The Scene Editor displays collider shapes. + +![Display physics](media/display-physics.png) + +## Show colliders at runtime + +You can make colliders visible at runtime, which is useful for debugging problems with physics. To do this, use: + +`` +this.GetSimulation().ColliderShapesRendering = true; +`` + +> [!Note] +> Collider shapes for infinite planes are always invisible. + +### Keyboard shortcut + +To show or hide collider shapes at runtime with a keyboard shortcut, use the **Debug physics shapes** script. + +1. In the **Asset View**, click **Add asset**. + +2. Select **Scripts** > **Debug physics shapes**. + + ![Add debug physics shape script](media/add-debug-physics-shapes-script.png) + +3. In the Game Studio toolbar, click **Reload assemblies and update scripts**. + + ![Reload assemblies](../platforms/media/reload-assemblies.png) + +4. Add the **Debug physics shapes** script as a component to an entity in the scene. It doesn't matter which entity. + + ![Add debug physics shapes script component](media/add-debug-physics-shapes-component.png) + +The script binds the collider shape visibility to **Left Shift + Left Ctrl + P**, so you can turn it on and off at runtime. You can edit the script to bind a different key combination. + +## See also + +* [Collider shapes](collider-shapes.md) +* [Static colliders](static-colliders.md) +* [Rigidbodies](rigid-bodies.md) +* [Kinematic rigidbodies](kinematic-rigid-bodies.md) +* [Simulation](simulation.md) +* [Physics tutorials](tutorials.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/constraints.md b/en/manual/physics-bullet/constraints.md new file mode 100644 index 00000000..9c6ee4c7 --- /dev/null +++ b/en/manual/physics-bullet/constraints.md @@ -0,0 +1,83 @@ +# Constraints + +[!INCLUDE [stride-studio-note](../../includes/under-construction-note.md)] + +Advanced +Programmer + +**Constraints** restrict rigidbodies to certain movement patterns. For example, a realistic knee joint can only move along one axis and can't bend forwards. + +Constraints can either link two rigidbodies together, or link a single rigidbody to a point in the world. They allow for interaction and dependency among rigidbodies. + +There are six [types of constraints](xref:Stride.Physics.ConstraintTypes): + +* hinges +* gears +* sliders +* cones (twist and turn) +* point to point (fixed distance between two colliders) +* six degrees of freedom + +For a demonstration of the different constraints, load the **PhysicsSample** sample project. + +## Create a constraint + +> [!Note] +> Currently, you can only use constraints from scripts. + +To create a constraint, use the [Simulation](xref:Stride.Physics.Simulation) static method [CreateConstraint](xref:Stride.Physics.Simulation.CreateConstraint\(Stride.Physics.ConstraintTypes,Stride.Physics.RigidbodyComponent,Stride.Core.Mathematics.Matrix,System.Boolean\)): + +```cs +CreateConstraint(ConstraintTypes type, RigidbodyComponent rigidBodyA, Matrix frameA, bool useReferenceFrameA); +``` + +This links [RigidBodyA](xref:Stride.Physics.Constraint.RigidBodyA) to the world at its current location. +The boolean [useReferenceFrameA](xref:Stride.Physics.Simulation.CreateConstraint\(Stride.Physics.ConstraintTypes,Stride.Physics.RigidbodyComponent,Stride.Core.Mathematics.Matrix,System.Boolean\)) specifies which coordinate system the limit is applied to (either [RigidBodyA](xref:Stride.Physics.Constraint.RigidBodyA) or the world). + +> [!Note] +> * In the case of [ConstraintTypes.Point2Point](xref:Stride.Physics.ConstraintTypes), the frame represents a pivot in A. Only the translation vector is considered. [useReferenceFrameA](xref:Stride.Physics.Simulation.CreateConstraint\(Stride.Physics.ConstraintTypes,Stride.Physics.RigidbodyComponent,Stride.Core.Mathematics.Matrix,System.Boolean\)) is ignored. +> * In the case of [ConstraintTypes.Hinge](xref:Stride.Physics.ConstraintTypes), the frame represents a pivot in A and Axis in A. This is because the hinge allows only a limited angle of rotation between the rigidbody and the world. +> * In the case of [ConstraintTypes.ConeTwist](xref:Stride.Physics.ConstraintTypes), [useReferenceFrameA](xref:Stride.Physics.Simulation.CreateConstraint\(Stride.Physics.ConstraintTypes,Stride.Physics.RigidbodyComponent,Stride.Core.Mathematics.Matrix,System.Boolean\)) is ignored. +> * [ConstraintTypes.Gear](xref:Stride.Physics.ConstraintTypes) needs two rigidbodies to be created. This function will throw an exception. + +```cs +CreateConstraint(ConstraintTypes type, RigidbodyComponent rigidBodyA, RigidbodyComponent rigidBodyB, Matrix frameA, Matrix frameB, bool useReferenceFrameA) +``` + +This method links [RigidBodyA](xref:Stride.Physics.Constraint.RigidBodyA) to [RigidBodyB](xref:Stride.Physics.Constraint.RigidBodyB). + +> [!Note] +> * In the case of [ConstraintTypes.Point2Point](xref:Stride.Physics.ConstraintTypes), the frame represents a pivot in A or B. Only the translation vector is considered. [useReferenceFrameA](xref:Stride.Physics.Simulation.CreateConstraint\(Stride.Physics.ConstraintTypes,Stride.Physics.RigidbodyComponent,Stride.Core.Mathematics.Matrix,System.Boolean\)) is ignored. +> * In the case of [ConstraintTypes.Hinge](xref:Stride.Physics.ConstraintTypes) the frame represents pivot in A/B and Axis in A/B. This is because the hinge allows only a limited angle of rotation between the rigidbody and the world in this case. +> * In the case of [ConstraintTypes.ConeTwist](xref:Stride.Physics.ConstraintTypes), [useReferenceFrameA](xref:Stride.Physics.Simulation.CreateConstraint\(Stride.Physics.ConstraintTypes,Stride.Physics.RigidbodyComponent,Stride.Core.Mathematics.Matrix,System.Boolean\)) is ignored. +> * In the case of [ConstraintTypes.Gear](xref:Stride.Physics.ConstraintTypes), [useReferenceFrameA](xref:Stride.Physics.Simulation.CreateConstraint\(Stride.Physics.ConstraintTypes,Stride.Physics.RigidbodyComponent,Stride.Core.Mathematics.Matrix,System.Boolean\)) is ignored. The frame just represents the axis either in A or B; only the translation vector (which should contain the axis) is used. + +The boolean [useReferenceFrameA](xref:Stride.Physics.Simulation.CreateConstraint\(Stride.Physics.ConstraintTypes,Stride.Physics.RigidbodyComponent,Stride.Core.Mathematics.Matrix,System.Boolean\)) determines which coordinate system ([RigidBodyA](xref:Stride.Physics.Constraint.RigidBodyA) or [RigidBodyB](xref:Stride.Physics.Constraint.RigidBodyB)) the limits are applied to. + +## Add constraints to the simulation + +After you create a constraint, add it to the simulation from a script by calling: + +```cs +this.GetSimulation().AddConstraint(constraint); +``` + +or: + +```cs +var disableCollisionsBetweenLinkedBodies = true; +this.GetSimulation().AddConstraint(constraint, disableCollisionsBetweenLinkedBodies); +``` + +The parameter [disableCollisionsBetweenLinkedBodies](xref:Stride.Physics.Simulation.AddConstraint\(Stride.Physics.Constraint,System.Boolean\)) + stops linked bodies colliding with each other. + +Likewise, to remove a constraint from the simulation, use: + +```cs +this.GetSimulation().RemoveConstraint(constraint); +``` + +## See also + +* [Colliders](colliders.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/create-a-bouncing-ball.md b/en/manual/physics-bullet/create-a-bouncing-ball.md new file mode 100644 index 00000000..0f11d1a7 --- /dev/null +++ b/en/manual/physics-bullet/create-a-bouncing-ball.md @@ -0,0 +1,127 @@ +# Create a bouncing ball + +Beginner +Designer + +In this tutorial, we'll use the [static collider and rigidbody components](colliders.md) to create a ball bouncing on a floor. + +>[!Note] +>The screenshots and videos in this tutorial were made using an earlier version of Stride, so some parts of the UI, and the default skybox and sphere, might look different from your version. + +## 1. Create a new project + +Start a **New Game** project. + +The default scene comes pre-loaded with five entities: Camera, Directional light, Skybox, Ground, and Sphere. We're going to add physics components to the **Ground** and **Sphere** entities. + +## 2. Add a static collider + +Let's begin by adding a [static collider](static-colliders.md) component to the Ground entity. A static collider is a physics object that doesn't move. Typical static colliders are walls, floors, large rocks, and so on. In this case, the static collider will give the ball something to bounce on. + +1. Select the **Ground** entity. + +2. In the **Property Grid**, click **Add component** and select **Static Collider**. + + ![Add Static collider component](media/physics-tutorials-create-a-bouncing-ball-add-collider-component.png) + +3. Set the [collider shape](collider-shapes.md) to match the shape of the entity. To do this, in the **Property Grid**, expand the **Static Collider component** to view its properties. + +4. Next to **Collider Shapes**, click ![Green plus button](~/manual/game-studio/media/green-plus-icon.png) (**Add**) and select **Infinite Plane**. + + ![Add Static collider component](media/physics-tutorials-create-a-bouncing-ball-collider-shape.png) + + This adds a static collider to the ground, so the ball has something to bounce off. + +## 3. Add a rigidbody collider + +Next, we'll add a [rigidbody](rigid-bodies.md) component to the sphere. A rigidbody is a physics object that moves — perfect for our bouncing ball. + +1. In the **Scene Editor**, select the **Sphere** entity. + +2. In the **Property Grid**, click **Add component** and select **Rigidbody**. + + ![Add Static collider component](media/physics-tutorials-create-a-bouncing-ball-add-rigitbody-component.png) + +3. Just like we did for the Ground entity, set the [collider shape](collider-shapes.md) to match the entity. To do this, in the **Property Grid**, expand the **Rigidbody component** to view its properties. + +4. Next to **Collider Shapes**, click ![Green plus button](~/manual/game-studio/media/green-plus-icon.png) (**Add**) and select **Sphere**. + + ![Add Static collider component](media/physics-tutorials-create-a-bouncing-ball-rigitbody-shape.png) + +## 4. Position the ball + +Let's position the sphere so it starts in mid-air and falls to the ground. + +1. Select the **Sphere** entity. + +2. In the **Property Grid**, under **Transform**, set the **Position** to: _X: 0, Y: 6, Z: 0_ + + ![Change Sphere position](media/physics-tutorials-create-a-bouncing-ball-change-sphere-position.png) + + This places the ball in mid-air above the ground. + +## 5. Position the camera + +Now we'll move the camera to give us a good view of the scene. + +1. Select the **Camera** entity. + +2. In the **Property Grid**, under **Transform**, set the **Position** to: _X: -12, Y: 7, Z: 9_ + +3. Set the **Rotation** to: _X: -20, Y: -50, Z: 0_ + + ![Change camera position](media/physics-tutorials-create-a-bouncing-ball-change-camera-position.png) + + You can see preview the camera view in the **Camera preview** in the bottom-right of the Scene Editor. + + ![Camera preview](media/physics-tutorials-camera-preview.png) + +## 6. Set the restitution + +Let's see what the scene looks like so far. To run the project, press **F5**. + +![Falling ball](media/physics-tutorials-create-a-bouncing-ball-falling-ball.gif) + +The Sphere (rigidbody) responds to gravity and falls. The Ground (static collider) breaks its fall. But there's no bounce effect yet. + +To create a bounce effect, we need to change the **restitution** of the Sphere and the Ground. This simulates the [coefficient of restitution (Wikipedia)](https://en.wikipedia.org/wiki/Coefficient_of_restitution) of real-world collisions. + +* If the restitution property of colliding entities is 0, the entities lose all energy and stop moving immediately on impact. +* If the restitution is 1, they lose no energy and rebound with the same velocity at which they collided. +* If the restitution is higher than 1, they gain energy and rebound with *more* velocity. + +As a rule, to create realistic collisions, set the restitution between 0 and 1. + +Let's set the restitution of our Sphere and Ground entities. + +1. Select the **Sphere** entity. + +2. In the **Property Grid**, under **Rigidbody**, set the **Restitution** to 0.8. + + ![Set restitution for a sphere](media/physics-tutorials-create-a-bouncing-ball-restitution-of-a-sphere.png) + +3. Select the **Ground** entity. + +4. In the **Property Grid**, under **Static Collider**, set the **Restitution** to 0.5. + + ![Set restitution for the ground](media/physics-tutorials-create-a-bouncing-ball-restitution-of-the-ground.png) + +To see how this changes the physics, run the project again (**F5**). This time, the ball bounces on the ground before coming to a stop: + +![Bouncing effect](media/physics-tutorials-create-a-bouncing-ball-falling-and-bouncing-ball.gif) + +Try changing the restitution of both entities to 1. This creates a ball that bounces indefinitely, losing no energy: + +![Infinite bounce](media/physics-tutorials-create-a-bouncing-ball-infinitely-bouncing-ball.gif) + +Set the restitution to 1.1 and the ball bounces a little higher each time: + +![Ball bouncing higher](media/physics-tutorials-create-a-bouncing-ball-higher-and-higher.gif) + +Now we've created a bouncing ball, we can use it to learn about triggers. For more information, see the [Script a trigger](script-a-trigger.md) tutorial. + +## See also + +* [Colliders](colliders.md) +* [Collider shape](collider-shapes.md) +* [Tutorial: Script a trigger](script-a-trigger.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/fix-physics-jitter.md b/en/manual/physics-bullet/fix-physics-jitter.md new file mode 100644 index 00000000..be437132 --- /dev/null +++ b/en/manual/physics-bullet/fix-physics-jitter.md @@ -0,0 +1,125 @@ +# Fix physics jitter + +Beginner +Programmer + +In Stride, there is no default smoothing applied to entities that are attached to physics entities. This can cause noticeable jitter, especially if the camera is attached to a character component. + +In this tutorial, we will explore how to add smoothing to an entity using a SyncScript. + +> [!Note] +> You can also decrease the `FixedTimeStep` in the physics settings configuration to achieve more accurate physics simulations. For example, changing it from `0.016667` to `0.008` will increase accuracy but at the cost of higher CPU usage. + +## Code to handle smoothing between two entities +The following code is all that's needed to smoothly attach two entities. Ensure that you unparent the entity you are trying to smooth, otherwise the transform processor will override this script. + +```cs +[ComponentCategory("Utils")] +[DataContract("SmoothFollowAndRotate")] +public class SmoothFollowAndRotate : SyncScript +{ + public Entity EntityToFollow { get; set; } + public float Speed { get; set; } = 1; + + public override void Update() + { + var deltaTime = (float)Game.UpdateTime.Elapsed.TotalSeconds; + var currentPosition = Entity.Transform.Position; + var currentRotation = Entity.Transform.Rotation; + + var lerpSpeed = 1f - MathF.Exp(-Speed * deltaTime); + + EntityToFollow.Transform.GetWorldTransformation(out var otherPosition, out var otherRotation, out var _); + + var newPosition = Vector3.Lerp(currentPosition, otherPosition, lerpSpeed); + Entity.Transform.Position = newPosition; + + Quaternion.Slerp(ref currentRotation, ref otherRotation, lerpSpeed, out var newRotation); + Entity.Transform.Rotation = newRotation; + } +} +``` + +## Example Usage + +This example demonstrates modifications to the **First Person Shooter** template to integrate smooth camera movement. + +1. Detach the camera from the physics entity. +2. Remove the FPS camera script from the camera. +3. Create a new entity as a child of the character body. +4. Add the FPS script to the new entity. +5. Adjust any code that directly references the `CameraComponent` to reflect these changes. + +### PlayerInput.cs + +Change + +```cs +public CameraComponent Camera { get; set; } +``` +to + +```cs +public Entity Camera { get; set; } +``` + +### Utils.cs + +Change + +```cs +CameraComponent camera +``` +to + +```cs +Entity camera, +``` + +and change + +```cs +camera.Update(); +var inverseView = Matrix.Invert(camera.ViewMatrix); +``` + +to + +```cs +var inverseView = camera.Transform.WorldMatrix; +``` + +### FpsCamera.cs + +Remove + +```cs +/// +/// Gets the camera component used to visualized the scene. +/// +private Entity Component; +``` +and change + +```cs +private void UpdateViewMatrix() +{ + var camera = Component; + if (camera == null) return; + var rotation = Quaternion.RotationYawPitchRoll(Yaw, Pitch0); + + Entity.Transform.Rotation = rotation; +} +``` +to + +```cs +private void UpdateViewMatrix() +{ + var rotation = Quaternion.RotationYawPitchRoll(Yaw, Pitch, 0); + + Entity.Transform.Rotation = rotation; +} +``` + +That should be all that is needed to see the smoothing in action as a before and after. You can see the original issue in the Stride GitHub [here](https://github.com/stride3d/stride/issues/2216) if you need to find more info on the problem. diff --git a/en/manual/physics-bullet/index.md b/en/manual/physics-bullet/index.md new file mode 100644 index 00000000..43662441 --- /dev/null +++ b/en/manual/physics-bullet/index.md @@ -0,0 +1,30 @@ +# Bullet Physics + +[!INCLUDE [bullet-deprecation](../../includes/bullet-physics-deprecation.md)] + +![Physics in Stride](media/physics-index-physics-in-stride.png) + +Stride simulates real-world physics such as gravity and collisions. This section explains how physics components work, how to add them to your project, and how to use them with scripts. + +## In this section + +* [Colliders](colliders.md): Create physics by adding collider components to entities + * [Static colliders](static-colliders.md): Colliders that don't move + * [Rigidbodies](rigid-bodies.md): Moving objects, affected by gravity and collisions + * [Kinematic rigidbodies](kinematic-rigid-bodies.md): Physics objects controlled by scripts + * [Characters](characters.md): Colliders for characters (such as player characters and NPCs) + * [Collider shapes](collider-shapes.md): Define the shape of collider components + * [Triggers](triggers.md): Use triggers to detect passing objects + * [Constraints](constraints.md): Create appealing and realistic physics +* [Raycasting](raycasting.md): Trace intersecting objects +* [Simulation](simulation.md): How Stride controls physics + +### Tutorials + +* [Create a bouncing ball](create-a-bouncing-ball.md): Use the static collider and rigidbody components to create a ball bouncing on a floor +* [Script a trigger](script-a-trigger.md): Create a trigger that doubles the size of a ball when the ball passes through it + +## Additional physics resources + +- Stride integrates the open-source [Bullet Physics](http://bulletphysics.org/wordpress/) engine. For comprehensive details, consult the [Bullet User Manual](https://github.com/bulletphysics/bullet3/blob/master/docs/Bullet_User_Manual.pdf) +- For solutions on mitigating physics jitter, refer to our guide on [Fixing Physics Jitter](fix-physics-jitter.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/kinematic-rigid-bodies.md b/en/manual/physics-bullet/kinematic-rigid-bodies.md new file mode 100644 index 00000000..d970c312 --- /dev/null +++ b/en/manual/physics-bullet/kinematic-rigid-bodies.md @@ -0,0 +1,29 @@ +# Kinematic rigidbodies + +Sometimes you want to move [rigidbodies](rigid-bodies.md) in a specific way rather than have other objects move them. For example, you might control an elevator with a script, via its `Transform` property, rather than have other objects push and pull it. This is a **kinematic** rigidbody. + +Although kinematic rigidbodies aren't moved by physics, other objects can still collide with them. For example, in the case of the elevator, objects placed inside won't fall through the elevator floor. + +![Kinematic elevator](media/rigid-bodies-kinematic-elevator.png) + +## Make a kinematic rigidbody + +1. Select the entity you want to be a kinematic rigidbody. + +2. In the **Property Grid**, under the **Rigidbody** component properties, select **Is kinematic**. + + ![Check 'Is kinematic'](media/rigid-bodies-is-kinematic-checkbox.png) + +## Scripting kinematic rigidbodies + +You can script the **Is kinematic** property to turn on and off on certain events. For example, imagine our kinematic elevator's suspension cables are cut. You can script the **Is kinematic** property to change to *false* when this happens. The elevator becomes subject to the usual forces of physics, and falls. + +![Non-kinematic elevator](media/rigid-bodies-non-kinematic-elevator.png) + +## See also + +* [Rigidbodies](rigid-bodies.md) +* [Static colliders](static-colliders.md) +* [Characters](characters.md) +* [Collider shapes](collider-shapes.md) +* [Triggers](triggers.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/media/add-character-component.png b/en/manual/physics-bullet/media/add-character-component.png new file mode 100644 index 00000000..cf075b69 --- /dev/null +++ b/en/manual/physics-bullet/media/add-character-component.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:784d68a22e6e6eb2c427814e4b6a55a356036b4ef1eb2bc8e76896cc30b90641 +size 19572 diff --git a/en/manual/physics-bullet/media/add-debug-physics-shapes-component.png b/en/manual/physics-bullet/media/add-debug-physics-shapes-component.png new file mode 100644 index 00000000..eafbaffe --- /dev/null +++ b/en/manual/physics-bullet/media/add-debug-physics-shapes-component.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2aac9094b2d5d9494b812df32b674abe7f415875ee70ce5ccfc92f1c3fe81717 +size 21966 diff --git a/en/manual/physics-bullet/media/add-debug-physics-shapes-script.png b/en/manual/physics-bullet/media/add-debug-physics-shapes-script.png new file mode 100644 index 00000000..2ec49131 --- /dev/null +++ b/en/manual/physics-bullet/media/add-debug-physics-shapes-script.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2b7bf22b3a83d2963821416439a592206debf403e86c0d04dce8387f79ceb22 +size 26018 diff --git a/en/manual/physics-bullet/media/bouncing-ball-no-trigger-first-frame.png b/en/manual/physics-bullet/media/bouncing-ball-no-trigger-first-frame.png new file mode 100644 index 00000000..bccbb758 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-no-trigger-first-frame.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:381b3e3a91e60535ea0819b66a3c48385bfd90d6c6e04b63578abcb15f351579 +size 25344 diff --git a/en/manual/physics-bullet/media/bouncing-ball-no-trigger.mp4 b/en/manual/physics-bullet/media/bouncing-ball-no-trigger.mp4 new file mode 100644 index 00000000..4d743d91 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-no-trigger.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bb2abdd903a53027a2b3c73b9e631af1a114470c8d0e4543ed96d2069e8a821 +size 29765 diff --git a/en/manual/physics-bullet/media/bouncing-ball-no-trigger_first_frame.png b/en/manual/physics-bullet/media/bouncing-ball-no-trigger_first_frame.png new file mode 100644 index 00000000..bccbb758 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-no-trigger_first_frame.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:381b3e3a91e60535ea0819b66a3c48385bfd90d6c6e04b63578abcb15f351579 +size 25344 diff --git a/en/manual/physics-bullet/media/bouncing-ball-with-trigger-first-frame.png b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-first-frame.png new file mode 100644 index 00000000..cba45c59 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-first-frame.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b85766c0b24292332755b80c59cd7bdc28d058adc99454bc06be0ee839696598 +size 27370 diff --git a/en/manual/physics-bullet/media/bouncing-ball-with-trigger-material-first-frame.png b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-material-first-frame.png new file mode 100644 index 00000000..eb131ba9 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-material-first-frame.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a301fab52a515775079a60c5bde2824fd92e05ee806a73f9abb40a99562a678c +size 27613 diff --git a/en/manual/physics-bullet/media/bouncing-ball-with-trigger-material.mp4 b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-material.mp4 new file mode 100644 index 00000000..965a34c1 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-material.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b052bb922f41a0f7d022d21b4f6b68c92205027198a2daeb224c85964f225184 +size 34952 diff --git a/en/manual/physics-bullet/media/bouncing-ball-with-trigger-no-effect-first-frame.png b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-no-effect-first-frame.png new file mode 100644 index 00000000..7c82212c --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-no-effect-first-frame.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c67929e4458b15278df35abd5f0eb382b87c7ba579a9d0b46ddd209e60a0ca3d +size 26977 diff --git a/en/manual/physics-bullet/media/bouncing-ball-with-trigger-no-effect.mp4 b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-no-effect.mp4 new file mode 100644 index 00000000..71317bb5 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-no-effect.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab56ed207f59696a69c7a730c4ef82de437dc8e6b35b33e7e189beb242042f63 +size 36175 diff --git a/en/manual/physics-bullet/media/bouncing-ball-with-trigger-scaled.mp4 b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-scaled.mp4 new file mode 100644 index 00000000..6e21fc63 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-scaled.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b0503c1b35dde050a5c0dccf84e724ef0ade049f22819bbb495fd4b20a08759 +size 44265 diff --git a/en/manual/physics-bullet/media/bouncing-ball-with-trigger-scaled_first-frame.png b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-scaled_first-frame.png new file mode 100644 index 00000000..3b083fa7 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-with-trigger-scaled_first-frame.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e8f7873c4b4e62de1646b39d0e8b4c2221196771aa3ecf6be55d2d4adfd6793 +size 27137 diff --git a/en/manual/physics-bullet/media/bouncing-ball-with-trigger.mp4 b/en/manual/physics-bullet/media/bouncing-ball-with-trigger.mp4 new file mode 100644 index 00000000..a8dfc761 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-with-trigger.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1acd1d068054296962752a39025f495894d9bded705f620918c914b052241c93 +size 34646 diff --git a/en/manual/physics-bullet/media/bouncing-ball-with-trigger.tscproj b/en/manual/physics-bullet/media/bouncing-ball-with-trigger.tscproj new file mode 100644 index 00000000..20c6b4d1 --- /dev/null +++ b/en/manual/physics-bullet/media/bouncing-ball-with-trigger.tscproj @@ -0,0 +1,265 @@ +{ + "title" : "", + "description" : "", + "author" : "", + "width" : 360.0, + "height" : 456.0, + "version" : "0.5", + "editRate" : 30, + "authoringClientName" : { + "name" : "Camtasia Studio", + "platform" : "Windows", + "version" : "9.0" + }, + "sourceBin" : [ + { + "id" : 1, + "src" : "C:\\Users\\james.duffy\\Documents\\Camtasia Studio\\Rec 02-16-17 4.trec", + "rect" : [0, 0, 360, 456], + "lastMod" : "20170216T024232", + "sourceTracks" : [ + { + "range" : [0, 236], + "type" : 0, + "editRate" : 30, + "trackRect" : [0, 0, 360, 456], + "sampleRate" : 30, + "bitDepth" : 0, + "numChannels" : 0, + "metaData" : "Rec 02-16-17 4.trec;" + } + ] + }, + { + "id" : 2, + "src" : "C:\\Users\\james.duffy\\Documents\\Camtasia Studio\\Rec 02-16-17 5.trec", + "rect" : [0, 0, 360, 456], + "lastMod" : "20170216T025610", + "sourceTracks" : [ + { + "range" : [0, 187], + "type" : 0, + "editRate" : 30, + "trackRect" : [0, 0, 360, 456], + "sampleRate" : 30, + "bitDepth" : 0, + "numChannels" : 0, + "metaData" : "Rec 02-16-17 5.trec;" + } + ] + }, + { + "id" : 3, + "src" : "C:\\Users\\james.duffy\\Documents\\Camtasia Studio\\Rec 02-16-17 7.trec", + "rect" : [0, 0, 360, 456], + "lastMod" : "20170216T025745", + "sourceTracks" : [ + { + "range" : [0, 390], + "type" : 0, + "editRate" : 30, + "trackRect" : [0, 0, 360, 456], + "sampleRate" : 30, + "bitDepth" : 0, + "numChannels" : 0, + "metaData" : "Rec 02-16-17 7.trec;" + } + ] + }, + { + "id" : 4, + "src" : "C:\\Users\\james.duffy\\Documents\\Camtasia Studio\\Rec 02-16-17 8.trec", + "rect" : [0, 0, 360, 456], + "lastMod" : "20170216T025911", + "sourceTracks" : [ + { + "range" : [0, 401], + "type" : 0, + "editRate" : 30, + "trackRect" : [0, 0, 360, 456], + "sampleRate" : 30, + "bitDepth" : 0, + "numChannels" : 0, + "metaData" : "Rec 02-16-17 8.trec;" + } + ] + }, + { + "id" : 5, + "src" : "C:\\Users\\james.duffy\\Documents\\Camtasia Studio\\Rec 02-16-17 9.trec", + "rect" : [0, 0, 360, 456], + "lastMod" : "20170216T035323", + "sourceTracks" : [ + { + "range" : [0, 185], + "type" : 0, + "editRate" : 30, + "trackRect" : [0, 0, 360, 456], + "sampleRate" : 30, + "bitDepth" : 0, + "numChannels" : 0, + "metaData" : "Rec 02-16-17 9.trec;" + } + ] + } + ], + "timeline" : { + "id" : 6, + "sceneTrack" : { + "scenes" : [ + { + "duration" : 2.3, + "title" : "", + "type" : "", + "csml" : { + "tracks" : [ + { + "trackIndex" : 0, + "medias" : [ + { + "id" : 7, + "_type" : "ScreenVMFile", + "src" : 5, + "trackNumber" : 0, + "attributes" : { + "ident" : "Rec 02-16-17 9" + }, + "parameters" : { + "sourceCrop0" : { + "type" : "double", + "defaultValue" : 0.0, + "interp" : "linr" + }, + "sourceCrop1" : { + "type" : "double", + "defaultValue" : 0.0, + "interp" : "linr" + }, + "sourceCrop2" : { + "type" : "double", + "defaultValue" : 0.0, + "interp" : "linr" + }, + "sourceCrop3" : { + "type" : "double", + "defaultValue" : 0.0, + "interp" : "linr" + }, + "geometryCrop0" : { + "type" : "double", + "defaultValue" : 0.0, + "interp" : "linr" + }, + "geometryCrop1" : { + "type" : "double", + "defaultValue" : 0.0, + "interp" : "linr" + }, + "geometryCrop2" : { + "type" : "double", + "defaultValue" : 0.0, + "interp" : "linr" + }, + "geometryCrop3" : { + "type" : "double", + "defaultValue" : 0.0, + "interp" : "linr" + }, + "opacity" : { + "type" : "double", + "defaultValue" : 1.0, + "interp" : "linr" + }, + "cursorScale" : { + "type" : "double", + "defaultValue" : 1.0, + "interp" : "linr" + }, + "cursorOpacity" : { + "type" : "double", + "defaultValue" : 1.0, + "interp" : "linr" + } + }, + "effects" : [ + + ], + "start" : 0, + "duration" : 69, + "mediaStart" : 0, + "mediaDuration" : 69, + "scalar" : 1, + "metadata" : { + "AutoAppliedSmartFocus" : "False", + "WinSubProjectDisplayName" : "", + "clipSpeedAttribute" : false + }, + "animationTracks" : { + + } + } + ] + }, + { + "trackIndex" : 1, + "medias" : [ + ] + } + ] + } + } + ] + }, + "trackAttributes" : [ + { + "ident" : "", + "audioMuted" : false, + "videoHidden" : false, + "metadata" : { + "IsLocked" : "False", + "WinTrackHeight" : "56" + } + }, + { + "ident" : "", + "audioMuted" : false, + "videoHidden" : false, + "metadata" : { + "IsLocked" : "False", + "WinTrackHeight" : "56" + } + } + ], + "captionAttributes" : { + "enabled" : true, + "fontName" : "Arial", + "fontSize" : 13, + "backgroundColor" : [ 0, 0, 0, 191], + "foregroundColor" : [ 255, 255, 255, 255], + "lang" : "en", + "alignment" : 0, + "defaultFontSize" : true, + "opacity" : 0.5, + "backgroundEnabled" : true, + "backgroundOnlyAroundText" : true + }, + "backgroundColor" : [ 0, 0, 0, 255] + }, + "metadata" : { + "AutoSaveFile" : "C:\\Users\\james.duffy\\AppData\\Local\\TechSmith\\Camtasia Studio\\9.0\\Auto-Saves\\bouncing-ball-with-trigger4b1f53b.autosave.tscproj", + "CanvasZoom" : 100, + "Date" : "2017-02-16 11:41:58 AM", + "IsAutoSave" : "0", + "Language" : "ENU", + "ProfileName" : "Stride documentation videos", + "ProjectDimensionsChanged" : "1", + "Title" : "bouncing-ball-with-trigger", + "audioNarrationNotes" : "", + "calloutStyle" : "Basic", + "canvasDetached" : "False", + "canvasPositionHeight" : "0", + "canvasPositionLeft" : "0", + "canvasPositionTop" : "0", + "canvasPositionWidth" : "0" + } +} diff --git a/en/manual/physics-bullet/media/box.png b/en/manual/physics-bullet/media/box.png new file mode 100644 index 00000000..fdff293d --- /dev/null +++ b/en/manual/physics-bullet/media/box.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f82f367e5616277c042c183e010943f5079ba742d4b1ade189426c31e350147 +size 2555 diff --git a/en/manual/physics-bullet/media/capsule.png b/en/manual/physics-bullet/media/capsule.png new file mode 100644 index 00000000..00cd4fcc --- /dev/null +++ b/en/manual/physics-bullet/media/capsule.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0811e102ffa25651501a6e56d89e254762a30d3f52bcf646a6ee810aa3f6d726 +size 2846 diff --git a/en/manual/physics-bullet/media/collider-shape-in-asset-view.png b/en/manual/physics-bullet/media/collider-shape-in-asset-view.png new file mode 100644 index 00000000..af100c5d --- /dev/null +++ b/en/manual/physics-bullet/media/collider-shape-in-asset-view.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca8b300c63c72db4c18189cc79dee38d7986a8b682f8cfbb8131389e9baa2fb2 +size 23441 diff --git a/en/manual/physics-bullet/media/collider-shape-properties.png b/en/manual/physics-bullet/media/collider-shape-properties.png new file mode 100644 index 00000000..9140f7d2 --- /dev/null +++ b/en/manual/physics-bullet/media/collider-shape-properties.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a664a5c561678972e96b12a32b626b000c4dd54c2881fe9b1677ea00ba45f41 +size 55430 diff --git a/en/manual/physics-bullet/media/cone.png b/en/manual/physics-bullet/media/cone.png new file mode 100644 index 00000000..c9244732 --- /dev/null +++ b/en/manual/physics-bullet/media/cone.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:406eae240866525211f4ec96afa7f897aaf706bab17b4343c550708c8d89a454 +size 1786 diff --git a/en/manual/physics-bullet/media/convex-hull.png b/en/manual/physics-bullet/media/convex-hull.png new file mode 100644 index 00000000..b671f2e1 --- /dev/null +++ b/en/manual/physics-bullet/media/convex-hull.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:641b89c88b08bbefca4d4ba1fcc8fc45ff607b896d1476667029d6c7b1518e5f +size 2662 diff --git a/en/manual/physics-bullet/media/create-collider-shape-asset.png b/en/manual/physics-bullet/media/create-collider-shape-asset.png new file mode 100644 index 00000000..a6845639 --- /dev/null +++ b/en/manual/physics-bullet/media/create-collider-shape-asset.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d179ea1f4562d051bde08a85b8890d846d24ca05dad4ef09ec46bf3f3c20dc4 +size 32923 diff --git a/en/manual/physics-bullet/media/create-collider-shape.png b/en/manual/physics-bullet/media/create-collider-shape.png new file mode 100644 index 00000000..71c51cb6 --- /dev/null +++ b/en/manual/physics-bullet/media/create-collider-shape.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5be61b3b5f77379031a231aec78b7f951b5beb401b43c65477493030e58a4530 +size 10357 diff --git a/en/manual/physics-bullet/media/cylinder.png b/en/manual/physics-bullet/media/cylinder.png new file mode 100644 index 00000000..376b5cb8 --- /dev/null +++ b/en/manual/physics-bullet/media/cylinder.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61e6080e4debef3ad0dcff72fbf6b384c3d231d04509bc1287ca856690da3725 +size 3384 diff --git a/en/manual/physics-bullet/media/display-gizmo-options.png b/en/manual/physics-bullet/media/display-gizmo-options.png new file mode 100644 index 00000000..f273569b --- /dev/null +++ b/en/manual/physics-bullet/media/display-gizmo-options.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f3cc4a1325e1bed4e0bcee556bb567edd4b5245db57732205f1887eac4d779d +size 10108 diff --git a/en/manual/physics-bullet/media/display-physics-option.png b/en/manual/physics-bullet/media/display-physics-option.png new file mode 100644 index 00000000..8f043e94 --- /dev/null +++ b/en/manual/physics-bullet/media/display-physics-option.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0cf1aae49938e7025d57a7e10af9cea943a7cd40f68b278f4f9529167253f3e +size 23276 diff --git a/en/manual/physics-bullet/media/display-physics.png b/en/manual/physics-bullet/media/display-physics.png new file mode 100644 index 00000000..bbba3def --- /dev/null +++ b/en/manual/physics-bullet/media/display-physics.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5ca17a8d5d662dd24be9609bfaab40862eb5c63e6987d75689a592b3f8b31de +size 904997 diff --git a/en/manual/physics-bullet/media/how-to-find-ide-icon.png b/en/manual/physics-bullet/media/how-to-find-ide-icon.png new file mode 100644 index 00000000..e037d5c7 --- /dev/null +++ b/en/manual/physics-bullet/media/how-to-find-ide-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f76e06b486ecf4b488a2aa812707128da6d64e786e32cce5c0cd118c6ff17202 +size 609 diff --git a/en/manual/physics-bullet/media/how-to-find-raycasting-sample.png b/en/manual/physics-bullet/media/how-to-find-raycasting-sample.png new file mode 100644 index 00000000..e576849e --- /dev/null +++ b/en/manual/physics-bullet/media/how-to-find-raycasting-sample.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cfa4efb32e9fd21b2786971fef67d2821914c2b271c11a92ae7d9bbe3dcd75d +size 396522 diff --git a/en/manual/physics-bullet/media/infinite-plane.png b/en/manual/physics-bullet/media/infinite-plane.png new file mode 100644 index 00000000..79e99a43 --- /dev/null +++ b/en/manual/physics-bullet/media/infinite-plane.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d9a01b032bc91ed055c0ae6dc9d28cc60ac1d5ca5821614bfe91a7cd5952984 +size 1758 diff --git a/en/manual/physics-bullet/media/is-kinematic-checkbox.png b/en/manual/physics-bullet/media/is-kinematic-checkbox.png new file mode 100644 index 00000000..84a0f311 --- /dev/null +++ b/en/manual/physics-bullet/media/is-kinematic-checkbox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c3a590f9a8031beacf13e5f05e496fdf46c3c06a4f7b1222001fd9b5e93eaed +size 20279 diff --git a/en/manual/physics-bullet/media/physics-component.png b/en/manual/physics-bullet/media/physics-component.png new file mode 100644 index 00000000..c0085814 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-component.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af4fe5b2cb6aab70edc580366be67a217f6124aacf4bcacebfa82d4f8f9ab5c8 +size 17067 diff --git a/en/manual/physics-bullet/media/physics-index-physics-in-stride.png b/en/manual/physics-bullet/media/physics-index-physics-in-stride.png new file mode 100644 index 00000000..a4020926 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-index-physics-in-stride.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afbbef434b6a7307d84144e3cc24dd0cbdebcafdf2d1c415c71cbe1a49cb4968 +size 86860 diff --git a/en/manual/physics-bullet/media/physics-index-physics-in-xenko.psd b/en/manual/physics-bullet/media/physics-index-physics-in-xenko.psd new file mode 100644 index 00000000..73c26a23 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-index-physics-in-xenko.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42aa56fb5a83cb983ac1d38d6cc6e0836c174719c204186104ee2751fa71f672 +size 1639162 diff --git a/en/manual/physics-bullet/media/physics-tutorials-added-trigger-area.png b/en/manual/physics-bullet/media/physics-tutorials-added-trigger-area.png new file mode 100644 index 00000000..23149349 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-added-trigger-area.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66a0c1a84bad9ea78088e53ec5238c0739fbc117e4b6d7dec2258c600fb10223 +size 121038 diff --git a/en/manual/physics-bullet/media/physics-tutorials-added-trigger-doubled-area.png b/en/manual/physics-bullet/media/physics-tutorials-added-trigger-doubled-area.png new file mode 100644 index 00000000..6aa5dab1 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-added-trigger-doubled-area.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32dc4fdad83715c732d5ba42f86e04981f213972415f544ce12cb7ad5fc24372 +size 122519 diff --git a/en/manual/physics-bullet/media/physics-tutorials-camera-preview.png b/en/manual/physics-bullet/media/physics-tutorials-camera-preview.png new file mode 100644 index 00000000..44b564e6 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-camera-preview.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1373d733269687ba14cf4e43247c5307dfe2cd0488818a19caf1a7e8eae7b82 +size 165144 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-add-collider-component.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-add-collider-component.png new file mode 100644 index 00000000..3da7ba51 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-add-collider-component.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:249322089810509ca9cf30449e23bf5ec215cd9900d3c12f23cd35f4097ae190 +size 626665 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-add-rigitbody-component.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-add-rigitbody-component.png new file mode 100644 index 00000000..b48ca1ec --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-add-rigitbody-component.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a11e1d3af044e3193a200ae3d68c16260490569932b6165f00683c52ccbe856 +size 503405 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-change-camera-position.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-change-camera-position.png new file mode 100644 index 00000000..e7fdd69c --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-change-camera-position.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0b257f587fe364c645923b4319592b504e97deebc7d0a14484f3e070299933f +size 393347 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-change-sphere-position.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-change-sphere-position.png new file mode 100644 index 00000000..e2008c5d --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-change-sphere-position.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b3ba6f3933b72901b63ba1cb272a4c4ba4a02494a43794ab5dca47cfe57f1d9 +size 397754 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-collider-shape.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-collider-shape.png new file mode 100644 index 00000000..72289b10 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-collider-shape.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f36932df96b93cc44db2fe06c9f73dc03c93866f4dc3e15be440967414ce203 +size 123391 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-and-bouncing-ball.gif b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-and-bouncing-ball.gif new file mode 100644 index 00000000..da51464a --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-and-bouncing-ball.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa2c6965f7285057b79e87e227395d4d07b19f95ceb8e291ab923e179d0a2997 +size 1575496 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-and-bouncing-ball.stg b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-and-bouncing-ball.stg new file mode 100644 index 00000000..1955ade3 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-and-bouncing-ball.stg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69c8481b50ecb3cd9e48d976a6edf218761e36766a2033aea1a0da60f7707be4 +size 2615687 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-ball.gif b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-ball.gif new file mode 100644 index 00000000..7962b76d --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-ball.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3463220e66c87e0377208c64558f20a1d16a38bc06b8c1241a613636835a6cad +size 1407804 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-ball.stg b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-ball.stg new file mode 100644 index 00000000..13b905a8 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-falling-ball.stg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f12254a33b8556c83f16dab5e7c0bee1cd0609d087781050270d28785abb50c3 +size 2425297 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-higher-and-higher.gif b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-higher-and-higher.gif new file mode 100644 index 00000000..dbcd93e5 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-higher-and-higher.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beafb16986b106790577d899034c401ee53d9e71236f6a2b2c877cf57d2ceac8 +size 2974995 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-higher-and-higher.stg b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-higher-and-higher.stg new file mode 100644 index 00000000..8b06f6cd --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-higher-and-higher.stg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51cd1c88d79955aecc21422a435ab21fd0ee6fd9addf4faace18abaaf6efd4d2 +size 7762769 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-infinitely-bouncing-ball.gif b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-infinitely-bouncing-ball.gif new file mode 100644 index 00000000..7adf9197 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-infinitely-bouncing-ball.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af2840a13d51f699dd23d83c9e534aa70ff2a8cc7ff2fa2770fa9a384cc357f8 +size 814518 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-infinitely-bouncing-ball.stg b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-infinitely-bouncing-ball.stg new file mode 100644 index 00000000..63af4f41 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-infinitely-bouncing-ball.stg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c7104acce2320471b7cadd7ee61eae1fb353b3d362b604319381f34eaf1deed +size 2546278 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-positions.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-positions.png new file mode 100644 index 00000000..064a52e1 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-positions.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:221270348569d2b201be14f6f29230b1473119e7e800409eebeb60dd71a576ae +size 210316 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-restitution-of-a-sphere.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-restitution-of-a-sphere.png new file mode 100644 index 00000000..0fcae8d5 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-restitution-of-a-sphere.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4035dbc2cfa6ca1dbafbcc230161a7a3e4a44922ff6306a3f080d34b527f71f1 +size 248088 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-restitution-of-the-ground.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-restitution-of-the-ground.png new file mode 100644 index 00000000..c571574b --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-restitution-of-the-ground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5168d08ff7d2d8122f19bbba1abd7967ab19f79cf812ed474d8f7dfc232586ae +size 248088 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-rigitbody-shape.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-rigitbody-shape.png new file mode 100644 index 00000000..30b30a17 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-bouncing-ball-rigitbody-shape.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e46a56ebe3e34f0b3bc513f1186772c4ca11edf85986c0a6553189c10d7bf46 +size 120082 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-material-asset.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-material-asset.png new file mode 100644 index 00000000..0dc959b7 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-material-asset.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30541281622ae2ee9c5d7da25fc37fea5eb802365c9950d46e1afdbfba7d7d3b +size 36715 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-model-component.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-model-component.png new file mode 100644 index 00000000..651dedf1 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-model-component.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:679988fa4d1fad17756b9bd76d181d517ca8228dab19e3280141518543663147 +size 21958 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-model.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-model.png new file mode 100644 index 00000000..3b179fc2 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-a-model.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eff90302ff399ca580d8573f13a2476fbf6916cc68fa43a2a96183428a51a0e7 +size 30104 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-async-script.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-async-script.png new file mode 100644 index 00000000..d1fa6723 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-async-script.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c09fd10dacd3366cc95f4289f97e34be99d324523846c1530d8a2e2c3f57e153 +size 472719 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-box-shape-to-a-trigger.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-box-shape-to-a-trigger.png new file mode 100644 index 00000000..3440eabc --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-box-shape-to-a-trigger.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2344e720837b787e9a51979862c9eb55687b151736cbcd9020ad11fdda7ae10e +size 118983 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-new-entity.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-new-entity.png new file mode 100644 index 00000000..f11f9a33 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-new-entity.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6b1b3a68be24fdaecf1d1f055fa494fa7f7738c3b33e59402e7786df5d78361 +size 183930 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-script-component-to-entity.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-script-component-to-entity.png new file mode 100644 index 00000000..bdc01c5d --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-add-script-component-to-entity.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ed38fb9e7a95d11d926ccb3eab132278c44bf5aaf240a2ebaf6b5f408c3cbac +size 349045 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-ball-passes-trigger.gif b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-ball-passes-trigger.gif new file mode 100644 index 00000000..f4a9726b --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-ball-passes-trigger.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa4be8c71b9da106b404512cd390d9697a05e7102f8ff87f83c11f234c2fc31e +size 1101500 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-ball-passes-trigger.stg b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-ball-passes-trigger.stg new file mode 100644 index 00000000..d8badbd8 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-ball-passes-trigger.stg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43512b8cd388b0a42c10ef6ac63f57bafbf941a5026ae2c0bd10a8a00c87c8d3 +size 3684323 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-is-trigger-checkbox.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-is-trigger-checkbox.png new file mode 100644 index 00000000..0d1570f9 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-is-trigger-checkbox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d52c7c4a6c7efea5b6c0dd4ff4a647bdeb362ea437a4f8c6c2c2617e96b1ae20 +size 11506 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-reload-assemblies.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-reload-assemblies.png new file mode 100644 index 00000000..a2ba394a --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-reload-assemblies.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6b078d45a7864409617dd5c4edd6eb0705ce556083e5873770ea43c3742cfff +size 7609 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-scale-trigger.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-scale-trigger.png new file mode 100644 index 00000000..b401fd6c --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-scale-trigger.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46d71f78457a43c0f0b7ff49b8f4140d2de144ea48753793c0530ed0319ad520 +size 122280 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-trigger-between-ground-and-sphere.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-trigger-between-ground-and-sphere.png new file mode 100644 index 00000000..65710033 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-trigger-between-ground-and-sphere.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c2f8e300104269926dc086c28dddaa90a14a72ce1f51ca5c39cc3aad24f89d4 +size 132684 diff --git a/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-trigger-on-the-ground.png b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-trigger-on-the-ground.png new file mode 100644 index 00000000..2c8f4a71 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-create-a-trigger-trigger-on-the-ground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17c657b4ae54b15f14393abb39cff8fbe1fd8a148df775a9414c249c61a18a64 +size 470936 diff --git a/en/manual/physics-bullet/media/physics-tutorials-material-asset-picker.png b/en/manual/physics-bullet/media/physics-tutorials-material-asset-picker.png new file mode 100644 index 00000000..d9620722 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-material-asset-picker.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e811440cf1ec8f6a591e12bc5e91116a74f20294fb7b03a90d28eb6847f19c3 +size 21029 diff --git a/en/manual/physics-bullet/media/physics-tutorials-pick-an-asset-up.png b/en/manual/physics-bullet/media/physics-tutorials-pick-an-asset-up.png new file mode 100644 index 00000000..3cbb6d92 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-pick-an-asset-up.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66aa1d30de7a089d64b17fc0bc5f33b5e1b4a865727607dfc1b68da94f821358 +size 17168 diff --git a/en/manual/physics-bullet/media/physics-tutorials-rigidbody-restitution.png b/en/manual/physics-bullet/media/physics-tutorials-rigidbody-restitution.png new file mode 100644 index 00000000..0b2ab23b --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-rigidbody-restitution.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ae5e66692d676bbfb6cfbda258609d4672e40b16639c11dc8db4216ef68ca2d +size 7887 diff --git a/en/manual/physics-bullet/media/physics-tutorials-select-cube-model.png b/en/manual/physics-bullet/media/physics-tutorials-select-cube-model.png new file mode 100644 index 00000000..70d0f9ad --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-select-cube-model.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b351f06ec508eb6a95f6095abf9e66b649a125cd5f6cb19123b2d5f36ea5e53b +size 39012 diff --git a/en/manual/physics-bullet/media/physics-tutorials-select-material-asset.png b/en/manual/physics-bullet/media/physics-tutorials-select-material-asset.png new file mode 100644 index 00000000..695cb17d --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-select-material-asset.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a566d75ca7ff01386d69132e68565e73fe83e3baa0eaae1cede63774f9dc2fe0 +size 51603 diff --git a/en/manual/physics-bullet/media/physics-tutorials-select-transparent-material.png b/en/manual/physics-bullet/media/physics-tutorials-select-transparent-material.png new file mode 100644 index 00000000..93225a7c --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-select-transparent-material.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be367779afd73c73f0af066585047975ae1bc0a51ffbd6edc370da3973d99b0b +size 39493 diff --git a/en/manual/physics-bullet/media/physics-tutorials-set-blend-alpha.png b/en/manual/physics-bullet/media/physics-tutorials-set-blend-alpha.png new file mode 100644 index 00000000..86846209 --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-set-blend-alpha.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d683d6456f1b536e0c30661991c5541bcb23d57dd28aba1df18c9401bc14666 +size 8721 diff --git a/en/manual/physics-bullet/media/physics-tutorials-set-blend.png b/en/manual/physics-bullet/media/physics-tutorials-set-blend.png new file mode 100644 index 00000000..aeb700fd --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-set-blend.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dc7a7d4575673a575827ec1067ad3a16e63ef477f3f5e5003121ab5cb3b7b17 +size 13813 diff --git a/en/manual/physics-bullet/media/physics-tutorials-static-collider-restitution.png b/en/manual/physics-bullet/media/physics-tutorials-static-collider-restitution.png new file mode 100644 index 00000000..b8dabc8d --- /dev/null +++ b/en/manual/physics-bullet/media/physics-tutorials-static-collider-restitution.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46ad15ed054266a696ec7d7f18079ec721ad489e7402eafaf09f935d2038eb9d +size 8068 diff --git a/en/manual/physics-bullet/media/rigid-bodies-is-kinematic-checkbox.png b/en/manual/physics-bullet/media/rigid-bodies-is-kinematic-checkbox.png new file mode 100644 index 00000000..eea3b23b --- /dev/null +++ b/en/manual/physics-bullet/media/rigid-bodies-is-kinematic-checkbox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:620689009a052564b16b883bd8933fc928405d927d7d493ac0dc716eeb6e69b2 +size 32896 diff --git a/en/manual/physics-bullet/media/rigid-bodies-kinematic-elevator.png b/en/manual/physics-bullet/media/rigid-bodies-kinematic-elevator.png new file mode 100644 index 00000000..1ca8de07 --- /dev/null +++ b/en/manual/physics-bullet/media/rigid-bodies-kinematic-elevator.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16c23817cfd3c35f22b12901c4f4dae5777e0a0d2c70250b54e12d105bcba064 +size 51162 diff --git a/en/manual/physics-bullet/media/rigid-bodies-kinematic-elevator.psd b/en/manual/physics-bullet/media/rigid-bodies-kinematic-elevator.psd new file mode 100644 index 00000000..e832bdb7 --- /dev/null +++ b/en/manual/physics-bullet/media/rigid-bodies-kinematic-elevator.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39cf8b275eb1c6dbb94f15f2ed755d09c5ddc27bea486890209ede647870961f +size 371877 diff --git a/en/manual/physics-bullet/media/rigid-bodies-non-kinematic-elevator.png b/en/manual/physics-bullet/media/rigid-bodies-non-kinematic-elevator.png new file mode 100644 index 00000000..00a2b1b0 --- /dev/null +++ b/en/manual/physics-bullet/media/rigid-bodies-non-kinematic-elevator.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46a2f51de22687b57ae429b5a934e936d0932c532eae5dcd5f3137efa2bc21b6 +size 41829 diff --git a/en/manual/physics-bullet/media/rigid-bodies-non-kinematic-elevator.psd b/en/manual/physics-bullet/media/rigid-bodies-non-kinematic-elevator.psd new file mode 100644 index 00000000..ddd370ad --- /dev/null +++ b/en/manual/physics-bullet/media/rigid-bodies-non-kinematic-elevator.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89ca9666327c6184b53eb00fb29233dfe5d64794b1080073472a8bd837cb0b51 +size 296574 diff --git a/en/manual/physics-bullet/media/rigid-bodies-static-and-rigid-body-colliders.png b/en/manual/physics-bullet/media/rigid-bodies-static-and-rigid-body-colliders.png new file mode 100644 index 00000000..b3faae13 --- /dev/null +++ b/en/manual/physics-bullet/media/rigid-bodies-static-and-rigid-body-colliders.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cf0776f6afed83a9e44e7eb986ac74a459375aad7df3177eefc1d1ece51b348 +size 169457 diff --git a/en/manual/physics-bullet/media/rigid-bodies-static-and-rigid-body-colliders.psd b/en/manual/physics-bullet/media/rigid-bodies-static-and-rigid-body-colliders.psd new file mode 100644 index 00000000..f7fab55f --- /dev/null +++ b/en/manual/physics-bullet/media/rigid-bodies-static-and-rigid-body-colliders.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73086fb8b5a062299184470ff9edade17cccd5a83d5f3c05d60ff62e92c34aa4 +size 1449442 diff --git a/en/manual/physics-bullet/media/rigid-body-properties.png b/en/manual/physics-bullet/media/rigid-body-properties.png new file mode 100644 index 00000000..474b2342 --- /dev/null +++ b/en/manual/physics-bullet/media/rigid-body-properties.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e96f32e9ee47e1fa3c851bafc32ea6288999a26015158566cf31e2b56166179 +size 23107 diff --git a/en/manual/physics-bullet/media/select-asset-collider-shape.png b/en/manual/physics-bullet/media/select-asset-collider-shape.png new file mode 100644 index 00000000..4f1d73ed --- /dev/null +++ b/en/manual/physics-bullet/media/select-asset-collider-shape.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ce6e7279aaac579237ab2053c6f89f6b64424970616c8735639c0fac67dc475 +size 18768 diff --git a/en/manual/physics-bullet/media/select-collider-shape-asset.png b/en/manual/physics-bullet/media/select-collider-shape-asset.png new file mode 100644 index 00000000..fb124742 --- /dev/null +++ b/en/manual/physics-bullet/media/select-collider-shape-asset.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:667f4bddd28846aca64c71bfd07c53fded354f0be23eab9f2cfd742997c00133 +size 6456 diff --git a/en/manual/physics-bullet/media/select-collider-shape.png b/en/manual/physics-bullet/media/select-collider-shape.png new file mode 100644 index 00000000..dc8d12e1 --- /dev/null +++ b/en/manual/physics-bullet/media/select-collider-shape.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8c5a5b19d723f0e5caaa942f65950ee6cb25b5a599fbf3dabb71cc682a063fb +size 11835 diff --git a/en/manual/physics-bullet/media/select-model.png b/en/manual/physics-bullet/media/select-model.png new file mode 100644 index 00000000..9cfea67d --- /dev/null +++ b/en/manual/physics-bullet/media/select-model.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7782c46c667eedfc3faa91d327a8485d631d085bf86a583fa025aea0e9842835 +size 133228 diff --git a/en/manual/physics-bullet/media/simulation-physics-settings.png b/en/manual/physics-bullet/media/simulation-physics-settings.png new file mode 100644 index 00000000..1e80ae3e --- /dev/null +++ b/en/manual/physics-bullet/media/simulation-physics-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ad4980f68237c9565a89701f60fbb8ccba49879e40081340b1ae7a8c3390031 +size 63508 diff --git a/en/manual/physics-bullet/media/sphere.png b/en/manual/physics-bullet/media/sphere.png new file mode 100644 index 00000000..1993e32b --- /dev/null +++ b/en/manual/physics-bullet/media/sphere.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccaafc2c06636952f165ea63e0bb1e2fab7048404cef2e451a5e2288ce909dad +size 4006 diff --git a/en/manual/physics-bullet/media/static-collider-properties.png b/en/manual/physics-bullet/media/static-collider-properties.png new file mode 100644 index 00000000..c61d64b4 --- /dev/null +++ b/en/manual/physics-bullet/media/static-collider-properties.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b03e52efd3c821fb0fc3a0c3fb6637d9fd1ca0e99ae09ebdea02b8de0ce44e5e +size 14825 diff --git a/en/manual/physics-bullet/media/triggers-select-is-trigger-checkbox.png b/en/manual/physics-bullet/media/triggers-select-is-trigger-checkbox.png new file mode 100644 index 00000000..f99a95e4 --- /dev/null +++ b/en/manual/physics-bullet/media/triggers-select-is-trigger-checkbox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98f8a18cb107136d766e0c954c0fbde495438ee1d224a86f1c0ecc03ac1f9034 +size 31110 diff --git a/en/manual/physics-bullet/raycasting.md b/en/manual/physics-bullet/raycasting.md new file mode 100644 index 00000000..2e8c8a1b --- /dev/null +++ b/en/manual/physics-bullet/raycasting.md @@ -0,0 +1,57 @@ +# Raycasting + +Intermediate +Programmer + +**Raycasting** traces an invisible line through the scene to find intersecting [colliders](colliders.md). This is useful, for example, to check which objects are in a gun's line of fire, or are under the mouse cursor when the user clicks. + +>[!Note] +>Raycasting uses **colliders** to calculate intersections. It ignores entities that have no collider component. For more information, see [Colliders](colliders.md). + +To use a raycast, in the current [Simulation](xref:Stride.Physics.Simulation), use [Simulation.Raycast](xref:Stride.Physics.Simulation.Raycast(Stride.Core.Mathematics.Vector3,Stride.Core.Mathematics.Vector3,Stride.Physics.CollisionFilterGroups,Stride.Physics.CollisionFilterGroupFlags,System.Boolean,Stride.Physics.EFlags)). + +For an example of raycasting, see the **Physics Sample** project included with Stride. + +## Example code + +This code sends a raycast from the mouse's screen position: + +```cs +public static bool ScreenPositionToWorldPositionRaycast(Vector2 screenPos, CameraComponent camera, Simulation simulation) +{ + Matrix invViewProj = Matrix.Invert(camera.ViewProjectionMatrix); + + // Reconstruct the projection-space position in the (-1, +1) range. + // Don't forget that Y is down in screen coordinates, but up in projection space + Vector3 sPos; + sPos.X = screenPos.X * 2f - 1f; + sPos.Y = 1f - screenPos.Y * 2f; + + // Compute the near (start) point for the raycast + // It's assumed to have the same projection space (x,y) coordinates and z = 0 (lying on the near plane) + // We need to unproject it to world space + sPos.Z = 0f; + var vectorNear = Vector3.Transform(sPos, invViewProj); + vectorNear /= vectorNear.W; + + // Compute the far (end) point for the raycast + // It's assumed to have the same projection space (x,y) coordinates and z = 1 (lying on the far plane) + // We need to unproject it to world space + sPos.Z = 1f; + var vectorFar = Vector3.Transform(sPos, invViewProj); + vectorFar /= vectorFar.W; + + // Raycast from the point on the near plane to the point on the far plane and get the collision result + var result = simulation.Raycast(vectorNear.XYZ(), vectorFar.XYZ()); + return result.Succeeded; +} +``` + +>[!Note] +>There are multiple ways to retrieve a reference to this `Simulation` from inside one of your `ScriptComponent`: +>- The recommended way is through a reference to a physics component, something like `myRigidBody.Simulation` or `myCollision.Simulation` as it is the fastest. +>- Then through `SceneSystem` by calling `SceneSystem.SceneInstance.GetProcessor()?.Simulation`. +>- Or through `this.GetSimulation()`, note that the `this` is required as it is an extension method. + +## See also +* [Colliders](colliders.md) diff --git a/en/manual/physics-bullet/rigid-bodies.md b/en/manual/physics-bullet/rigid-bodies.md new file mode 100644 index 00000000..19bc50d4 --- /dev/null +++ b/en/manual/physics-bullet/rigid-bodies.md @@ -0,0 +1,58 @@ +# Rigidbodies + +Beginner +Designer + +**Rigidbodies** move based on physical forces applied to them, such as gravity and collisions. Typical rigidbodies are boxes, balls, furniture, and so on — objects that are pushed, pulled, and knocked around, and also have effects on other rigidbodies they collide with. + +![Static and rigidbody colliders](media/rigid-bodies-static-and-rigid-body-colliders.png) + + +## Add a rigidbody collider + +1. Select the entity you want to be a rigidbody collider. + +2. In the **Property Grid**, click **Add component** and select **Rigidbody**. + + ![Add Static collider component](media/physics-tutorials-create-a-bouncing-ball-add-rigitbody-component.png) + +3. Set the [collider shape](collider-shapes.md) to match the entity. To do this, in the **Property Grid**, expand the **Rigidbody component** to view its properties. + +4. Next to **Collider Shapes**, click ![Green plus button](~/manual/game-studio/media/green-plus-icon.png) (**Add**) and select the shape you want. + + ![Add Static collider component](media/physics-tutorials-create-a-bouncing-ball-rigitbody-shape.png) + +## Component properties + +You can adjust the rigidbody properties in the **Property Grid**. + +![Rigidbody properties](media/rigid-body-properties.png) + +Property | Description +----------------------|----------------------- +Collision Group | Sets which collision group the object belongs to. +Can Collide With | Sets which groups the object collides with. +Collision Events | If this is enabled, the object reports collision events, which you can use in scripts. It has no effect on physics. If you have no scripts using collision events for the object, disable this option to save CPU. +Can Sleep | If this is enabled, the physics engine doesn't process physics objects when they're not moving. This saves CPU. +Restitution | Sets the amount of kinetic energy lost or gained after a collision. A typical value is between 0 and 1. If the restitution property of colliding entities is 0, the entities lose all energy and stop moving immediately on impact. If the restitution is 1, they lose no energy and rebound with the same velocity they collided at. Use this to change the "bounciness" of rigidbodies. +Friction | Sets the surface friction. +Rolling Friction | Sets the rolling friction. +CCD Motion Threshold | Sets the velocity at which continuous collision detection (CCD) takes over. CCD prevents fast-moving entities (such as bullets) erroneously passing through other entities. +CCD Swept Sphere Radius | Sets the radius of the bounding sphere containing the position between two physics frames during continuous collision detection. +Is Trigger | Toggles whether the rigidbody is a [trigger](triggers.md). +Is Kinematic | Toggles whether the rigidbody is [kinematic](kinematic-rigid-bodies.md) and therefore moved only by its Transform property. +Mass | Sets the collider mass. For large differences, use a point value; for example, write *0.1* or *10*, not *1* or *100000*. +Linear damping | The amount of damping for directional forces. +Angular damping | The amount of damping for rotational forces. +Override Gravity | Overrides gravity with the vector specified in Gravity. +Gravity | Sets a custom gravity vector applied if Override Gravity is selected. +Node Name | If the collider entity contains a bone structure, the node name can refer to a bones node name to be linked to that specific bone. +Collider Shapes | Adds a [collider shape](collider-shapes.md). + +## See also + +* [Kinematic rigidbodies](kinematic-rigid-bodies.md) +* [Static colliders](static-colliders.md) +* [Characters](characters.md) +* [Collider shapes](collider-shapes.md) +* [Triggers](triggers.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/script-a-trigger.md b/en/manual/physics-bullet/script-a-trigger.md new file mode 100644 index 00000000..c7c9a149 --- /dev/null +++ b/en/manual/physics-bullet/script-a-trigger.md @@ -0,0 +1,292 @@ +# Tutorial: Script a trigger + +Beginner +Designer + +In this tutorial, we'll create a [trigger](../physics/triggers.md) that doubles the size of a ball when the ball passes through it. + +>[!Note] +>The screenshots and videos in this tutorial were made using an earlier version of Stride, so some parts of the UI, and the default skybox and sphere, might look different from your version. + +## 1. Create a bouncing ball + +Follow the instructions in the [Create a bouncing ball](create-a-bouncing-ball.md) tutorial. This creates a simple scene in which a ball falls from mid-air, hits the ground, and bounces. + +## 2. Set the restitution + +For this tutorial, we'll set the restitution of both the ground and the sphere to 0.9, which makes the ball very bouncy. This makes it easier to see the effect of the trigger later, as the ball will bounce in and out of the trigger area repeatedly. + +1. Select the **Sphere** entity. + +2. In the **Property Grid**, under **Rigidbody**, set the **Restitution** to *0.9*. + + ![Set restitution for a sphere](media/physics-tutorials-rigidbody-restitution.png) + +3. Select the **Ground** entity. + +4. In the **Property Grid**, under **Static Collider**, set the **Restitution** to *0.9*. + + ![Set restitution for the ground](media/physics-tutorials-static-collider-restitution.png) + +## 3. Add a trigger + +Now we'll add a trigger between the ball and the ground, so the ball passes through it. + +1. In the **Scene Editor**, click the white plus button (**Create new entity**) and select **Empty entity**. + + ![Create new entity](media/physics-tutorials-create-a-trigger-add-new-entity.png) + + Game Studio adds an entity to the scene with the default name **Entity**. + +2. This entity will be our trigger, so rename it *Trigger* to make it easy to identify. + +3. Since we don't need the trigger to move, we'll make it a static collider. In the **Property Grid**, click **Add component** and select **Static Collider**. + + ![Add Static collider component](media/physics-tutorials-create-a-bouncing-ball-add-collider-component.png) + +4. In the **Property Grid**, expand the **Static Collider component** to view its properties. + +5. Select the **Is Trigger** checkbox. + + ![Check 'Is trigger'](media/physics-tutorials-create-a-trigger-is-trigger-checkbox.png) + + This makes the collider a trigger. This means objects can pass through it, but are still detected in the code. + +6. We need to give the trigger a shape. Next to **Collider Shapes**, click ![Green plus button](~/manual/game-studio/media/green-plus-icon.png) (**Add**) and select **Box**. + + ![Add collider shape](media/physics-tutorials-create-a-trigger-add-box-shape-to-a-trigger.png) + + This gives the trigger a box shape. + + ![Added trigger](media/physics-tutorials-added-trigger-area.png) + +7. Let's make the trigger a larger area. In the **Property Grid**, under the **Transform** component properties, set the **scale** to: *X:2, Y:2, Z:2* + + ![Scale a trigger](media/physics-tutorials-create-a-trigger-scale-trigger.png) + + This doubles the size of the trigger. + + ![Added trigger](media/physics-tutorials-added-trigger-doubled-area.png) + +## 4. Give the trigger a model + +Right now, the trigger is invisible at runtime. To better show how the trigger works, we'll make it a transparent box. This has no effect on how the trigger works; it just means we can easily see where it is at runtime. + +1. Create a new procedural model asset. To do this, in the **Asset View**, click **Add asset**, and select **Models > Cube**. + + ![Add a model asset](media/physics-tutorials-create-a-trigger-add-a-model.png) + +2. Create a new empty material asset. To do this, in the **Asset View**, click **Add asset**, and select **Materials > Material**. + + ![Add a material asset](media/physics-tutorials-create-a-trigger-add-a-material-asset.png) + +3. Let's rename the material to make it easy to identify. To do this, right-click, select **Rename**, and type a new name (eg *Transparent*). + +4. Select the **Trigger** entity. In the **Property Grid**, click **Add component** and select **Model**. + + ![Add a model component](media/physics-tutorials-create-a-trigger-add-a-model-component.png) + + Game Studio adds a model component to the entity. + +5. Under **Model**, click ![Hand icon](~/manual/game-studio/media/hand-icon.png) (**Select an asset**). + + ![Pick an asset up](media/physics-tutorials-pick-an-asset-up.png) + +6. Select the **Cube** model we created in step 1 and click **OK**. + + ![Select Cube model](media/physics-tutorials-select-cube-model.png) + +7. In the **Property Grid**, under **Model > Materials**, click ![Hand icon](~/manual/game-studio/media/hand-icon.png) (**Select an asset**). + + ![Select material](media/physics-tutorials-material-asset-picker.png) + +8. Select the **Transparent** material we created in step 2 and click **OK**. + + ![Select material](media/physics-tutorials-select-transparent-material.png) + +9. In the **Asset View**, select the **Transparent** material asset. + + ![Select material in Asset View](media/physics-tutorials-select-material-asset.png) + +10. In the **Property Grid**, under **Misc > Transparency**, select **Blend**. + + ![Select Blend](media/physics-tutorials-set-blend.png) + +11. By default, the Alpha is set to 1. This makes the material completely opaque. To set it to 50% opacity, set the **Alpha** to 0.5. + + ![Select Blend](media/physics-tutorials-set-blend-alpha.png) + + Now the trigger area will be visible at runtime. + +## 5. Position the trigger + +We need to position the trigger between the ground and the sphere, so the ball falls through it. + +In the **Property Grid**, under **Transform**, set the **Position** to: *X:0, Y:3, Z:0* + +Now the trigger entity is between the ground and the sphere: + +![Trigger between ground and sphere](media/physics-tutorials-create-a-trigger-trigger-between-ground-and-sphere.png) + +## 6. Change the sphere size with script + +If we run the project now (**F5**), the ball falls through the trigger, but nothing happens. + +

+ +

+ +Let's write a script to change the size of the ball when it enters the trigger. + +>[!Note] +>For more information about scripts, see [Scripts](../scripts/index.md). + +1. In the **Asset View**, click **Add asset** and select **Scripts** > **Async Script**. + + ![Use a script](media/physics-tutorials-create-a-trigger-add-async-script.png) + +2. In the **Create a script** dialog, name your script *Trigger* and click **Create script**. + + 2a. If Game Studio asks if you want to save your script, click **Save**. + + 2b. If Game Studio asks if you want to reload the assemblies, click **Reload**. + +3. Open the script, replace its content with the following code, and save the file: + + ```cs + using Stride.Engine; + using Stride.Physics; + using System.Threading.Tasks; + using Stride.Core.Mathematics; + + namespace TransformTrigger + // You can use any namespace you like for this script. + { + public class Trigger : AsyncScript + { + public override async Task Execute() + { + var trigger = Entity.Get(); + trigger.ProcessCollisions = true; + + // Start state machine + while (Game.IsRunning) + { + // 1. Wait for an entity to collide with the trigger + var firstCollision = await trigger.NewCollision(); + + var otherCollider = trigger == firstCollision.ColliderA + ? firstCollision.ColliderB + : firstCollision.ColliderA; + otherCollider.Entity.Transform.Scale = new Vector3(2.0f, 2.0f, 2.0f); + + // 2. Wait for the entity to exit the trigger + await firstCollision.Ended(); + + otherCollider.Entity.Transform.Scale= new Vector3(1.0f, 1.0f, 1.0f); + } + } + } + } + ``` + + This code doubles the size (scale) of any entity that enters the trigger. When the entity exits the trigger, it returns to its original size. + +4. Reload the assemblies. + +## 7. Add the script + +Finally, let's add this script to the trigger entity as a component. + +1. In **Game Studio**, select the **Trigger** entity. + +2. In the **Property Grid**, click **Add component** and select the **Trigger** script. + + ![Add script component to entity](media/physics-tutorials-create-a-trigger-add-script-component-to-entity.png) + +## 8. Run the project + +Run the project (**F5**) to see the trigger in action. + +The ball falls through the trigger, doubles in size, exits the trigger, and returns to its normal size. + +

+ +

+ +## More ideas + +You can alter the script to make other changes when the sphere enters the trigger. + +For example, you can switch the material on the sphere entity. This script switches the material on the Sphere entity from the **Sphere Material** to the **Ground Material** and back again: + +```cs +using Stride.Engine; +using Stride.Physics; +using System.Threading.Tasks; +using Stride.Core.Mathematics; +using Stride.Rendering; + +namespace TransformTrigger +// You can use any namespace you like for this script. +{ + public class Trigger : AsyncScript + { + private Material material1; + private Material material2; + + public override async Task Execute() + { + var trigger = Entity.Get(); + trigger.ProcessCollisions = true; + + // Make sure the materials are loaded + material1 = Content.Load("Sphere Material"); + material2 = Content.Load("Ground Material"); + + // Start state machine + while (Game.IsRunning) + { + // 1. Wait for an entity to collide with the trigger + var firstCollision = await trigger.NewCollision(); + + var otherCollider = trigger == firstCollision.ColliderA + ? firstCollision.ColliderB + : firstCollision.ColliderA; + + // 2. Change the material on the entity + otherCollider.Entity.Get().Materials[0] = material2; + + // 3. Wait for the entity to exit the trigger + await firstCollision.Ended(); + + // 4. Change the material back to the original one + otherCollider.Entity.Get().Materials[0] = material1; + } + } + + public override void Cancel() + { + Content.Unload(material1); + Content.Unload(material2); + } + } +} +``` + +

+ +

+ +## See also + +* [Tutorial: Create a bouncing ball](create-a-bouncing-ball.md) +* [Colliders](colliders.md) +* [Collider shapes](collider-shapes.md) +* [Scripts](../scripts/index.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/simulation.md b/en/manual/physics-bullet/simulation.md new file mode 100644 index 00000000..398d212b --- /dev/null +++ b/en/manual/physics-bullet/simulation.md @@ -0,0 +1,29 @@ +# Physics simulation + +Intermediate +Programmer + +Stride's physics are controlled by the [Simulation](xref:Stride.Physics.Simulation) class. +You can change how Stride initializes the [simulation](xref:Stride.Physics.Simulation) by modifying flags in [PhysicsSettings](xref:Stride.Physics.PhysicsSettings), accessed in the **GameSettings** asset properties. + +>[!Note] +>Your scene must have at least one [Collider](colliders.md) in order for Stride to initialize the [Simulation](xref:Stride.Physics.Simulation) instance. + +![Physics Settings](media/simulation-physics-settings.png) + +* `CollisionsOnly` initializes the [Simulation](xref:Stride.Physics.Simulation) with collision detection turned on, but no other physics. Objects won't react to physical forces. + +* `ContinuousCollisionDetection` initializes the [Simulation](xref:Stride.Physics.Simulation) with continuous collision detection (CCD). CCD prevents fast-moving entities (such as bullets) erroneously passing through other entities. + +> [!Note] +> The ``SoftBodySupport``, ``MultiThreaded``, and ``UseHardwareWhenPossible`` flags are currently disabled. + +At runtime, you can change some [Simulation](xref:Stride.Physics.Simulation) parameters: + +* `Gravity` — the global gravity, in [world units](../game-studio/world-units.md) per second squared +* `FixedTimeStep` — the length of a simulation timestep, in seconds +* `MaxSubSteps` — the maximum number of fixed timesteps the engine takes per update + +## See also +* [Colliders](colliders.md) +* [Collider shapes](collider-shapes.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/static-colliders.md b/en/manual/physics-bullet/static-colliders.md new file mode 100644 index 00000000..64e04cb8 --- /dev/null +++ b/en/manual/physics-bullet/static-colliders.md @@ -0,0 +1,58 @@ +# Static colliders + +Beginner +Designer + +**Static colliders** aren't moved by forces such as gravity and collisions, but other physics objects can bump into them. Typical static colliders are strong immovable objects like walls, floors, large rocks, and so on. + +![Static and rigidbody colliders](media/rigid-bodies-static-and-rigid-body-colliders.png) + +## Add a static collider + +1. Select the entity you want to make a static collider. + +2. In the **Property Grid**, click **Add component** and select **Static Collider**. + + ![Add Static collider component](media/physics-tutorials-create-a-bouncing-ball-add-collider-component.png) + +3. Set the [collider shape](collider-shapes.md) to match the shape of the entity. To do this, in the **Property Grid**, expand the **Static Collider component** to view its properties. + +4. Next to **Collider Shapes**, click ![Green plus button](~/manual/game-studio/media/green-plus-icon.png) (**Add**) and select the shape you want. + + ![Add Static collider component](media/physics-tutorials-create-a-bouncing-ball-collider-shape.png) + +## Static collider properties + +You can adjust the static collider properties in the **Property Grid**. + +![Static collider properties](media/static-collider-properties.png) + +Property | Description +----------------------|----------------------- +Collision Group | Sets which collision group the object belongs to. +Can Collide With | Sets which groups the object collides with. +Collision Events | If this is enabled, the object reports collision events, which you can use in scripts. It has no effect on physics. If you have no scripts using collision events for the object, disable this option to save CPU. +Can Sleep | If this is enabled, the physics engine doesn't process physics objects when they're not moving. This saves CPU. +Restitution | Sets the amount of kinetic energy lost or gained after a collision. A typical value is between 0 and 1. If the restitution property of colliding entities is 0, the entities lose all energy and stop moving immediately on impact. If the restitution is 1, they lose no energy and rebound with the same velocity they collided at. Use this to change the "bounciness" of rigidbodies. +Friction | Sets the surface friction. +Rolling Friction | Sets the rolling friction. +CCD Motion Threshold | Sets the velocity at which continuous collision detection (CCD) takes over. CCD prevents fast-moving entities (such as bullets) erroneously passing through other entities. +CCD Swept Sphere Radius | Sets the radius of the bounding sphere containing the position between two physics frames during continuous collision detection. +Is Trigger | Toggles whether the static collider is a [trigger](triggers.md). + +## Move a static collider at runtime + +If you need to move a static collider at runtime, you can do it with a script: + +```cs +PhysicsComponent.Entity.Transform.Position += PhysicsComponent.Entity.Transform.Position + Vector3.UnitX; +PhysicsComponent.Entity.Transform.UpdateWorldMatrix(); +PhysicsComponent.UpdatePhysicsTransformation(); +``` + +## See also + +* [Rigidbodies](rigid-bodies.md) +* [Characters](characters.md) +* [Collider shapes](collider-shapes.md) +* [Triggers](triggers.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/triggers.md b/en/manual/physics-bullet/triggers.md new file mode 100644 index 00000000..478e9bae --- /dev/null +++ b/en/manual/physics-bullet/triggers.md @@ -0,0 +1,72 @@ +# Triggers + +Beginner +Designer + +If you set a collider to be a **trigger**, other colliders no longer bump into it. Instead, they pass through. + +The trigger detects when colliders enter it, which you can use to script events. For example, you can detect when a player character enters a room, and use this in your script to trigger an event. For more information, see [Events](../scripts/events.md). + +>[!Note] +>[Character colliders](characters.md) can't be used as triggers. + +## Create a trigger + +1. Create a [collider](colliders.md). + +2. In the **Property Grid**, under the collider component properties, select **Is Trigger**. + +![Select 'Is trigger'](media/triggers-select-is-trigger-checkbox.png) + +## Detect trigger collisions + +You can see when something enters the trigger using the following code: + +```cs +// Wait for an entity to collide with the trigger +var firstCollision = await trigger.NewCollision(); + +var otherCollider = trigger == firstCollision.ColliderA + ? firstCollision.ColliderB + : firstCollision.ColliderA; +``` + +Alternatively, directly access the `TrackingHashSet`: + +```cs +var trigger = Entity.Get(); +foreach (var collision in trigger.Collisions) +{ + //do something with the collision +} +``` + +Or use the `TrackingHashSet` events: + +```cs +var trigger = Entity.Get(); +trigger.Collisions.CollectionChanged += (sender, args) => +{ + if (args.Action == NotifyCollectionChangedAction.Add) + { + //new collision + var collision = (Collision) args.Item; + //do something + } + else if (args.Action == NotifyCollectionChangedAction.Remove) + { + //old collision + var collision = (Collision)args.Item; + //do something + } +}; +``` + +For an example of how to use triggers, see the [Script a trigger](script-a-trigger.md) tutorial. + +## See also + +* [Tutorial: Script a trigger](script-a-trigger.md) +* [Colliders](colliders.md) +* [Collider shapes](collider-shapes.md) +* [Events](../scripts/events.md) \ No newline at end of file diff --git a/en/manual/physics-bullet/tutorials.md b/en/manual/physics-bullet/tutorials.md new file mode 100644 index 00000000..63d4be3f --- /dev/null +++ b/en/manual/physics-bullet/tutorials.md @@ -0,0 +1,4 @@ +# Tutorials + +* [Create a bouncing ball](create-a-bouncing-ball.md): Use the static collider and rigidbody components to create a ball bouncing on a floor. +* [Script a trigger](script-a-trigger.md): Create a trigger that doubles the size of a ball when the ball passes through it. \ No newline at end of file diff --git a/en/manual/physics/index.md b/en/manual/physics/index.md index 03f22759..cdcec24a 100644 --- a/en/manual/physics/index.md +++ b/en/manual/physics/index.md @@ -1,4 +1,4 @@ -# Physics +# Bepu Physics ![Physics in Stride](media/physics-index-physics-in-stride.png) diff --git a/en/manual/toc.yml b/en/manual/toc.yml index 2440d8ae..f39f55af 100644 --- a/en/manual/toc.yml +++ b/en/manual/toc.yml @@ -453,6 +453,40 @@ items: - name: Physics jitter href: physics/fix-physics-jitter.md + - name: Physics Bullet + href: physics-bullet/index.md + items: + - name: Colliders + href: physics-bullet/colliders.md + items: + - name: Static colliders + href: physics-bullet/static-colliders.md + - name: Rigidbodies + href: physics-bullet/rigid-bodies.md + - name: Kinematic rigidbodies + href: physics-bullet/kinematic-rigid-bodies.md + - name: Characters + href: physics-bullet/characters.md + - name: Collider shapes + href: physics-bullet/collider-shapes.md + - name: Triggers + href: physics-bullet/triggers.md + - name: Constraints + href: physics-bullet/constraints.md + - name: Raycasting + href: physics-bullet/raycasting.md + - name: Simulation + href: physics-bullet/simulation.md + - name: Tutorials + href: physics-bullet/tutorials.md + items: + - name: Create a bouncing ball + href: physics-bullet/create-a-bouncing-ball.md + - name: Script a trigger + href: physics-bullet/script-a-trigger.md + - name: Physics jitter + href: physics-bullet/fix-physics-jitter.md + - name: Platforms href: platforms/index.md items: From 7792258fcf649cf5908548d476d47ec5cc3d7cc8 Mon Sep 17 00:00:00 2001 From: Vaclav Elias Date: Sun, 8 Dec 2024 22:12:38 +0000 Subject: [PATCH 3/5] fix: Warning corrected --- en/includes/bullet-physics-deprecation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/includes/bullet-physics-deprecation.md b/en/includes/bullet-physics-deprecation.md index 78d2548f..739954c5 100644 --- a/en/includes/bullet-physics-deprecation.md +++ b/en/includes/bullet-physics-deprecation.md @@ -1,2 +1,2 @@ > [!WARNING] -> The Bullet physics is being phased out in Stride. We no longer plan to update or expand its features as our focus shifts to the [Bepu physics](../manual/physics/index.md). We recommend transitioning to Bepu Physics for access to the latest updates and ongoing improvements. \ No newline at end of file +> Bullet Physics is being phased out. We no longer plan to support or expand its features as our focus shifts to [Bepu Physics](../manual/physics/index.md). We recommend transitioning to Bepu Physics for access to the latest updates and ongoing improvements. \ No newline at end of file From ab514a438bcf99b275a129c260f69bd8e6e3114c Mon Sep 17 00:00:00 2001 From: Vaclav Elias Date: Sun, 8 Dec 2024 22:13:26 +0000 Subject: [PATCH 4/5] docs: Warnings added --- en/manual/physics-bullet/characters.md | 2 ++ en/manual/physics/index.md | 3 +++ 2 files changed, 5 insertions(+) diff --git a/en/manual/physics-bullet/characters.md b/en/manual/physics-bullet/characters.md index 547a0c8e..be5c6f1c 100644 --- a/en/manual/physics-bullet/characters.md +++ b/en/manual/physics-bullet/characters.md @@ -3,6 +3,8 @@ Beginner Designer +[!INCLUDE [bullet-deprecation](../../includes/bullet-physics-deprecation.md)] + **Character** colliders are used for player and script-controlled characters such as NPCs. Entities with [character components](xref:Stride.Physics.CharacterComponent) can only be moved with [SetVelocity](xref:Stride.Physics.CharacterComponent.SetVelocity\(Stride.Core.Mathematics.Vector3\)), [Jump](xref:Stride.Physics.CharacterComponent.Jump), and [Teleport](xref:Stride.Physics.CharacterComponent.Teleport\(Stride.Core.Mathematics.Vector3\)). ## Add a character component to an entity diff --git a/en/manual/physics/index.md b/en/manual/physics/index.md index cdcec24a..9cef9586 100644 --- a/en/manual/physics/index.md +++ b/en/manual/physics/index.md @@ -2,6 +2,9 @@ ![Physics in Stride](media/physics-index-physics-in-stride.png) +> [!WARNING] +> These pages are being updated. [Bullet Physics](../physics-bullet/index.md) is being phased out. We no longer plan to support or expand its features as our focus shifts to Bepu Physics. We recommend transitioning to Bepu Physics for access to the latest updates and ongoing improvements. + Stride simulates real-world physics such as gravity and collisions. This section explains how physics components work, how to add them to your project, and how to use them with scripts. ## In this section From c612825f14d5632aa8057c2ae02bf22ea08e6a91 Mon Sep 17 00:00:00 2001 From: Vaclav Elias Date: Sun, 8 Dec 2024 22:13:38 +0000 Subject: [PATCH 5/5] docs: WIP tag added --- en/manual/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/manual/toc.yml b/en/manual/toc.yml index 00e7b799..5fb9e950 100644 --- a/en/manual/toc.yml +++ b/en/manual/toc.yml @@ -419,7 +419,7 @@ items: - name: Custom particles href: particles/tutorials/custom-particles.md - - name: Physics + - name: Physics [WIP] href: physics/index.md items: - name: Colliders