Iso-lauf-engine

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

ZAiMoN

Betreff: Iso-lauf-engine

BeitragDi, Apr 20, 2004 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
-.-
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
  • Zuletzt bearbeitet von ZAiMoN am Mo, Apr 26, 2004 17:32, insgesamt 2-mal bearbeitet

Hubsi

BeitragDi, Apr 20, 2004 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sollte das hin und herlaufen beheben:Code: [AUSKLAPPEN]
If herox>zielx-3 And herox<zielx+3 Then tralala

Dasselbe natürlich auch für die y-Achse.

Zu 2.: Speicher die Zielkoords ab:Code: [AUSKLAPPEN]
If MouseHit(1)
  zielx=MouseX()
  ziely=MouseY()
EndIf

Sind die Zielkoords größer 0 läuft er los. Sind die Koords erreicht (siehe oben), stellst Du sie wieder auf 0.

Zu 3.: Es gibt ein Pathfinding-Tut, ich glaub sogar hier im Codearchiv, das sollte da weiterhelfen.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

ZAiMoN

BeitragDi, Apr 20, 2004 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal danke für die schnelle antwort aber da stimmt einiges nicht.

1. Das behebt das problem nicht. Sad
So hab ich es auch schon im letzten thread versucht und es hat nichts gebracht.

2.
Zitat:

If MouseHit(1)
zielx=MouseX()
ziely=MouseY()
EndIf


zielx = plotx + scrollx
ziely = ploty + scrolly
*in plotx und ploty sind schon mousex() und mousey() enthalten.
Die ziel koordinaten sind zwar kein problem nur
If zielx < charx then ... funktioniert nicht



Naja vielleicht liegt es ja an mir, aber so funktioniert es irgendwie nicht.
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

DivineDominion

BeitragDi, Apr 20, 2004 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum rumlaufen:
Lass ihn nicht auf einen Punkt gehen, sondern wähle größere Radien. 10px radius zum Beispiel. Den steuert er an und wenn er drin ist bewegt er sich so nah wie möglich an die Mitte wenn's sein muss Smile Hubsis Vorschlag klingt da shcon ganz vernünftig.Schon mal die unterschiedlichsten IFs und DEBUGLOGs gemacht, um zu schauen ob er in dne Radius reinkommt?
christian.tietze@gmail.com - https://christiantietze.de
macOS
 

ZAiMoN

BeitragDi, Apr 20, 2004 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bekomme keinen kreis hin ..... es wird wenn nur ein würfel aber das hatten wir schon im letzten thread

gibt doch mal bissle genaueren code
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
 

Dreamora

BeitragDi, Apr 20, 2004 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Um herauszufinden ob er in einem gewissen Radius um den Punkt ist machst du einfach

PosX = ZielPunktX - Charx
PosY = ZielPunktY - Chary
If PosX*PosX + PosY*PosY < Distanz*Distanz
bla
endif

also eine einfache Pythagoras abfrage


( wurzeln würde ich vermeiden, kosten um ein vielfaches mehr an zeit als alle vergleichsdistanzen als ^2 anzugeben )


[editiert damit die Variablen auch mit deinen Übereinstimmen]
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Di, Apr 20, 2004 19:41, insgesamt einmal bearbeitet
 

ZAiMoN

BeitragDi, Apr 20, 2004 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
was soll den figurx und figury darstellen?
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
 

ZAiMoN

BeitragDi, Apr 20, 2004 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
If keyhit(1) Then move=1

IF move=1 and herox > zielx bla then
bla
bla


das funktioniert nicht weil wenn die schleife neudurchlaufenwird müsste wieder move = 1 geben tut es dann aber nicht
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
 

ZAiMoN

BeitragDi, Apr 20, 2004 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
wieso hilft mir den keiner Sad
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Hubsi

BeitragMi, Apr 21, 2004 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hubsi hat Folgendes geschrieben:
Das sollte das hin und herlaufen beheben:Code: [AUSKLAPPEN]
If herox>zielx-3 And herox<zielx+3 Then tralala

usw...
Es soll ja auch nur ein Beispiel darstellen. Die Werte und Variablen sind natürlich noch anzupassen Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

ZAiMoN

BeitragMi, Apr 21, 2004 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ne das ist schon klar

also problem 1 und 2 haben sich schon gelöst nur problem 3 steht noch offen da



PS: wenn ich es mit mousehit mache und die mouse bewege läuft der char nicht an die position wo ich hingeklickt habe sondern dahin wo die maus steht.
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Keimax

BeitragMi, Apr 21, 2004 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
musst du mit zielkoordinaten arbeiten.

Code: [AUSKLAPPEN]
if mousehit(1) then
target_x = mousex()
target_y = mousey()
end if

so und dann lässt du ihn zu den koordinaten laufen.

cu
XP3000, FX6600, 1024DDR, BB2d @ W2k,
- > Diesen Text bitte nicht beachten <-
  • Zuletzt bearbeitet von Keimax am Mi, Apr 21, 2004 20:25, insgesamt einmal bearbeitet
 

ZAiMoN

BeitragMi, Apr 21, 2004 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie mach ich das nun mit den wänden?

gibt es da ne einfache lösung oder muss ich bei jedem tile schreiben
If imagescollide(bla) then move=0 aber ich glaube hier würde er dann an den ecken hängenbleiben
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Hubsi

BeitragMi, Apr 21, 2004 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit gehts:

http://www.blitzbase.de/quellcode/pathfinding.zip
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

ZAiMoN

BeitragMi, Apr 21, 2004 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst du das programm auch mal genauer erklären?
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Hubsi

BeitragDo, Apr 22, 2004 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist eine Pathfinding-Routine (nicht von mir!) die den kürzesten Weg vom Start zum Zielpunkt sucht, unter Beachtung beliebig geformter Hindernisse (also Mauern, Zäune, etc.). Wie das ganze genau funktioniert weiß ich leider auch nicht. Ich hätte das mal gebraucht, bin aber nicht durchgestiegen, wie es bei mir mit fremden Code leider öfter ist Wink So hab ich dann selbst was entwickelt, das genau auf das Spiel zugeschnitten war und bin heute eigentlich ganz froh darüber Very Happy
Aber den Code haben sicherlich schon mehrere Leute hier ausm Forum verwendet, vielleicht kann Dir da jemand weiterhelfen Smile
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

ZAiMoN

BeitragDo, Apr 22, 2004 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
aber ich habe garkeine dungeons oder ähnliches.

habe nur ne Iso map im Diamantformat und aussenrum ne Mauer und über diese Mauer soll er nicht laufen.
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Hubsi

BeitragDo, Apr 22, 2004 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso! Ich hab mal eben ein Stück aus meinem letzten Projekt rauskopiert, das arbeitet auch mit Tiles. Dort habe ich die Kolli so gelöst:Code: [AUSKLAPPEN]
tc(0)=map((sx(a)+16)/32,(sy(a)-2)/32)  ; Oben
tc(1)=map((sx(a)+32)/32,(sy(a)+16)/32) ; Rechts
tc(2)=map((sx(a)+16)/32,(sy(a)+32)/32) ; Unten
tc(3)=map(sx(a)/32,(sy(a)+16)/32)      ; Links
tc(4)=map((sx(a)+16)/32,(sy(a)+16)/32) ; Mitte
In map(x,y) sind die Werte der Tiles gespeichert (z.B. 1 für Gras, 2 für Stein, 3 für Blabla, etc.) sx und sy sind die Spielerposition. Die Tiles und die Spielfiguren sind jeweils 32x32 Pixel groß. Wie man sieht speichere ich die Tilenummern die sich rund um Spieler befinden, sowie die Nummer des Tiles "in dem" der Spieler gerade steht (Powerup z.B.) ab. Danach läßt sich leicht entscheiden ob er nun in eine gewisse Richtung weiter kann oder nicht. Nehmen wir bleistiftsweise an alle nicht begehbaren Tiles hätten eine Nummer größer 100:Code: [AUSKLAPPEN]
If rechts_gehen And tc(1)<101
  ; Rennen was die Pixel hergeben...
EndIf
Wenn das Dein Problem nicht löst hab ich immer noch nicht verstanden um was es eigentlich geht user posted image Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

ZAiMoN

BeitragDo, Apr 22, 2004 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
nun hast du es verstanden Smile

hmm ich müsste dann meine tiles halt neu laden und das ganze erweitern auf 8 richtungen.

sollte eigentlich laufen vielen dank

PS: bei fragen oder problemen melde ich mich Smile
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill
 

ZAiMoN

BeitragDo, Apr 22, 2004 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hubsi schau dir das mal an

Code: [AUSKLAPPEN]

Function Hero_arround()

map(charx,chary) = tc0     ; Mitte
map(charx,chary-1) = tc1   ; Oben
map(charx+1,chary-1) = tc2 ; Oben-Rechts
map(charx+1,chary) = tc3   ; Rechts
map(charx+1,chary+1) = tc4 ; Unten-Rechts
map(charx,chary+1) = tc5   ; Unten
map(charx-1,chary+1) = tc6 ; Unten-Links
map(charx-1,chary) = tc7   ; Links
map(charx-1,chary-1) = tc8 ; Oben-Links

End Function


habe die 9 tc variabeln global gesetzt und aber wenn ich die Funktion einsetze kommt die meldung "memory access violation"
Mit den Charx,Chary koordinaten sollte so doch gehen auf ne iso map sind ja Weltliche Koordinaten.
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group