Ergebnis 1 bis 7 von 7

Thema: Komplexe Evente

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von Deamonic Beitrag anzeigen
    Einen Move - Befehl für derartiges gibt es ja nicht, nur für den Helden.
    Doch das geht, einfach in dem du die x- und y-Koordinate des Gegner-Events und des Mitglied-Events vergleichst und dann einfach diese bewegst. Da du das mit dem Radius ja schon gemacht hast, dürfte das nicht so schwer sein.

    Falls du das Demoprojekt von Inelukis Tastenpatch hast, da kannst dir ja mal das ganze Anschauen (Map0020:Maussteuerung - Event0003:NPC-Bewegung) oder das Nachlaufen bei VD2 (auf so gut wie jeder Map). Das Prinzip ist immer das selbe - Vergleich der x- und y-Koordinaten und Event bewegen.

  2. #2
    Zitat Zitat von niR-kun Beitrag anzeigen
    Doch das geht, einfach in dem du die x- und y-Koordinate des Gegner-Events und des Mitglied-Events vergleichst und dann einfach diese bewegst. Da du das mit dem Radius ja schon gemacht hast, dürfte das nicht so schwer sein.
    Natürlich ist das einfach! Das Problem an der Sache ist nur, dass die Events dumm wie stroh sind und wenn sie gegen etwas knallen auch da stecken bleiben, weil sie einfach keine ahnung haben wie sie "drumherum" müssen.
    Insbesondere bei grösseren unpassierbaren Gebieten.

  3. #3
    Die einfachste (und für Makerspiele eigentlich schon ausreichende) Möglichkeit ist das gute alte step toward hero.

    Im XP wurde das so implementiert:
    Code:
    def move_toward_player
        # Get difference in player coordinates
        sx = @x - $game_player.x
        sy = @y - $game_player.y
        # If coordinates are equal
        if sx == 0 and sy == 0
          return
        end
        # Get absolute value of difference
        abs_sx = sx.abs
        abs_sy = sy.abs
        # If horizontal and vertical distances are equal
        if abs_sx == abs_sy
          # Increase one of them randomly by 1
          rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
        end
        # If horizontal distance is longer
        if abs_sx > abs_sy
          # Move towards player, prioritize left and right directions
          sx > 0 ? move_left : move_right
          if not moving? and sy != 0
            sy > 0 ? move_up : move_down
          end
        # If vertical distance is longer
        else
          # Move towards player, prioritize up and down directions
          sy > 0 ? move_up : move_down
          if not moving? and sx != 0
            sx > 0 ? move_left : move_right
          end
        end
      end
    end
    Das musst du dann nur in Makercode umschreiben.

Berechtigungen

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