Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
Verfasst: 18.04.2010 18:12
@Didi
kann das jetzt aus den Bugs raus verschoben werden?
kann das jetzt aus den Bugs raus verschoben werden?
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Ja, ich meinte damit wieder nur, dass das Verhalten mit den physikalischen Eigenschaften, dass da Masse und Reibung und so nur mit der Gravitation mitwirkt und von #PB_Entity_AbsoluteBodyMove unabhängig ist. Immerhin sagt ja #PB_Entity_AbsoluteBodyMove nur, dass man EntityLocate auch verwenden können soll. ODE ist nunmal nicht PhysX. Ich finde die ODE demos recht träge.captain_hesse hat geschrieben:Entschuldige dann habe ich da etwas mißverstanden aber dennoch bin ich der Meinung das dieses Verhalten nicht richtig ist
Da zeigt man den Kopf trotzdem nichtmehr an. Früher wurde das sogar ganz in 2D gemacht, also die Hand und die Waffe. Heutzutage kann man einfach den Body- und Headpart weglassen beim Anzeigen, dann kommt es auch bei allen Animationen nicht zu falschen Effekten.captain_hesse hat geschrieben:denn wenn man einen Ego-shoter programmieren will sieht man ja auch die Waffe vor der Kamera
Wie gesagt, ich kanns keine 20-30 Minuten durchlaufen lassen, soviel Zeit hab ich nicht. Desshalb hab ich keine Ahnung was für ein "Laggen" du meinst. Das laggen kommt bei mir nichtmal wenn ich das Delay(50) reinsetze oder Speed verändere.captain_hesse hat geschrieben:und diese würde dann auch im verlauf des Spiels ihre Sollposition verändern und irgendwann würde der Arm sammt Waffe sehr viel weiter vor der Kamera hängen als er soll. Und dann frage ich mich auch warum das immer anfängt zu Laggen nach ca. 20 - 30 Minuten. Und warum kommt das verhalten erst nach einer Weile und nicht von anfang an, wenn das so gewollt währe dann müsste dieses verhalten doch von anfang an so sein.
Im Grunde liegt das Problem eigentlich darin eine Kollision zu erkennen.DarkDragon hat geschrieben:Da zeigt man den Kopf trotzdem nichtmehr an. Früher wurde das sogar ganz in 2D gemacht, also die Hand und die Waffe. Heutzutage kann man einfach den Body- und Headpart weglassen beim Anzeigen, dann kommt es auch bei allen Animationen nicht zu falschen Effekten.
Code: Alles auswählen
EntityPhysicBody(0, #PB_Entity_BoxBody,#PB_Entity_AbsoluteBodyMove)Das sollst du ja auch. Nur sollte man das kollidierende Objekt nichtmehr zeichnen. Sonst entstehen unschöne Effekte wenn eine Animation hinzukommt. Dann sieht man z.B. die Bewegungen des Mundes von der Ego-Perspektive aus. Und sowas will man ja nicht. Desshalb sage ich, zeichne den Würfel erst garnicht in der Ego-Perspektive, sondern nur in der 3rd Person Perspektive.captain_hesse hat geschrieben:Im Grunde liegt das Problem eigentlich darin eine Kollision zu erkennen.DarkDragon hat geschrieben:Da zeigt man den Kopf trotzdem nichtmehr an. Früher wurde das sogar ganz in 2D gemacht, also die Hand und die Waffe. Heutzutage kann man einfach den Body- und Headpart weglassen beim Anzeigen, dann kommt es auch bei allen Animationen nicht zu falschen Effekten.
Wenn man mit der Kamera mit einem anderen objekt zusammenstößt passiert ja garnix man läuft also durch das Hinderniss hindurch. Um dieses Problem zu umgehen habe ich ein Objekt erstellt mit dem sich die Kamera bewegt. Erstellt man dieses Objekt nun mit #PB_Entity_BoxBody oder mit #PB_Entity_SphereBody ist die Trägheit dieses Objekts so groß das eine vernünftige Steurung nicht möglich ist. Macht man dieses Objekt nun statisch mit #PB_Entity_StaticBody lässt es sich zwar frei bewegen aber wenn das Hinderniss auch statisch ist wird wieder keine Kollision erkannt also ist das Hindeniss kein Hinderniss mehr. Bleibt also nur nochum die Kamera mit dem Objekt mitzuführen.Code: Alles auswählen
EntityPhysicBody(0, #PB_Entity_BoxBody,#PB_Entity_AbsoluteBodyMove)
dann mach bitte weiter damit, herauszufinden woran es eigentlich liegt, und melde es dann in geeigneter Form im Englischen Bug-Forum.DarkDragon hat geschrieben:Nein, es sollte nicht aus den Bugs verschoben werden, denn das Laggen kann ein Memory Leak sein oder eine fehlerhafte Verwendung von ODE. Außerdem sollte Fred/das PB Team dafür sorgen, dass die Positionen nach dem Rendern neu berechnet werden, wenn ODE nicht in einem eigenen Thread arbeitet. Wenn es in einem eigenen Thread arbeitet wären vielleicht Callbacks sinnvoll.
Ok das leuchtet mir ein allerdings verstehe ich nicht ganz was du mit dem SatzDarkDragon hat geschrieben:Das sollst du ja auch. Nur sollte man das kollidierende Objekt nichtmehr zeichnen. Sonst entstehen unschöne Effekte wenn eine Animation hinzukommt
meinst, die Verschiebung ist nicht dauerhaft sondern nur sobald man eine Taste drückt um das Objekt zu bewegen, lässt man die Taste wieder los springt das Objekt wieder an seine richtige Position zurück aber je länger das Programm läuft deto größer wird der Sprung den es macht wenn man es bewegt. X,Y,Z des Objektes sind nicht die gleichen wie die der Kamera solange eine Taste gedrückt ist auch wenn das Objekt mit HideEntity verstekt wurde.Ich vermute du hast noch einen Fehler, den ich hier nicht habe. Du schreibst andauernd etwas von einer dauerhaften Verschiebung. Das könnte daran liegen, dass die Positionsangaben vom PureBasic Wrapper, der OGRE und der ODE unsynchrorn sind.
Dann ist es kein zusätzlicher Fehler mit einer dauerhaften Verschiebung. Wie ich schon sagte löst HideEntity dieses Problem nicht.captain_hesse hat geschrieben:Ok das leuchtet mir ein allerdings verstehe ich nicht ganz was du mit dem SatzDarkDragon hat geschrieben:Das sollst du ja auch. Nur sollte man das kollidierende Objekt nichtmehr zeichnen. Sonst entstehen unschöne Effekte wenn eine Animation hinzukommtmeinst, die Verschiebung ist nicht dauerhaft sondern nur sobald man eine Taste drückt um das Objekt zu bewegen, lässt man die Taste wieder los springt das Objekt wieder an seine richtige Position zurück aber je länger das Programm läuft deto größer wird der Sprung den es macht wenn man es bewegt. X,Y,Z des Objektes sind nicht die gleichen wie die der Kamera solange eine Taste gedrückt ist auch wenn das Objekt mit HideEntity verstekt wurde.Ich vermute du hast noch einen Fehler, den ich hier nicht habe. Du schreibst andauernd etwas von einer dauerhaften Verschiebung. Das könnte daran liegen, dass die Positionsangaben vom PureBasic Wrapper, der OGRE und der ODE unsynchrorn sind.