Seite 1 von 2

Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 23.07.2013 18:40
von Makke
Hallo zusammen,

ich habe mir das Beispiel angesehen und dazu ein Paar Fragen. Augenscheinlich ist die Physic-Engine aktiviert, obwohl nirgend wo der Befehl: EnableWorldPhysics(1) auftaucht (auch nicht in der ScreenRequester.pbi), erkennen kann man es wohl an folgenden Zeilen im Code:

Code: Alles auswählen

RenderWorld(60) ; = ElapsedPhysicTime 
und

Code: Alles auswählen

Procedure OnGround(*Entity.s_Entity)
  ProcedureReturn RayCollide(NodeX(*Entity\MainNode),  NodeY(*Entity\MainNode)+1, NodeZ(*Entity\MainNode), NodeX(*Entity\MainNode), NodeY(*Entity\MainNode)-3,  NodeZ(*Entity\MainNode)) 
EndProcedure
RayCollide() funktioniert nach Beschreibung mit aktivierter Physic Engine.

Heißt für mich die Physic Engine ist immer an, wenn ich beispielsweise in einem Code: EnableWorldPhysics(0) einbaue, ist die Physic-Engine anscheinend trotzdem noch an, da mit World-Debug die Hitboxen noch angezeigt werden und wenn ich mit einem Entity eine Steigung oder ein Gefälle von sagen wir zwei Planes ablaufe, fällt das Entity beim Übergang hinunter.

EIne weitere Frage die mich beschäftigt,an welcher Stelle sorgt der Code, wie in dem Beispiel Waterworld.mesh, dafür, das das Spieler-Entity nicht durch Wände gehen kann.

In dem Beispiel-Code wird zuerst das Entity bewegt und rotiert und dann kommen die Nodes nach, bei mir ist es genauso, aber ich habe keine Nodes. Wenn ich meine Leveldatei in das Beispiel einbinde, kann das Spieler-Entity nicht durch die Wände gehen.

Wäre nett wenn mir hier einer Tips geben könnte.

Re: Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 24.07.2013 11:00
von Chimorin
Zeile 127:

Code: Alles auswählen

EntityPhysicBody(2, #PB_Entity_StaticBody)
Waterworld ist Nummero 2 (Ich hasse das mit den Nummern, warum können die Beispielersteller nicht Konstanten oder Variablen nehmen?!).

In der Hilfe steht, dass die Physik und die Kollisionen standartmäßig an sind (Siehe: EnableWorldCollisions() + EnableWorldCollisions(Status)
). Halte ich für nicht ganz gelungen... Ich hätte den Standartwert auf #False gesetzt.

Re: Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 24.07.2013 22:38
von Makke
In meinem Beispiel habe ich der Level-Datei auch einen Statischen Körper verpasst. Trotzdem kann ich durch Wände gehen. Noch eine Idee ?

Und noch etwas merwürdiges, wie kann ich beim Entity den Schattenwurf ausstellen, der ist auch standardmäßig immer an.

Re: Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 25.07.2013 11:57
von Chimorin
Siehe diesen Thread wegen den Schatten:
http://www.purebasic.fr/german/viewtopi ... =4&t=27035
Vllt kannst du mir ja auch helfen ;)

Hast du deiner Figur (was auch immer) auch einen Körper verpasst?
Gibts Code?

Re: Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 28.07.2013 09:16
von Makke
Hi, den Code für die Steuerung usw. kannst Du von diesem Thread nehmen: http://www.purebasic.fr/german/viewtopi ... =4&t=27028

Bevor ich die Player_Create() Funktion aufgerufen habe, habe ich mit folgendem Code das Level geladen:

Code: Alles auswählen

;--- create level
SkyBox("evening.png")
CreateEntity(#Entity_Level, LoadMesh(0, "level_desert.mesh"), #PB_Material_None, 0, 0, 0, #Mask_Entity_Level)
ScaleEntity(#Entity_Level, 0.015, 0.015, 0.015)
EntityPhysicBody(#Entity_Level, #PB_Entity_StaticBody)
EntityRenderMode(#Entity_Level, #PB_Entity_CastShadow)
CreateLight(#Light_Sun_Level, RGB(200, 90, 10), 4000, 2000, 0, #PB_Light_Directional)
LightLookAt(#Light_Sun_Level, 0, 0, 0)
AmbientColor(RGB(50, 22, 2))
Ich kann in dem Level durch Wände gehen usw. obwohl ich also nichts anders gemacht habe als in dem Beispiel, bin ziemlich ratlos.

Re: Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 28.07.2013 09:28
von Chimorin
Nein, ich meine, ob das Entity, welches du rumfahren lässt, was hat das für einen Physik Körper?

Re: Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 28.07.2013 11:40
von Makke
Das hat folgenden: #PB_Entity_ConvexHullBody

Wenn ich mir mit WorldDebug die physischen Körper anzeigen lasse, wird das Spieler-Entity auch mit dem Körper (#PB_Entity_ConvexHullBody) angezeigt.

Re: Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 28.07.2013 18:46
von Chimorin
Hmm, ich bin mir nicht sicher, aber ich meine mal das Problem gehabt zu haben. Es lag schließlich daran, wie ich die Figur bewegt habe. Auf Relative gabs dann keine Probleme mehr...

Du hast das selber programmiert? Könntest du uns den Code geben oder einen Teil dessen, welcher lauffähig ist?

Re: Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 29.07.2013 20:43
von Makke
Bananenfreak hat geschrieben:...Auf Relative gabs dann keine Probleme mehr...

Du hast das selber programmiert? Könntest du uns den Code geben oder einen Teil dessen, welcher lauffähig ist?
Ich benutze nicht die Relative Bewegung, sondern eine Absolute ... und den Code kannst Du hier einsehen: http://www.purebasic.fr/german/viewtopi ... =4&t=27028

Ich bin jetzt aber soweit, dass ich eine eigene Kollisionsabfrage inkl. kleiner Hitbox für die Spielfigur gebastelt habe, eine Hitbox (Kopf, Brust Arme und Beine) ist für einen Shooter eh sinniger.

Re: Fragen zum 3D Beispiel FPSFirstPerson.pb

Verfasst: 30.07.2013 11:36
von Chimorin

Code: Alles auswählen

MoveEntity(Player\entity, x, y, z, #PB_Absolute)
Ich hab mich nicht richtig eingelesen, aber probiere diese Zeile in #PB_Relative umzuschreiben, dann wird es funktionieren :)

Kannst du mir erklären, wie du das mit der Hitbox hinkriegst? Ich meine, wenn das Entity animiert wird, muss sich die Hitbox doch auch verändern...