Ergebnis 1 bis 20 von 27

Thema: Mein KS

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Hm das kommt darauf an, mit was du die Positionen der beiden Events abfragst: entweder mit X/Y-Coordinate oder mit Scene-X/Y. Der Unterschied darin liegt, dass die Coordinates nach den Tiles berechnet wird, also auf welchem Tile das Event steht. Scene-X/Y hingegen holt sich die Bildpunkte aus dem Spielfenster heraus (also maximal x: 320 und y: 240).
    Ich hoff, du weisst erst mal den Unterschied, ist ein wenig holprig erklärt, ich weiss ^^°

    Gut, wie kannst du nun die Entfernung abfragen. Das ist eigentlich sehr einfach.
    Du musst dir erst die differenz der jeweiligen X- oder Y-Koordinaten abfragen, also

    Code:
    Set Variable (Event1-X) Set (this Event) SceneX
    Set Variable (Event1-Y) Set (this Event) SceneY
    //damit holst du dir erst mal X und Y deines aktuellen Events.
    //anstatt "this Event" kannst du auch dein gemeintes Event 
    //hernehmen.
    //Zudem bevorzuge ich persönlich "SceneX/Y", wiel du damit viel genauer
    // rechnen kannst.
    
    Set Variable (Event2-X) Set (Enemy1) SceneX
    Set Variable (Event2-Y) Set (Enemy1) SceneY
    //X und Y des Gegners, wiederum kannst du die Variablen
    //und das Event nennen, wie du willst.
    
    Set Variable (Event1-X) - (Event2-X)
    Set Varialbe (Event1-Y) - (Event2-Y)
    //damit rechnest du dir die Distanz der 2 Events aus.
    
    Fork (if Event1-X < 0)
      Set Variable (Event1-X) * (-1)
    End Case
    Fork (if Event1-Y < 0)
      Set Variable (Event1-Y) * (-1)
    End Case
    //damit fragst du ab, ob die Distanz der beiden Events
    //negativ ist, es kommt ja darauf an, ob du dich einem Event von
    //oben oder von unten, von links oder von rechts näherst.
    //Und daher wird "sicherheitshalber" die Zahl invertiert, also
    // * -1 gerechnet, so bekommst du auf jeden Fall positive Zahlen.
    
    Fork (if Event1-X <= 15)
      Fork (if Event1-Y <= 15)
         //das was du machen willst, wenn du ein Feld entfernt bist
         //wenn die Distand <= 15 ist, dann bist du genau ein Feld
         //von deinem Gegner entfernt.
      End Case
    End Case
    Ich glaube, so müsste es jedenfalls theoretisch stimmen. Hab mal im Pseudocode geschrieben...
    Ich hoff mal, dass das für nen Anstoss hilft ^^°

    Nachteil bei dieser Methode: Du müsstest eine Prozedur schreiben, die die Entfernung von deinem "Helden" zu JEDEM Gegnerevent ausrechnet, und das können viele Variablen werden mit der Zeit. Stell dir mal vor, du hast 20 Gegner rumlaufen ^^° Also entweder Gegneranzahl pro Map beschränken, oder warten, bis jemand anderer nen besseren Vorschlag postet ... oder du findest einen anderen Weg oder hast shcon eine Idee, wie du das anstellen willst ^^

    Geändert von TheByteRaper (22.12.2003 um 19:25 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •