RPG Char Move ...Problem
Übersicht

![]() |
Mathias-KwiatkowskiBetreff: RPG Char Move ...Problem |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group