Problem mit Collision und PositionEntity
Übersicht BlitzBasic Beginners-Corner
planetloneBetreff: Problem mit Collision und PositionEntity |
Mi, Feb 02, 2011 21:43 Antworten mit Zitat |
|
---|---|---|
Hallo! Da ich mit dem 2D-Teil von Blitz schon lange gut zurecht komme, möchte ich mich nun mal in 3D einarbeiten und habe gleich ein (wahrscheinlich dummes) Problemchen, bzw. kapier ich das nicht:
Die Y-Koordinate bei PositionEntity liegt bei den CUBs bei 5 und bei der Kamera habe ich das auf 5.099 gestellt. Wenn ich die Werte auf 1 bzw. 1.099 umstelle lande ich mitten im CUBe vor mir. Wenn ich aber die Collision rauslasse funktioniert es wieder. Das verstehe ich nicht, weil doch die Y-Koordinate eigentlich keinen Einfluss darauf haben sollte, oder? Danke für Eure Erklärungen. Code: [AUSKLAPPEN] Graphics3D 800,600,16,1 SetBuffer BackBuffer() Dim CUB(1000) KAMERA = CreateCamera() : CameraViewport KAMERA, 0, 0, 800, 600 CameraFogMode KAMERA, 1 : CameraFogRange KAMERA, 0, 18 : CameraRange KAMERA, 0.1, 18 EntityType KAMERA,1 : EntityRadius KAMERA,0.3 LICHT = CreateLight(2, KAMERA) CNR=1 : X1=1 : X2=2 : X3=3 : Y1=1 : Y2=2 CUB(1) = CreateCube() EntityColor CUB(1),255,0,0 PositionEntity CUB(1),Y1+(Y1-1),5,X1+(X1-1) EntityType CUB(1),3 CUB(2) = CreateCube() EntityColor CUB(2),0,0,255 PositionEntity CUB(2),Y1+(Y1-1),5,X2+(X2-1) EntityType CUB(2),3 CUB(3) = CreateCube() EntityColor CUB(3),255,0,0 PositionEntity CUB(3),Y1+(Y1-1),5,X3+(X3-1) EntityType CUB(3),3 CUB(4) = CreateCube() EntityColor CUB(4),255,0,0 PositionEntity CUB(4),Y2+(Y2-1),5,X1+(X1-1) EntityType CUB(4),3 STARTX=2 : STARTY=2 : STARTR=4 ;Blickrichtung und Kamera festlegen If STARTR=4 Then winkel#=180 If STARTR=8 Then winkel#=90 If STARTR=6 Then winkel#=0 If STARTR=2 Then winkel#=270 PositionEntity KAMERA,STARTY+(STARTY-1),5.099,STARTX+(STARTX-1) RotateEntity KAMERA, 0, winkel#, 0 ;MAIN-LOOP While Not KeyHit(1) If KeyDown(200) Then MoveEntity KAMERA,0,0,0.1 If KeyDown(208) Then MoveEntity KAMERA,0,0,-0.1 If KeyDown(203) Then winkel#=winkel#+2 : RotateEntity KAMERA, 0, winkel#, 0 If KeyDown(205) Then winkel#=winkel#-2 : RotateEntity KAMERA, 0, winkel#, 0 Collisions 1,3,2,3 Cls UpdateWorld RenderWorld Flip Wend ClearWorld End |
||
Tankbuster |
Mi, Feb 02, 2011 22:12 Antworten mit Zitat |
|
---|---|---|
Collisions gehört nicht in die Schleife. Genausowenig wie das Cls
Zu dem Problem: Während du Kollisionen angeschaltet hast, kann es beim verschieben von Entitiys, die mit irgendwas kollidieren zu problemen kommen. Die landen dann irgendwo anders. Vielleicht ist das dein Problem Also.. Wenn du ein Entity verschieben willst: Kollision aus, verschieben, kollision an Das gilt natürlich nur dann, wenn die Objekte beim verschieben nicht kollidieren sollen, sondern einfach ihre Position ändern sollen. |
||
Twitter
Download Jewel Snake! Windows|Android |
planetlone |
Mi, Feb 02, 2011 23:08 Antworten mit Zitat |
|
---|---|---|
Danke Tankbuster! Ich habe Cls und Collision jetzt aus der Schleife genommen, aber ich kapiere immernoch nicht, warum das Ändern der Y-Koordinate plötzlich zu einem Verschieben meiner Kamera führt, ohne dass ich eine Taste drücke. DAS Verhältnis der Y-Koordinaten von Kamera und den CUBs bleibt doch gleich ?!?! | ||
Silver_Knee |
Mi, Feb 02, 2011 23:28 Antworten mit Zitat |
|
---|---|---|
ohne den code jetzt gelesen zu haben
Vielleicht geschieht etwas beim verschieben in x-Richtung, was die Objekte nachher gar nicht an den Koordinaten stehen lässt von denen du sie dann in y-Richtung verschieben willst. |
||
planetlone |
Do, Feb 03, 2011 9:53 Antworten mit Zitat |
|
---|---|---|
Nein, es passiert schon beim Starten des Programmes und ersten positionieren der Objekte und Kamera.
PositionENtity mit Y = 5 bzw Y = 5.099 (Kamera) klappt alles (auch mit Collision) und beim Starten mit PositionEntity mit Y = 1 bzw Y = 1.099 (Kamera) ist die Kamera sofort am falschen Ort (in einem Block). Wenn ich die Collision aber weglasse, geht es. Brauche da echt dringend Hilfe! ) Danke! |
||
NightPhoenix |
Do, Feb 03, 2011 12:40 Antworten mit Zitat |
|
---|---|---|
Du kannst die Kollisionen auch temporär ausschalten, verschieben und wieder einschalten | ||
planetlone |
Do, Feb 03, 2011 14:59 Antworten mit Zitat |
|
---|---|---|
Naja, da die Kollision ja erst kurz vor der Main-Loop gesetzt wird (NACHDEM die PositionENtitys gemacht wurden) und der Effekt ja schon eintritt, bevor ich irgendwas mit Bewegungen mache, muss es ja an was anderem liegen.
Ich kann das natürlich tricksen, ich lasse einfach Y auf 5, aber ich will ja VERSTEHEN, woran das liegt... ) |
||
TurTur |
Do, Feb 03, 2011 15:54 Antworten mit Zitat |
|
---|---|---|
Dein Problem offenbart wohl eine Eigenart von BB3D, die ich so auch noch nicht gesehen habe.
Aber es kommt definitiv zu einer Kollision mit den Cubes. Es wird auch nicht nur die Y-Position sondern auch die X- und die Z-Position verändert. Das Problem tritt aber erst nach dem ersten Updateworld() auf, wie folgende Modifikation deines Quelltextes zeigt. Code: [AUSKLAPPEN] : PositionEntity KAMERA,STARTY+(STARTY-1),5.099,STARTX+(STARTX-1) RotateEntity KAMERA, 0, winkel#, 0 debuglog "P1: "+EntityX(Kamera)+" "+EntityY(Kamera)+" "+EntityZ(Kamera) ;-- Korrekte Position Collisions 1,3,2,3 UpdateWorld() debuglog "P2: "+EntityX(Kamera)+" "+EntityY(Kamera)+" "+EntityZ(Kamera) ;-- falsche Position ;MAIN-LOOP : BlitzBasic rechnet wohl die Positionierung der Kamera beim Updateworld() neu aus und dieses Mal unter Berücksichtigung der Collisions-Anweisung. Die Ursache liegt wohl in der Kollisionstyp-Festlegung VOR der Anweisung 'PositionEntity Kamera, .......' . Wenn du alle Typfestlegungen (Kamera und Cubes) nach der Positionierung der Kamera definierst und erst dann die Kollisionsabfrage aktivierst, tritt der Fehler nicht mehr auf. Code: [AUSKLAPPEN] : PositionEntity KAMERA,STARTY+(STARTY-1),YPos+0.099,STARTX+(STARTX-1),1 RotateEntity KAMERA, 0, winkel#, 0 EntityType Kamera,1 ;--Kollisionstyp-Festlegung nach den Objekt-Positionierungen EntityType CUB(1),3 EntityType CUB(2),3 EntityType CUB(3),3 EntityType CUB(4),3 Collisions 1,3,2,3 ;MAIN-LOOP : mfg TurTur |
||
planetlone |
Fr, Feb 04, 2011 0:01 Antworten mit Zitat |
|
---|---|---|
Danke an alle für die Info! Jetzt blicke ich da mehr durch! Super! ) | ||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group