RPG Char Move ...Problem

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: RPG Char Move ...Problem

BeitragMi, Mai 28, 2014 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hi leute ich habe ein problem bei meinem rpg.

der im rpg editor bestimme ich bereiche wo der char nicht durchlaufen kann (ebene 5)
das funktioniert auch dehr gut, problem an dem ganzen ist das der char an dem tile nicht laufen kann und an dem darunterliegenden, warum?

meine funktion ( 4punkte kollisions kontrolle )

Code: [AUSKLAPPEN]
'Normales Laufen nach Rechts
            If E.Move.Bewegen = 1 Then
               'Schauen ob laufen möglich ist
               If TMPPosX > - 1 And TMPPosY > - 1 And TMPPosX < 1000 And TMPPosY < 1000 Then
                  If Map[(E.Stats.X + 24) / 32, (E.Stats.Y) / 32, 5] Or Map[(E.Stats.X + 24) / 32, (E.Stats.Y + 32) / 32, 5] Then
                  Else
                     E.Stats.X = E.Stats.X + E.Move.Speed
                     If MilliSecs() - E.Stats.TileTimer > 199 Then E.Stats.Tile = E.Stats.Tile + 1 E.Stats.TileTimer = MilliSecs()
                     If E.Stats.Tile > 5 Then E.Stats.Tile = 3
                     If E.Stats.Tile < 3 Then E.Stats.Tile = 5
                  EndIf
               EndIf
            ElseIf E.Move.Bewegen = 2 Then 'Unten
               If TMPPosX > - 1 And TMPPosY > - 1 And TMPPosX < 1000 And TMPPosY < 1000 Then
                  If Map[(E.Stats.X + 24) / 32, (E.Stats.y + 32) / 32, 5] Or Map[(E.Stats.X) / 32, (E.Stats.y + 32) / 32, 5] Then
                  Else
                     E.Stats.y = E.Stats.y + E.Move.Speed
                     If MilliSecs() - E.Stats.TileTimer > 199 Then E.Stats.Tile = E.Stats.Tile + 1 E.Stats.TileTimer = MilliSecs()
                     If E.Stats.Tile > 8 Then E.Stats.Tile = 6
                     If E.Stats.Tile < 6 Then E.Stats.Tile = 8
                  EndIf
               EndIf
            ElseIf E.Move.Bewegen = 3 Then ' Links
               If TMPPosX > - 1 And TMPPosY > - 1 And TMPPosX < 1000 And TMPPosY < 1000 Then
                  If Map[(E.Stats.X) / 32, (E.Stats.y) / 32, 5] Or Map[(E.Stats.X - 1) / 32, (E.Stats.y + 32) / 32, 5] Then
                  
                  Else
                     E.Stats.X = E.Stats.X - E.Move.Speed
                     If MilliSecs() - E.Stats.TileTimer > 199 Then E.Stats.Tile = E.Stats.Tile + 1 E.Stats.TileTimer = MilliSecs()
                     If E.Stats.Tile > 11 Then E.Stats.Tile = 9
                     If E.Stats.Tile < 9 Then E.Stats.Tile = 11
                  EndIf
               EndIf
            ElseIf E.Move.Bewegen = 4 Then 'Oben
               If TMPPosX > - 1 And TMPPosY > - 1 And TMPPosX < 1000 And TMPPosY < 1000 Then
                  If Map[(E.Stats.X) / 32, (E.Stats.y) / 32, 5] Or Map[(E.Stats.X + 24) / 32, (E.Stats.y) / 32, 5] Then
                     
                  Else
                     E.Stats.y = E.Stats.y - E.Move.Speed
                     If MilliSecs() - E.Stats.TileTimer > 199 Then E.Stats.Tile = E.Stats.Tile + 1 E.Stats.TileTimer = MilliSecs()
                     If E.Stats.Tile > 2 Then E.Stats.Tile = 0
                     If E.Stats.Tile < 0 Then E.Stats.Tile = 2
                  EndIf
               EndIf
            EndIf
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017
 

Tritium

BeitragDo, Mai 29, 2014 2:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich das richtig sehe veranlasst hier:
Code: [AUSKLAPPEN]
If Map[(E.Stats.X + 24) / 32, (E.Stats.Y) / 32, 5] Or Map[(E.Stats.X + 24) / 32, (E.Stats.Y + 32) / 32, 5] Then

der Teil nach dem Or, dass Du das darunterliegende Tile nicht betreten kannst.

Abgesehen davon würde ich an Deiner Stelle die Ifs umschreiben, da der Teil nach dem If jeweils immer leer ist und der eigentliche Code im Else-Zweig steht. Da kann man auch direkt ein If-Then draus machen und den Else-Zweig weglassen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group