kollisionen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

smackers

Betreff: kollisionen

BeitragMo, Apr 29, 2013 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo leute.
Ich habe ein Problem:
Bei mir funktionieren die kollisionen zwischen den Umgebungsmeshes und dem Spieler nicht.
Ich hoffe ihr könnt mir helfen:
Code: [AUSKLAPPEN]
Graphics3D 1920,1080,32,1
SetBuffer BackBuffer()


sphere = CreateSphere()
ScaleEntity sphere,0.000001,0.000001,0.000001


player=LoadMesh("meshes/figur.3ds")
EntityType player, 1
EntityRadius player,1;!!!!!!!!!!!!!!!!!!!!!

PositionEntity sphere,0,2,0

Global light=CreateLight()
Global camera=CreateCamera()
PositionEntity camera,0,2,-2



links=LoadMesh("meshes/links.3ds");
PositionEntity links,0,-0.5,0
EntityType links,2


rechts=LoadMesh("meshes/rechts.3ds");
PositionEntity rechts,0,-0.5,0
EntityType rechts,2


türme=LoadMesh("meshes/4tower.3ds");
PositionEntity türme,0,-0.5,0
EntityType türme,2


mitte1=LoadMesh("meshes/mitte1.3ds");
PositionEntity mitte1,0,-0.5,0
EntityType mitte1,2


mitte2=LoadMesh("meshes/mitte2.3ds");
PositionEntity mitte2,0,-0.5,0
EntityType mitte2,2




Collisions 1,2,2,2













Global steuerungsvariable = 1








While Not KeyHit(1)


If KeyHit(42)
If steuerungsvariable = 1
steuerungsvariable = 2
Else
steuerungsvariable = 1
End If
End If



If steuerungsvariable = 1

mausx = -MouseX() +100;!!!!!!
EntityParent camera,sphere
EntityParent sphere,player


RotateEntity sphere,MouseY(),mausx,0
Else If steuerungsvariable = 2
mausx = -MouseX() +100;!!!!!!
EntityParent camera,player
RotateEntity player,0,mausx,0


End If










If KeyDown(200) Or KeyDown(17) ;hoch/W
MoveEntity player,0,0,0.1     ;rechts/links    hoch/runter   vor/zurück 
End If


If KeyDown(203) Or KeyDown(30) ;links/A
MoveEntity player,-0.1,0,0     ;rechts/links    hoch/runter   vor/zurück 
End If

If KeyDown(208) Or KeyDown(31) ;links/S
MoveEntity player,0,0,-0.1     ;rechts/links    hoch/runter   vor/zurück 
End If

If KeyDown(205) Or KeyDown(32) ;links/S
MoveEntity player,0.1,0,0     ;rechts/links    hoch/runter   vor/zurück 
End If





RenderWorld

VWait:Flip False

Wend

End
 

Sorry dass der code so schlecht formatiert ist, aber ich habe gerade wenig Zeit.
Danke schonmal
Lg smackers
http://www.raetselstunde.de/lo...etsel.html
Also ich war nach 45min bei den 2% dabei.
 

bjh

BeitragMo, Apr 29, 2013 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
das einzige, was fehlt, ist ein updateworld vor renderworld. Wink

Tankbuster

BeitragMo, Apr 29, 2013 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
verwende vor Renderworld noch UpdateWorld, dann gehts sicherlich Wink


EDIT: Zitat:
Die Anweisung UpdateWorld animiert alle Objekte und überprüft die auf Kollision.
Twitter
Download Jewel Snake!
Windows|Android

smackers

Betreff: leider nicht

BeitragMo, Apr 29, 2013 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
nein das hat acuh nix gebracht
code sieht jetzt so aus(gleicher code nur mit update world)
Benutze ich es evtl falsch?
Code: [AUSKLAPPEN]
Graphics3D 1920,1080,32,1
SetBuffer BackBuffer()


sphere = CreateSphere()
ScaleEntity sphere,0.000001,0.000001,0.000001


player=LoadMesh("meshes/figur.3ds")
EntityType player, 1
EntityRadius player,1;!!!!!!!!!!!!!!!!!!!!!

PositionEntity sphere,0,2,0

Global light=CreateLight()
Global camera=CreateCamera()
PositionEntity camera,0,2,-2



links=LoadMesh("meshes/links.3ds");
PositionEntity links,0,-0.5,0
EntityType links,2


rechts=LoadMesh("meshes/rechts.3ds");
PositionEntity rechts,0,-0.5,0
EntityType rechts,2


türme=LoadMesh("meshes/4tower.3ds");
PositionEntity türme,0,-0.5,0
EntityType türme,2


mitte1=LoadMesh("meshes/mitte1.3ds");
PositionEntity mitte1,0,-0.5,0
EntityType mitte1,2


mitte2=LoadMesh("meshes/mitte2.3ds");
PositionEntity mitte2,0,-0.5,0
EntityType mitte2,2




Collisions 1,2,2,2













Global steuerungsvariable = 1










While Not KeyHit(1)



If KeyHit(42)
If steuerungsvariable = 1
steuerungsvariable = 2
Else
steuerungsvariable = 1
End If
End If



If steuerungsvariable = 1

mausx = -MouseX() +100;!!!!!!
EntityParent camera,sphere
EntityParent sphere,player


RotateEntity sphere,MouseY(),mausx,0
Else If steuerungsvariable = 2
mausx = -MouseX() +100;!!!!!!
EntityParent camera,player
RotateEntity player,0,mausx,0


End If








If KeyDown(200) Or KeyDown(17) ;hoch/W
MoveEntity player,0,0,0.1     ;rechts/links    hoch/runter   vor/zurück 
End If


If KeyDown(203) Or KeyDown(30) ;links/A
MoveEntity player,-0.1,0,0     ;rechts/links    hoch/runter   vor/zurück 
End If

If KeyDown(208) Or KeyDown(31) ;links/S
MoveEntity player,0,0,-0.1     ;rechts/links    hoch/runter   vor/zurück 
End If

If KeyDown(205) Or KeyDown(32) ;links/S
MoveEntity player,0.1,0,0     ;rechts/links    hoch/runter   vor/zurück 
End If


UpdateWorld


RenderWorld

Flip

Wend

End
 

weitere vorschläge?
http://www.raetselstunde.de/lo...etsel.html
Also ich war nach 45min bei den 2% dabei.
 

bjh

BeitragMo, Apr 29, 2013 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst mit entityradius noch den objekten den passenden radius geben.
anfangs sind die schon ineinander soweit ich sehen kann.

smackers

BeitragMo, Apr 29, 2013 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
bjh hat Folgendes geschrieben:
du musst mit entityradius noch den objekten den passenden radius geben.
anfangs sind die schon ineinander soweit ich sehen kann.


Also ich habe jetzt jedem objekt einen entityradius von 1 gegeben aber es klappt immernoch nicht.
Sad


Code: [AUSKLAPPEN]
Graphics3D 1920,1080,32,1
SetBuffer BackBuffer()


sphere = CreateSphere()
ScaleEntity sphere,0.000001,0.000001,0.000001





player=LoadMesh("meshes/figur.3ds")
EntityType player, 1
EntityRadius player,1;!!!!!!!!!!!!!!!!!!!!!




PositionEntity sphere,0,2,0

Global light=CreateLight()
Global camera=CreateCamera()
PositionEntity camera,0,2,-2



links=LoadMesh("meshes/links.3ds");
PositionEntity links,0,-0.5,0
EntityType links,2
EntityRadius links,1

rechts=LoadMesh("meshes/rechts.3ds");
PositionEntity rechts,0,-0.5,0
EntityType rechts,2
EntityRadius rechts,1

türme=LoadMesh("meshes/4tower.3ds");
PositionEntity türme,0,-0.5,0
EntityType türme,2
EntityRadius türme,1

mitte1=LoadMesh("meshes/mitte1.3ds");
PositionEntity mitte1,0,-0.5,0
EntityType mitte1,2
EntityRadius mitte1,1


mitte2=LoadMesh("meshes/mitte2.3ds");
PositionEntity mitte2,0,-0.5,0
EntityType mitte2,2
EntityRadius mitte2,1



Collisions 1,2,2,2













Global steuerungsvariable = 1










While Not KeyHit(1)



If KeyHit(42)
If steuerungsvariable = 1
steuerungsvariable = 2
Else
steuerungsvariable = 1
End If
End If



If steuerungsvariable = 1

mausx = -MouseX() +100;!!!!!!
EntityParent camera,sphere
EntityParent sphere,player


RotateEntity sphere,MouseY(),mausx,0
Else If steuerungsvariable = 2
mausx = -MouseX() +100;!!!!!!
EntityParent camera,player
RotateEntity player,0,mausx,0


End If



code:




If KeyDown(200) Or KeyDown(17) ;hoch/W
MoveEntity player,0,0,0.1     ;rechts/links    hoch/runter   vor/zurück 
End If


If KeyDown(203) Or KeyDown(30) ;links/A
MoveEntity player,-0.1,0,0     ;rechts/links    hoch/runter   vor/zurück 
End If

If KeyDown(208) Or KeyDown(31) ;links/S
MoveEntity player,0,0,-0.1     ;rechts/links    hoch/runter   vor/zurück 
End If

If KeyDown(205) Or KeyDown(32) ;links/S
MoveEntity player,0.1,0,0     ;rechts/links    hoch/runter   vor/zurück 
End If


UpdateWorld
RenderWorld

Flip

Wend

End
 
http://www.raetselstunde.de/lo...etsel.html
Also ich war nach 45min bei den 2% dabei.

DAK

BeitragMo, Apr 29, 2013 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du den Code bitte richtig einrücken? So macht's keinen Spaß ihn zu korrigieren.
Gewinner der 6. und der 68. BlitzCodeCompo

smackers

BeitragMo, Apr 29, 2013 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist eine schlechte Angewohntheit.
Ich habe es von Anfang an so gemacht und wenn ich es versuche mir abzugewöhnen, dann filde ich es immer ungewohnt und dadurch auch unübersichtlich. Aber ich arbeite dran Very Happy
http://www.raetselstunde.de/lo...etsel.html
Also ich war nach 45min bei den 2% dabei.
 

bjh

BeitragMo, Apr 29, 2013 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
dann versuchs mit nem kleinerem wert z.b. 0,1

smackers

BeitragMo, Apr 29, 2013 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
bjh hat Folgendes geschrieben:
dann versuchs mit nem kleinerem wert z.b. 0,1


nein dass hat auch nicht geklappt.
Also ich habe den code nun mal auf das wesentliche reduziert und finde immernoch nichts.
An den modellen liegt es nicht, da es, wenn ich die modelle im B3d Kollisionsbsp einfüge, klappt.
Aber ich finde nciht, was ich anders gemacht habe, im Gegensatz zum Beispiel.

reduzierter code(sogar ein wenig eingerückt) :
Code: [AUSKLAPPEN]

 Graphics3D 640, 480
SetBuffer BackBuffer()


   player=LoadMesh("meshes/figur.3ds")
   EntityType player, 1
   EntityRadius player,0.1


Global light=CreateLight()
Global camera=CreateCamera()
   PositionEntity camera,0,2,-2


   links=LoadMesh("meshes/links.3ds");
   PositionEntity links,0,-0.5,0
   EntityType links,2


Collisions 1,2,2,2


While Not KeyHit(1)


   If KeyDown(200) Or KeyDown(17) ;hoch/W
      MoveEntity player,0,0,0.1     ;rechts/links    hoch/runter   vor/zurück 
   End If


   If KeyDown(203) Or KeyDown(30) ;links/A
      MoveEntity player,-0.1,0,0     ;rechts/links    hoch/runter   vor/zurück 
   End If

   If KeyDown(208) Or KeyDown(31) ;links/S
      MoveEntity player,0,0,-0.1     ;rechts/links    hoch/runter   vor/zurück 
   End If

   If KeyDown(205) Or KeyDown(32) ;links/S
      MoveEntity player,0.1,0,0     ;rechts/links    hoch/runter   vor/zurück 
   End If




UpdateWorld
RenderWorld

Flip

Wend

End
 
http://www.raetselstunde.de/lo...etsel.html
Also ich war nach 45min bei den 2% dabei.

Xeres

Moderator

BeitragMo, Apr 29, 2013 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
In deinem letzten Code hast du "links" kein EntityRadius zugewiesen und eben darum gibt es keine Kollision. Auch solltest du dann besser bei Collisions die Methode 1, Kugel-Kugel, benutzen. Ist sowieso schneller als Polygon.
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)

smackers

BeitragMo, Apr 29, 2013 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich gemacht, aber es klappt immernoch nicht.
Auserdem wird in dem B3D Beispiel ja auch nicht jedem objekt ein Entityradius zugeordnet, sondern nur dem beweglichen Objekt.

nochmal der verbesserte code mit entityradius bei links:
Code: [AUSKLAPPEN]

 Graphics3D 640, 480
SetBuffer BackBuffer()


   player=LoadMesh("meshes/figur.3ds")
   EntityType player, 1
   EntityRadius player,0.1


Global light=CreateLight()
Global camera=CreateCamera()
   PositionEntity camera,0,2,-2


   links=LoadMesh("meshes/links.3ds");
   PositionEntity links,0,-0.5,0
   EntityType links,2
EntityRadius links,1

Collisions 1,2,2,2


While Not KeyHit(1)


   If KeyDown(200) Or KeyDown(17) ;hoch/W
      MoveEntity player,0,0,0.1     ;rechts/links    hoch/runter   vor/zurück
   End If


   If KeyDown(203) Or KeyDown(30) ;links/A
      MoveEntity player,-0.1,0,0     ;rechts/links    hoch/runter   vor/zurück
   End If

   If KeyDown(208) Or KeyDown(31) ;links/S
      MoveEntity player,0,0,-0.1     ;rechts/links    hoch/runter   vor/zurück
   End If

   If KeyDown(205) Or KeyDown(32) ;links/S
      MoveEntity player,0.1,0,0     ;rechts/links    hoch/runter   vor/zurück
   End If




UpdateWorld
RenderWorld

Flip

Wend

End
http://www.raetselstunde.de/lo...etsel.html
Also ich war nach 45min bei den 2% dabei.

Xeres

Moderator

BeitragMo, Apr 29, 2013 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Mache es uns einfacher, indem du selbst den Grafikmodus zu Fenster setzt und die Meshes, die wir nicht besitzen und damit den Code nicht starten können, durch CreateCube o.ä. ersetzt.
Wenn ich das tue, gibt es eindeutig Kollision.
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)

smackers

BeitragMo, Apr 29, 2013 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Mache es uns einfacher, indem du selbst den Grafikmodus zu Fenster setzt und die Meshes, die wir nicht besitzen und damit den Code nicht starten können, durch CreateCube o.ä. ersetzt.
Wenn ich das tue, gibt es eindeutig Kollision.


Grafikmodus zu Fenster setzen?
Wie ist das gemeint?

also hier habe ich die meshes mit sphere(player) und einem cube(umgebung) ausgetauscht und bei mir klappts nicht.
Code: [AUSKLAPPEN]

 Graphics3D 640, 480
SetBuffer BackBuffer()


   player=CreateSphere()
   EntityType player, 1
   EntityRadius player,0.1


Global light=CreateLight()
Global camera=CreateCamera()
   PositionEntity camera,0,2,-2


   links=CreateCube()
   PositionEntity links,0,-0.5,0
   EntityType links,2
EntityRadius links,1

Collisions 1,2,2,2


While Not KeyHit(1)


   If KeyDown(200) Or KeyDown(17) ;hoch/W
      MoveEntity player,0,0,0.1     ;rechts/links    hoch/runter   vor/zurück
   End If


   If KeyDown(203) Or KeyDown(30) ;links/A
      MoveEntity player,-0.1,0,0     ;rechts/links    hoch/runter   vor/zurück
   End If

   If KeyDown(208) Or KeyDown(31) ;links/S
      MoveEntity player,0,0,-0.1     ;rechts/links    hoch/runter   vor/zurück
   End If

   If KeyDown(205) Or KeyDown(32) ;links/S
      MoveEntity player,0.1,0,0     ;rechts/links    hoch/runter   vor/zurück
   End If




UpdateWorld
RenderWorld

Flip

Wend

End
http://www.raetselstunde.de/lo...etsel.html
Also ich war nach 45min bei den 2% dabei.
 

bjh

BeitragDi, Apr 30, 2013 6:49
Antworten mit Zitat
Benutzer-Profile anzeigen
graphics3d 640,480,32,2

bei mir funktioinert die kollision
du musst erst mal nach hinten fahren und dann wieder nach vorne und dann klappts

Tankbuster

BeitragDi, Apr 30, 2013 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir funktioniert die Collision auch. Ein logischer Code-Fehler ist es also nicht.
Twitter
Download Jewel Snake!
Windows|Android

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group