Kollisionen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

PhillipB

BeitragMo, Feb 28, 2011 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber ich finde den fehler ja nicht!
Darum wnede ich mich ja an euch!

Midimaster

BeitragMo, Feb 28, 2011 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Setz mal den Bus zu Beginn des Spiel deutlich ( so 1 Einheit in Y-Richtung) über die Straße und berichte, was passiert.

BladeRunner

Moderator

BeitragMo, Feb 28, 2011 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
PhillipB hat Folgendes geschrieben:
Aber ich finde den fehler ja nicht!
Darum wnede ich mich ja an euch!

Das Problem ist ja dass Dir die Grundlagen fehlen um dich um diese Fehler zu kümmern. Was wir dir schon wiederholt gesagt haben ist: Lern erst mal gehen bevor Du zu rennen versuchst.
Vergiss dein Busspiel. Lern die Basics. Lerne den Debugger für Dich zu nutzen. Dann werden sich viele Deiner Probleme in Luft auflösen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

PhillipB

BeitragDi, März 01, 2011 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Also der Bus rutscht herunter aber auf den Straße bleibt er nicht hängen zu begin habe ich noch
Code: [AUSKLAPPEN]
PositionEntity  O405,  0,0.1,0
gemacht aber der Bus rutscht einfach durch!
 

PacMani

BeitragDi, März 01, 2011 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du MSN? Ich würde dir gerne weiterhelfen (bin heute und morgen krank und hab deswegen eh nichts zu tun).

Midimaster

BeitragDi, März 01, 2011 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
also PhillipB....

Du kannst das Programmieren auch in einem Bus-Spiel erlernen. Allerdings musst Du Dir eine Strategie überlegen, wie Du auf unerwartete Ereignisse reagierst.

z.B. das Ding mit dem Bus der durch die Straße rutscht.....

Das kann mehrere Ursachen haben: Das Model könnte die Ursache sein, oder die Straße, oder die Collision oder ein anderer Programmierfehler. Oder die 0.1-Höhe reicht doch noch nicht (Nebenbei: warum hast du esnicht mit 1 probiert, wie ich es dir geraten habe?).

Wichtig für Dich ist nun, dass Du nicht nur an dem Einen, Deinen Code grübelst, sondern parallell in einem zweiten Editor-Fenster Grundlagenforschung machst.

In diesem zweiten Code-Fenster könntest Du mal einen Code erstellen, wo ein Cube durch eine Fläche durchfällt. Und dort kannst Du dann mit den Collisions experimentieren. Hält er dort an? Warum nicht? Warum hier doch?

Hol Dir auch die Code-Beispiele aus der BlitzBasic Anleitung zu Collision in ein drittes Editor-Fenster. Funktioniert es dort? Warum? Was ist anders?

Dann ersetzt Du in Deinem Original-Code mal das Gitermodell durch einen einfachen Cube (Zeile ausmaskieren, dafür darunter eine Zeile...
BlitzBasic: [AUSKLAPPEN]
O405=CreateCube()


Wie verhält sich das Programm jetzt?

Verstehst Du, was ich sagen will? Durch Reduzieren von mögl. Fehlerquellen kannst Du die Fehlerursache einkreisen. Und uns hier im Forum dann schon genauer mitteilen, z.B. dass "...es mit einem Cube klappt, aber mit dem Modell nicht..." oder so...

Wir reden uns hier alle leicht, weil wir das schon seit Jahren machen, aber am Anfang sind da so viele Widrigkeiten. Lass Dich nicht abschrecken...Du schaffst das schon!

PhillipB

BeitragDi, März 01, 2011 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
So mit Code: [AUSKLAPPEN]
O405=CreateCube()
habe cih jetzt gearbeitet doch der cube fällt auch durch die Straße!
 

PacMani

BeitragDi, März 01, 2011 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann probier' die Dinge aus, die Midimaster noch in seinem Post geraten hat.

Midimaster

BeitragDi, März 01, 2011 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieh mal an....da sind wir schon etwas schlauer...

Leider bist Du ein wenig beratungsresistend. Und schreibst auch nur das Nötigste, gell? Was ich nämlich gleichzeitig dabei wissen müsste: Haste den cube jetzt von y=1 fallen lassen? Oder mal von Y=10?

Wie sieht'n das aus, wenn Du das Beispiel aus der BB-Help in einem zweiten Fenster ausprobierst?

hier mal die Minimal-Version davon:
BlitzBasic: [AUSKLAPPEN]
; Collisions Example
; ------------------

Graphics3D 640,480
SetBuffer BackBuffer()

; Set collision type values
type_character=1
type_scenery=2

camera=CreateCamera()
RotateEntity camera,45,0,0
PositionEntity camera,0,15,-10

light=CreateLight()
RotateEntity light,45,0,0

; Create sphere 'character'
sphere=CreateSphere( 32 )
EntityRadius sphere,1
EntityType sphere,type_character


; Create cube 'scenery'
cube=CreateCube()
EntityRadius cube,1
EntityType cube,type_scenery

;*********************************************
PositionEntity sphere,0,11,0
;*********************************************


EntityColor cube,127,0,0
ScaleEntity cube,10,10,10

; Set collision method and response values
method=2
response=2

method_info$="sphere-to-polygon"
response_info$="slide1"

While Not KeyDown( 1 )



MoveEntity sphere,0,-0.02,0

; Enable Collions between type_character and type_scenery
Collisions type_character,type_scenery,method,response

; Perform collision checking
UpdateWorld

RenderWorld


Flip

Wend

End


Witzigerweise fällt auch hier die Kugel durch den Boden. Erst Werte über Y=12 als Startposition verhindern das!
BlitzBasic: [AUSKLAPPEN]
;*********************************************
PositionEntity sphere,0,11,0
;*********************************************

PhillipB

BeitragDi, März 01, 2011 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
LOL naja ich hab jetzt den Y wert auf 12 gestellt aber jetzt geht der Bus nicht ganz auf den boden aber wenn ein untersichied da ist geht er auch runter aber halt nicht ganz auf den Boden

Midimaster

BeitragDi, März 01, 2011 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ah! applaus!

das heißt: der bus geht jetzt nicht mehr durc hdie Straße. Und wenn die Straße ins Tal geht, dann geht auch der Bus mit? Toll! Das hättest du schon vor Stunden haben können. Bitte immer schön die Tipps lesen und darüber nachdenken.

Der Tipp mit dem Fallenlassen kam von mehreren Leuten, aber keiner kann natürlich wissen, wie dein Koordinatensystem sclaiert ist. Bei dem Einem funktioniert es schon bei 0.1 Höhe, ein anderer braucht 1, Du brauchst scheinbar 12. Weil eben bei dir alles so groß ist.

Nun zum schwebenden Buss....
Da ist eine Art 'Aura' um so ein Model. Und wenn diese Aura die Straße berührt, dann findet die Kollision statt und das Model ist 'unten angekommen'. Das hat dann ganz oft nix damit zu tun, das das optische Bild des Busses jetzt noch schwebt. Abhilfe schafft hier ein Container, der den Bus aufnimmt. (Stichworte: CreatePivot(), EntityParent()). Der Bus kann dann so im Container nach unten verschoben werden, bis es auch optisch passt.
 

PacMani

BeitragDi, März 01, 2011 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wusste ich noch nicht, das mit der "Aura"! Wie entsteht die denn, bzw. wie berechnet Blitz3D denn die "umgebende Wand" des Modells?

Xeres

Moderator

BeitragDi, März 01, 2011 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Vermutlich ist damit der mit EntityBox oder EntityRadius eingestellte Abstand gemeint...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

PacMani

BeitragDi, März 01, 2011 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso. Ich war jetzt von Polygon-Zu-Kugel-Kollisionen ausgegangen. Und da müsste es Blitz ja vernünftig berechnen können.

Midimaster

BeitragDi, März 01, 2011 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Wink ich wollte es ihm halt irgendwie "griffig" erklären.

Aber mal im Ernst... wie ist das bei 3D-Objekten mit herausragenden "Extremitäten". Erkennt die Blitzkollision wirklich die "Objekt-Wand" oder gilt auch hier nur eine Art "Radius"? Wie ist das, wenn das Objekt beweglich ist, oder z.b. ein Loch hat?

Für PhillipB wäre ja für den Bus ein rechteckiger EntitBox wahrscheinlich das bester, oder?

Und was natürlich auch problematisch sein kann. Wo ist denn der "Nullpunkt" eines 3D-Objektes?. Sein Bus kommt ja nun nicht auf die Straße.

Ich denke ein Pivot() würde seine Probleme lösen.

PhillipB

BeitragDi, März 01, 2011 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Pivot ist ja nur ein unsichtbares objekt in dem sinne wie soll das denn in meinen code passen?

Midimaster

BeitragDi, März 01, 2011 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Bus wird Child des Pivot.

Das Pivot wird das Collisions-Objekt und sinkt zu Boden. Der Bus sinkt mit.

Nun kannst du in Versuchen die optimale Position des Busses im Pivot herausfinden.

So steht vor dem Spiel jetzt:

BlitzBasic: [AUSKLAPPEN]
O405=CreatePivot()
RealBus=LoadMesh("O405\O405.3ds")
EntityParent RealBus,O405
MoveEntity RealBus,0,-3,0 ; Bus innerhalb des Pivot verschieben

MoveEntity O405,0,12,0



Im Spiel arbeitest Du weiterhin immer mit der Variablen O405

PhillipB

BeitragMi, März 02, 2011 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Also der Bus ist direckt ganz tief unten in der map aber er kollidiert auch nicht also er fällt und fällt!

Midimaster

BeitragMi, März 02, 2011 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
also in dem Komplett-Beispiel, dass ich dir gestern (18:45 Uhr) gegeben habe, klappt es.

Folgende Änderungen mussten da rein:

BlitzBasic: [AUSKLAPPEN]
; Create sphere 'character'
sphere=CreatePivot() ;<--------------------Pivot erstellen
EntityRadius sphere,1
Kugel=CreateSphere(32,Sphere) ;<-----------Bus unter neuen Namen an das Pivot heften

MoveEntity Kugel, 0,-1,0 ;<-----------------Bus im Pivot positionieren
EntityType sphere,type_character
......

;*********************************************
PositionEntity sphere,0,12,0
;*********************************************
TurnEntity cube,0,0,-10 ;<-----------------kleine Spielerei Scheife Ebende

....



Da siehst du, dass man z.b. ein Objekt auf diese Art beliebig tief in den Boden eintauchen lassen kann, und trotzdem wird es angehalten.

Vielleicht liegt es ja wieder an der 12? Sei mal ein bißchen kreativ!

PhillipB

BeitragMi, März 02, 2011 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja vorher ging es ich habe ja mit deinem Beispiel von 20:04 gearbeitet doch der bus fällt auch bei höheren variablen immer herunter


Edit:// Ahh ich habe mal das niedriger gestellt Code: [AUSKLAPPEN]
MoveEntity RealBus,0,-0.5,0   ; Bus innerhalb des Pivot verschieben


Aber der Bus stoppt trotzdem erst ganz spät und alle objekte am Bus die einzeld geladen werden schweben jetzt in der Luft aber sinken mit
  • Zuletzt bearbeitet von PhillipB am Mi, März 02, 2011 19:03, insgesamt einmal bearbeitet

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group