Iso-lauf-engine
Übersicht

ZAiMoNBetreff: Iso-lauf-engine |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-.- | ||
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Erstmal danke für die schnelle antwort aber da stimmt einiges nicht.
1. Das behebt das problem nicht. ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
christian.tietze@gmail.com - https://christiantietze.de
macOS |
ZAiMoN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
was soll den figurx und figury darstellen? | ||
In Online Games Gilt:
Luck Beats Skill Lag Beats Skill Cheat Beats Skill |
ZAiMoN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wieso hilft mir den keiner ![]() |
||
In Online Games Gilt:
Luck Beats Skill Lag Beats Skill Cheat Beats Skill |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hubsi hat Folgendes geschrieben: Das sollte das hin und herlaufen beheben:Code: [AUSKLAPPEN] Es soll ja auch nur ein Beispiel darstellen. Die Werte und Variablen sind natürlich noch anzupassen If herox>zielx-3 And herox<zielx+3 Then tralala
usw... ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
ZAiMoN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Damit gehts:
http://www.blitzbase.de/quellcode/pathfinding.zip |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
ZAiMoN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kannst du das programm auch mal genauer erklären? | ||
In Online Games Gilt:
Luck Beats Skill Lag Beats Skill Cheat Beats Skill |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() ![]() Aber den Code haben sicherlich schon mehrere Leute hier ausm Forum verwendet, vielleicht kann Dir da jemand weiterhelfen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
ZAiMoN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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
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] 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 If rechts_gehen And tc(1)<101
Wenn das Dein Problem nicht löst hab ich immer noch nicht verstanden um was es eigentlich geht ; Rennen was die Pixel hergeben... EndIf ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
ZAiMoN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nun hast du es verstanden ![]() 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 ![]() |
||
In Online Games Gilt:
Luck Beats Skill Lag Beats Skill Cheat Beats Skill |
ZAiMoN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group