|B3D| Kollision

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: |B3D| Kollision

BeitragDo, Jan 28, 2010 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Warum funktioniert meine Kollision (von Gegnern) nicht?

Mfg,
N0X

Code: [AUSKLAPPEN]
Global piv    = CreatePivot()
Global cam    = CreateCamera(piv)
Global player = LoadAnimMesh("models\dwarf1.b3d")
Global map1   = LoadMesh("models\map002.3ds")

EntityType(player,PLY)
EntityType(map1,MAP)

For i = 0 To 1
   e.enemy   = New enemy
   e\x#      = Rnd(100,300)
   e\y#      = 10
   e\z#      = Rnd(100,500)
   e\yaw     = Rnd(-90,90)
   e\mesh    = CopyEntity(gegner)
   e\health% = 90
   e\exxp%   = 120
   e\id$     = "Riese"
   e\stat%   = 0
   EntityType(e\mesh,GEG)
Next

For o = 0 To 49
   e.enemy   = New enemy
   e\x#      = Rnd(100,300)
   e\y#      = 10
   e\z#      = Rnd(100,500)
   e\yaw     = Rnd(-90,90)
   e\mesh    = CopyEntity(horse)
   e\health% = 40
   e\exxp%   = 50
   e\id$     = "Figur"
   e\stat%   = 1
   EntityType(e\mesh,NPC)
Next

Collisions NPC,MAP,2,3
Collisions GEG,MAP,2,3
While Not KeyHit(1)
   updateEnemys()
Wend
End

Function updateEnemys()
   ms = MilliSecs()
   For e.enemy = Each enemy
      PositionEntity e\mesh,e\x#,e\y#,e\z#
      RotateEntity e\mesh,0,e\yaw,0
      
      If e\timer < ms Then
         e\timer = ms +Rnd(6000,10000)
         e\richtung=Rnd(0,3)
         e\stopp=0
      EndIf
      If e\st_timer < ms Then
         e\st_timer = ms +Rnd(4000,8000)
         e\stopp = 1
      EndIf
      If e\stopp=0
         If e\richtung=0 Then
            e\x#=e\x#-.5
            If e\id$ = "Riese" Then
               If Not Animating(e\mesh) Then
                  Animate(e\mesh,1,.1,1)
               EndIf
            EndIf
         EndIf
         If e\richtung=1 Then
            e\z#=e\z#-.5
            If e\id$ = "Riese" Then
               If Not Animating(e\mesh) Then
                  Animate(e\mesh,1,.1,1)
               EndIf
            EndIf
         EndIf
         If e\richtung=2 Then
            e\x#=e\x#+.5
            If e\id$ = "Riese" Then
               If Not Animating(e\mesh) Then
                  Animate(e\mesh,1,.1,1)
               EndIf
            EndIf
         EndIf
         If e\richtung=3 Then
            e\z#=e\z#+.5
            If e\id$ = "Riese"
               If Not Animating(e\mesh) Then
                  Animate(e\mesh,1,.1,1)
               EndIf
            EndIf
         EndIf
      Else
         If e\id$ = "Riese" Then
            Animate(e\mesh,0)
         EndIf
      EndIf
   Next
End Function
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Nicdel

BeitragDo, Jan 28, 2010 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du Gegner und Map oder Gegner und Gegner?
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Holzchopf

Meisterpacker

BeitragDo, Jan 28, 2010 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Was sind MAP und PLY? Hast du auch irgendwo UpdateWorld? Ich sehe kein RenderWorld und alles ausgaberelevantes - ich nehme mal an, das da ist nur ein Codeausschnitt, aber gerade MAP und PLY wären noch so wichtig Wink

mfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

N0X

BeitragDo, Jan 28, 2010 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ups, vergessen! Embarassed
Code: [AUSKLAPPEN]
Const PLY=1,MAP=2,GEG=3,NPC=4

Global piv    = CreatePivot()
Global cam    = CreateCamera(piv)
Global player = LoadAnimMesh("models\dwarf1.b3d")
Global map1   = LoadMesh("models\map002.3ds")

EntityType(player,PLY)
EntityType(map1,MAP)

For i = 0 To 1
   e.enemy   = New enemy
   e\x#      = Rnd(100,300)
   e\y#      = 10
   e\z#      = Rnd(100,500)
   e\yaw     = Rnd(-90,90)
   e\mesh    = CopyEntity(gegner)
   e\health% = 90
   e\exxp%   = 120
   e\id$     = "Riese"
   e\stat%   = 0
   EntityType(e\mesh,GEG)
Next

For o = 0 To 49
   e.enemy   = New enemy
   e\x#      = Rnd(100,300)
   e\y#      = 10
   e\z#      = Rnd(100,500)
   e\yaw     = Rnd(-90,90)
   e\mesh    = CopyEntity(horse)
   e\health% = 40
   e\exxp%   = 50
   e\id$     = "Figur"
   e\stat%   = 1
   EntityType(e\mesh,NPC)
Next

Collisions NPC,MAP,2,3
Collisions GEG,MAP,2,3
While Not KeyHit(1)
   updateEnemys()

        RenderWorld()
        UpdateWorld()
Wend
End

Function updateEnemys()
   ms = MilliSecs()
   For e.enemy = Each enemy
      PositionEntity e\mesh,e\x#,e\y#,e\z#
      RotateEntity e\mesh,0,e\yaw,0
      
      If e\timer < ms Then
         e\timer = ms +Rnd(6000,10000)
         e\richtung=Rnd(0,3)
         e\stopp=0
      EndIf
      If e\st_timer < ms Then
         e\st_timer = ms +Rnd(4000,8000)
         e\stopp = 1
      EndIf
      If e\stopp=0
         If e\richtung=0 Then
            e\x#=e\x#-.5
            If e\id$ = "Riese" Then
               If Not Animating(e\mesh) Then
                  Animate(e\mesh,1,.1,1)
               EndIf
            EndIf
         EndIf
         If e\richtung=1 Then
            e\z#=e\z#-.5
            If e\id$ = "Riese" Then
               If Not Animating(e\mesh) Then
                  Animate(e\mesh,1,.1,1)
               EndIf
            EndIf
         EndIf
         If e\richtung=2 Then
            e\x#=e\x#+.5
            If e\id$ = "Riese" Then
               If Not Animating(e\mesh) Then
                  Animate(e\mesh,1,.1,1)
               EndIf
            EndIf
         EndIf
         If e\richtung=3 Then
            e\z#=e\z#+.5
            If e\id$ = "Riese"
               If Not Animating(e\mesh) Then
                  Animate(e\mesh,1,.1,1)
               EndIf
            EndIf
         EndIf
      Else
         If e\id$ = "Riese" Then
            Animate(e\mesh,0)
         EndIf
      EndIf
   Next
End Function
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Nicdel

BeitragDo, Jan 28, 2010 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstellst du die Gegner evtl. in der Map?
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Holzchopf

Meisterpacker

BeitragDo, Jan 28, 2010 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Müsstest du für NPCs und co nicht auch noch EntityRadius setzen?
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

N0X

BeitragDo, Jan 28, 2010 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe EntityRadius mal hinzugefügt, und auch so erstellt das sie nicht in der Map sind.
Geht immer noch nicht.
Im Moment geht es mir hauptsächlich darum das sie nicht in einen Berg z.B. reinlaufen können.
Ich kann die Entitys auch nicht translaten, wegen "PositionEntity e\mesh,e\x#,e\y#,e\z#". Das geht erst wenn ich e\y# durch 0 ersetze, dann lassen sie sich nach unten bewegen.
Hm.
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group