PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Koordinaten Problem



HyperRPG
22.03.2004, 21:42
Hi, ich habe folgendes Problem:

In einem Parallel Process Event frage ich ständig die Koordinaten des Helden ab. Danach kommt ein Enter Password (1,2,3,4). Bei Fork (1) muss ich die Koordinaten sofort nocheinmal abfragen und in eine andere Var speichern. Aber leider bewegt sich der Held nicht so schnell wie die Variable speichert (was heißt das die gleichen Koords gespeichert werden wie in der zuvorigen.) Das wäre aber alles kein Problem wenn in der Fork AUF KEINEN FALL ein Wait sein darf! Kann mir jemand helfen?!

HyperRPG
23.03.2004, 00:27
Hab ich mich falsch ausgedrückt oder weiß einfach keiner ´ne Antwort?!

Rina
23.03.2004, 00:47
Ich weiss nicht genau, aber die Koordinatenabfrage machst Du besser in einem anderen Event als in dem in dem die Variablen festgelegt werden.

Aretures
23.03.2004, 01:08
Original geschrieben von HyperRPG
Das wäre aber alles kein Problem wenn in der Fork AUF KEINEN FALL ein Wait sein darf! Kann mir jemand helfen?!
Was soll das den heißen...?
Warum soll in der Fork kein wait sein..?
Wenn du den grund nennen würdest könnte man mehr dazu sagen .;)

HyperRPG
23.03.2004, 01:09
das habe ich auch schon überlegt, aber dann würde in dem anderen Event die Sache zu schnell geschehen! Da muss nämlich noch ne Abfrage kommen!

Aretures
23.03.2004, 01:10
Dann mach da doch auch ein wait rein !!!!!
Oder geht das auch net?:confused:

HyperRPG
23.03.2004, 01:14
Da darf kein Wait rein weil es nicht verzögert werden darf. nicht mal eins von 0.0 Sek. (was reichen würde)

Rina
23.03.2004, 01:17
Dann mach in den 2ten Event ein Switch oder erklär das Problem bitte etwas präziser.

Aretures
23.03.2004, 01:18
Ich hab jetzt keine anung was ich gleich labber.
Mach dan einfach zwei Note rein ...leer lassen ..., irgenwas soll dan anders sein...weiss aber nimmer..habs vergessen .Probiers mal:eek:

Rina
23.03.2004, 01:22
Die Koordinaten werden nicht mehr aktualisiert, während das Parallel Event läuft, wenn das das Problem ist...?

HyperRPG
23.03.2004, 02:39
Mal angenommen ich möchte ein Picture mit den Pfeiltasten bewegen. Das Picture soll den Helden darstellen. Dann überprüfe ich zuerst die Koordinaten des Heldencharas und speichere sie in Var0001: Hero X Pos. und Var0002: Hero Y Pos.

Dann mache ich ein Enter Password (Var0005) mit Left,Right,Down,Up (1,2,3,4).
Dann mache ich jeweils vier Forks, welche die Richtung abfragen. In diesen Forks wird das Picture bewegt. Aber nun kommt ja irgendwann mal eine Wand und dann würde das Picture ja immer weiter laufen! Also lässt man den Helden immer unter dem Picture laufen. Versteht ihr was ich meine?!
Man fragt also am Anfang jeder Fork nochmal die Position des Helden ab und speichert diese dann in Var0003: Hero X Pos.2 und Var0004: Hero Y Pos.2

Dann macht man eine neue Fork in der man fragt ob sich die Position des Helden verändert hat. Sollte sie das nicht getan haben darf das Pic sich nicht bewegen, da man dann an einem Kollisionspunkt (same level) ist.

Das Problem ist, dass der Held sich nicht schnell genug für die Abfrage bewegt. Man bräuchte mindestens ein Wait von 0.0! Das dauert aber zu lange denn dieses Wait würde ja auch bei Dauerdruck dieser Taste immer wieder ausgeführt und das macht die Bewegung des Pics zu ruckartig. Ich brauche halt eine Abfrage vor dem Bewegen des Pics ob der Held seine Position verändert hat und das am besten ohne Wait!!

Ich hoffe das ist nun verständlich ausgedrückt :(

Rina
23.03.2004, 02:47
Hmm... Du könntest für jedes Feld eine Variable machen ob sich der Held bzw. das Picture in die eine oder andere Richtung bewegen kann aber es müsste auch noch einen einfacheren Weg geben.

Edit: Bzw. genau andersrum :rolleyes:

HyperRPG
23.03.2004, 19:36
Hm..es würde gehen wenn man in eine Variable speichern könnte ob das Feld wo sich das Picture drauf bewegt "same level" oder "below" ist. Geht das?

RB [Redbounty]
23.03.2004, 19:54
(HeroGFX = unsichtbar xD)

> Change Var. -> Event -> Hero -> Scene X (Beisp. 0001)
> Change Var. -> Event -> Hero -> Scene Y (Beisp. 0002)
> Show Picture 1, Hero, [V(0001),V(0002)]
> Wait 0.0s

Damit wird das Bild immer an der Position angezeigt, an der sich der Hero gerade befindet. Das Wait von 0.0s fällt da kaum in's Gewicht. (Kollisionsabfrage entfällt, ist als wie gewohnt).

Allerdings würde ich das Bild zuerst in einem Autostart/PP-Event anzeigen lassen und dieses im Steuerevent per "Move Picture 0.0s" bewegen lassen. (Schont Engine-Resourcen).

HyperRPG
24.03.2004, 01:01
@rb: das habe ich ja alles schon längst gemacht, das problem ist, dass das Wait von 0.0 trotzdem zu lange dauert! Das ruckeln merkt man!

RB [Redbounty]
24.03.2004, 01:11
Original geschrieben von HyperRPG
@rb: das habe ich ja alles schon längst gemacht, das problem ist, dass das Wait von 0.0 trotzdem zu lange dauert! Das ruckeln merkt man!

Mhh, ich merke die 0,016 Sekunden garnet ;) - bei mir ruckelt da nix. (Wenn du das bereits so gemacht hast (Scene X, Scene Y) hättest du allerdings nicht das Problem mit der Kollisionsabfrage...)

Du könntest das Problem allerdings auch mit einer "Terrain-ID"-Abfrage lösen. Dazu müsstest du zunächst einen neuen Terraintyp erstellen (Könnte man z.B. Wand nennen).

Danach musst du die Chipseteinstellung so bearbeiten, dass alle Hindernisse (Tiles) mit diesem Terraintyp ausgestattet werden.

Wenn der Spieler dann in eine Richtung drückt, fragst du zunächst ab, ob die Terrain-ID (Per Set Terrain ID) der neuen Position <> des Terraintyps ist, welchen du zuvor festgelegt hast. Ist er ungleich, so kannst du das Pic zum neuen Ort bewegen, ist er gleich (ist es also ein Hindernis) lässt du es an der aktuellen Position stehen.

~RB~

HyperRPG
24.03.2004, 01:21
Wieder was dazu gelernt! :D

Aber sag mal, was ist der Unterschied zwischen "Scene X" und "X coordinate"???:confused:

Chrischplak
24.03.2004, 01:31
Scene X ist die Bildkoordinate. Hier wird die Pixel-Position angegeben. Damit lassen sich dann Bilder direkt anzeigen. Die normale X Koordinate ist für die felder zuständig. Verstanden? Ich hoffe mal.

Mfg CP

Edit: Ha, ich war schneller. Aber RB beschreibung is irgendwie besser.

Edit 2:@Hyper: >_< ^^

RB [Redbounty]
24.03.2004, 01:31
Original geschrieben von HyperRPG
Wieder was dazu gelernt! :D

Aber sag mal, was ist der Unterschied zwischen "Scene X" und "X coordinate"???:confused:

Coordinate X = X-Position auf der Map in Tiles. Jedes Feld auf der Map zählt dort einen Punkt im Map-Koordinatensystem. (Tile-Position)
Scene X = X-Position auf der Map * 16 (Also wie Coordinate X, der Wert wird nur mit 16 multipliziert). (Pixel-Position)

Für Y gilt natürlich das Gleiche.

~RB~

Edit: 2 Dumme... ^^

HyperRPG
24.03.2004, 01:45
:...:
Gibt es irgendwie einen Smilie wo sich das Ding selber an die Birne haut ? Nu ja schad ... :D

edit: stimmt! >_< (Dieses Ding ist eindeutig zweitdeutig :D)

Rina
24.03.2004, 03:49
Hmmm... also im Fenster ruckelt der RPG Maker (bei mir) immer etwas, was dann aber auch eigentlich nur bei Pictures auffällt.

Btw. bei meinem Vorschlag bin ich natürlich von den Coordinate X/Y ausgegangen, dass man dem Picture "sagt", wo und in welcher Richtung der Hero geblockt wird.

HyperRPG
25.03.2004, 20:40
@rina: ja, aber das Problem bei deiner Weise ist das die Koordinaten des Helden immer in der Mitte des Bildes abgegeben werden müssen, und dann kannst du sie nicht einfach durch 16 teilen!

Na is ja auch egal. ich habe einen Weg gefunden wie ich das mache.

BTW: Ist "Set Terrain ID" falsch übersetzt worden. Ich hätte das jedenfalls "Save Terrain ID" genannt. :)

RB [Redbounty]
25.03.2004, 20:48
Original geschrieben von HyperRPG
BTW: Ist "Set Terrain ID" falsch übersetzt worden. Ich hätte das jedenfalls "Save Terrain ID" genannt. :)

Richtig erkannt - da hat Don wohl einen Fehler gemacht... :)

Zum Glück hab ich das beim Deutschpatch gleich richtig übersetzt ^^

http://mitglied.lycos.de/rpgmakerpatch/CatImg/Web/TerrainID.png
Schleichwerbung xD

Edit: Oh, und btw: "Get Terrain ID from Variable" ist imo auch falsch ;)

~RB~

Dhan
26.03.2004, 02:18
Original geschrieben von RB [Redbounty]
Coordinate X = X-Position auf der Map in Tiles. Jedes Feld auf der Map zählt dort einen Punkt im Map-Koordinatensystem. (Tile-Position)
Scene X = X-Position auf der Map * 16 (Also wie Coordinate X, der Wert wird nur mit 16 multipliziert). (Pixel-Position)

Für Y gilt natürlich das Gleiche.

~RB~

Edit: 2 Dumme... ^^
Nur auf 20*15 Maps wenn der Held steht.
bewegt er sich ---> Wert dazwischen
ist die Karte größer als ein Sichtfeld, kann z.B. auf 100|100 von den Koordinaten sein, da er aber noch in der Bildmitte ist, wären seine Scene-Werte 160 und 120

HyperRPG
26.03.2004, 02:22
Auf was bezieht sich das denn jetzt?

Chrischplak
26.03.2004, 03:12
Eigentlich hat Dhan die Antwort schon gegeben. Aber nochmal:
Die normalen X/Y Koordinaten beziehen sich auf die Steps des helden, oder die Felder die im maker zu sehen sind. ANgefangen wird hier in der linekn oberen Ecke der MAP.
Die X/Y Scene bezieht sich auf die einzelnen Pixel des Screens. Angefangen wird hierbei in der linken, oberen Ecke des momentanen Bildschirmausschnittes.

Hoffe das war jetzu verständlich.

Mfg CP

RB [Redbounty]
26.03.2004, 03:29
Korrekt - Scene bezieht sich auf den aktuellen Bildschirmabschnitt (Aktuelle Bildschirmposition des Events * 16 (Negative Werte werden erzeugt, falls das Event nicht mehr zu sehen ist)) - ist mir wohl (wieder mal) entfallen ^^" - ansonsten würde das Pic ja auch nicht immer über dem Helden angezeigt werden, sondern sich vom Held entfernen (es schwebt sozusagen davon...), wenn sich der Held auf einer größeren Map als 20x15 bewegt und die Engine anfängt den Screen zu scrollen... (obwohl ich's damals im Deutschpatch mit "Bildausschnitt X/Y" übersetzt hab O_o - naja, man wird halt alt...)

~RB~

Edit: Diese verdammten Rechtschreibfehler...

HyperRPG
26.03.2004, 15:00
Jaja,

das hab ich ja schon längst verstanden.
Aber wie meinte Dhan das?
Was wird in Scene X und Scene Y Variablen gespeichert wenn der Held sich zwischen 2 Feldern bewegt?

Chrischplak
26.03.2004, 15:39
Ich denke er wollte darauf hinaus. hat es aber vielleicht ein bisschen unverständlich ausgedrückt. Wenn nich hoffe ich, dass ers auch mir erklärt.

Mfg CP

RB [Redbounty]
26.03.2004, 16:39
Original geschrieben von HyperRPG
Jaja,

das hab ich ja schon längst verstanden.
Aber wie meinte Dhan das?
Was wird in Scene X und Scene Y Variablen gespeichert wenn der Held sich zwischen 2 Feldern bewegt?

Ganz einfach: Wie er's gesagt hat ^^.

Mal ein kleines Bildchen:

http://mitglied.lycos.de/rpgmakerpatch/CatImg/Web/between.png.

Wenn der Held sich nun bewegt, wird die Position "zwischen den Feldern" als Grundlage genommen - also auch beispielsweise 100|100, wie schon angesprochen. Als Faustregel kannst du dir aber "Bildschirmausschnitt * 16" merken (Rechnet sich leichter ^^) - den Rest erledigt der Maker.

~RB~