Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Next revisionBoth sides next revision | ||
physics [2020/05/24 13:30] – [Example] admin | physics [2020/05/24 13:30] – [Remote-Control] admin | ||
---|---|---|---|
Line 179: | Line 179: | ||
**__CAUTION: | **__CAUTION: | ||
+ | |||
+ | |||
+ | ===== Example ===== | ||
+ | For a working physics system you need a TGorillaPhysicsSystem component on your form. | ||
+ | |||
+ | <file pascal Form1.pas> | ||
+ | type | ||
+ | TForm1 = class(TForm) | ||
+ | GorillaViewport1: | ||
+ | Light1: TLight; | ||
+ | Dummy1: TDummy; | ||
+ | Camera1: TCamera; | ||
+ | GorillaPhysicsSystem1: | ||
+ | Plane1: TPlane; | ||
+ | GorillaCube1: | ||
+ | PhysicsTimer1: | ||
+ | GorillaSphere1: | ||
+ | LightMaterialSource1: | ||
+ | LightMaterialSource2: | ||
+ | procedure FormCreate(Sender: | ||
+ | procedure PhysicsTimer1Timer(Sender: | ||
+ | private | ||
+ | { Private-Deklarationen } | ||
+ | public | ||
+ | { Public-Deklarationen } | ||
+ | end; | ||
+ | |||
+ | var | ||
+ | Form1: TForm1; | ||
+ | |||
+ | implementation | ||
+ | |||
+ | {$R *.fmx} | ||
+ | |||
+ | uses | ||
+ | Gorilla.Physics, | ||
+ | | ||
+ | procedure TForm1.FormCreate(Sender: | ||
+ | var LPrefab : TGorillaColliderSettings; | ||
+ | begin | ||
+ | // the plane should be a static body, otherwise it will fall in to nothingness | ||
+ | LPrefab := TGorillaColliderSettings.Create(TQ3BodyType.eStaticBody); | ||
+ | GorillaPhysicsSystem1.AddBoxCollider(Plane1, | ||
+ | |||
+ | // the cube is a dynamic / moveable body which collides with the plane and sphere | ||
+ | LPrefab := TGorillaColliderSettings.Create(TQ3BodyType.eDynamicBody); | ||
+ | GorillaPhysicsSystem1.AddBoxCollider(GorillaCube1, | ||
+ | |||
+ | // the sphere is a dynamic / moveable body which collides with the plane and cube | ||
+ | LPrefab := TGorillaColliderSettings.Create(TQ3BodyType.eDynamicBody); | ||
+ | GorillaPhysicsSystem1.AddSphereCollider(GorillaSphere1, | ||
+ | |||
+ | // we activate the physics system | ||
+ | GorillaPhysicsSystem1.Active := true; | ||
+ | | ||
+ | // and we need to activate the physics timer for constant updates | ||
+ | PhysicsTimer1.Enabled := true; | ||
+ | end; | ||
+ | |||
+ | procedure TForm1.PhysicsTimer1Timer(Sender: | ||
+ | var LDelta : Single; | ||
+ | begin | ||
+ | // get the delta time => time since the last step() was called | ||
+ | LDelta := GorillaPhysicsSystem1.GetDeltaTime(); | ||
+ | GorillaPhysicsSystem1.Step(LDelta); | ||
+ | GorillaViewport1.Invalidate(); | ||
+ | end; | ||
+ | </ | ||
+ | |||
Next step: [[fmodaudio|FMOD Audio]] | Next step: [[fmodaudio|FMOD Audio]] |