PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Koordinaten Problem



blackeye
05.08.2004, 23:49
Hi ;),

Ich mache ein Spiel , es soll ein aussergewöhnliches KS haben.
Nun das Prob , in diesem KS lasse ich die Maus anzeigen alles Abfragen und ich kann die Maus bewegen , alles kein Problem , aber wie Frage ich ab ob der Mauszeiger also die Koordinaten des Mauszeigers über einem Event sind?
Wenn sie dann über dem Event sind und ich drücke dann z.B. die linke Maustaste (Wert ist 1) dann soll etwas passieren.Von mir aus kann der Char dann blinken oder so was!

Könnt ihr helfen?

blackeye :D

S!r !ronh@nd
06.08.2004, 00:00
du speicherst die "Scene X" und "Scene Y"-Werte des Events. Diese Werte vom Mauszeiger solltest du ja schon in irgendwelchen Variablen haben, weil du den Mauszeiger mit "Move Picture" ja ständig bewegst. Dann frag mit Forks ab, ob sichdas Event in X und in Y-Richtung näher als 16 Pixel an dem Mauszeigerbild befindet. Wenn ja, dann löse das Event aus, das dann Passiert (z.B einen Angriff)...

blackeye
06.08.2004, 00:19
Dann frag mit Forks ab, ob sichdas Event in X und in Y-Richtung näher als 16 Pixel an dem Mauszeigerbild befindet.

Dumme Frage , aber könntest du mir nen Code posten , weiß grad nichts damit anzufangen.

blackeye:D

S!r !ronh@nd
06.08.2004, 00:39
Du hast doch die Scene-Werte des Events in 2 Variablen gespeichert (z.B. Var0001 "Event X" und Var0002 "Event Y"). Dann hast du durch die Maussteuerung doch die Scene-Werte des Mauszeiger-Pics in zwei Variablen (z.B. Var0003 "Maus X" und Var0004 "Maus Y").

Jetzt brauchst du noch zwei Hilfsvariablen Var0005 "Hilfe X" und Var0006 "Hilfe Y".

<>Change Variable "Hilfe X" SET Var0001
<>Change Variable "Hilfe Y" SET Var0002
<>Change Variable "Hilfe X" - Var0003
<>Change Variable "Hilfe Y" - Var0004

Du berechnest die Differenz der Scene-Werte des Events und der des Mauszeigers. Dann prüfst du, ob diese Differenz, also die Variablen Hilfe X und Hilfe Y beide "above -16" aber auch "less 16" sind. Wenn das zutrifft, löse z.B. den Angriff aus!

blackeye
06.08.2004, 01:10
Ok,ich bedanke mich recht herzlich für deine Hilfe §thx.

blackeye :D

EDIT:
Damit ich keinen neuen Thread aufmachen muss Frage ich meine Frage hier :
Wie kann ich den Hero in die Richtung des Mauszeigers glotzen lassen?

Dhan
06.08.2004, 02:32
Wieder speicherst du die Scene-Werte von Held und Maus, bildest die Differenz und abhängig davon, ob x/y positiv ist und welche Zahl den höheren Betrag hat machst du ein Move Event mit Face up, Face down etc

Bedingungen:
hx/y: heroscenes mx/y: mausszenes
x= hx - mx
y= hy - my

x > 0 AND |x| > |y| -> Face Left
x < 0 AND |x| > |y| -> Face Right
y > 0 AND |y| > |x| -> Face Up
y < 0 AND |y| > |x| -> Face Down

x = 0 AND y = 0 -> Face gen Himmel
weiterhin gibts noch die Grenzfälle, wenn |y| = |x| ist... wenn du den Code so lässt, passt das aber, weil er dann einfach die Blickrichtung beibehält, wenn das der Fall ist
den Betrag (||) einer Zahl rechnest du so aus:
Zahl < 0 -> Zahl * -1 (mach das aber mit einer neuen Variable, die alte wird ja noch gebraucht)

blackeye
06.08.2004, 03:44
@Dhan:
Dankeschön.

@all:
und noch eine Frage:
Wie Frage ich ab ob ein Event , sagen wir mal 10 Felder vom Hero entfernt ist , und wenn er dann innerhalb dieser 10 Felder ist
etwas passiert , z.B. das Event fängt an zu schießen?

blackeye:D

Dhan
06.08.2004, 04:36
hx/y: koordinaten (nicht scenes diesmal!) des helden
ex/y: selbes vom event

hx = ex AND |hy-ey| <= 10 --> ballern
hy = ey AND |hx-ex| <= 10 --> ballern

blackeye
06.08.2004, 04:56
Also in deiner schreibweise lässt es sich nur schwer verstehen , kannst du das bitte deutlicher schreiben?

blackeye:D

Dhan
06.08.2004, 07:28
hx = ex AND |hy-ey| <= 10 --> ballern
könnte man z.B. auch so schreiben:

fork (hx = ex)
{
vara=hy
vara=vara-ey
fork (vara < 0)
{
vara=*-1
}
fork (vara <= 10)
{
//ballerscript
}
}

ich fand meine schreibweise nur einfacher

das AND bedeutet halt immer, dass BEIDE Bedingungen links und rechts vom AND erfüllt sein müssen (logischer Operator) und das --> ist eben, was dann passiert

blackeye
07.08.2004, 03:05
Ja Dhan,ich blicke immer noh nicht durch diesen Code.
Du könntest einen letzten Versuch starten und es z.B. mit Maker Befehlen formulieren.
Etwa so:

<ChangeVariable(Herox)-(Eventx)>
<ForkCondition>:
<IF Variable(Herox) = 10>
<Flash Event(Hero)>

So würde ich es in meinen Kopf kriegen.
Und könntest du das mit der Blickrichtung auch nochmal so ausdrücken?
Ist sehr wichtig.

blackeye:D

Dhan
07.08.2004, 04:05
hx = ex AND |hy-ey| <= 10 --> ballern
wäre:
http://dhan.de/maker/scr1.pnghttp://dhan.de/maker/scr2.png

blackeye
07.08.2004, 04:53
Hab jetzt alles so gemacht sowohl mit hx = ex als auch mit hy = ey und es funzt immer noch nicht.

blackeye:D

Dhan
07.08.2004, 06:22
Was hast du als Ballern-Script reingemacht? Probier mal eine Message reinzumachen


btw, du hasts scho als PP gemacht, oder?

blackeye
07.08.2004, 15:19
Ich habs als PP und auch schon Testweise ein Flash Event reingehaun , aber dann Flasht der Char wie verrückt!

Was mache ich falsch?

blackeye:D

Dhan
07.08.2004, 16:52
Na wenn er flasht isses doch gut

blackeye
07.08.2004, 16:55
Ich will aber das er flasht wenn er innerhalb dieser 10 Felder steht.
Also der Held soll Quasi in das Sichtfeld das 10 Felder beträgt reinlatschen und dann fängt das Event (Gegner) an zu balern.

blackeye:D

EDIT:
Noch eine ganz wichtige Frage:
Wie kann ich es machen , dass der Mauszeiger durch Dinge wie Wände blockiert wird?
Also wenn ich den Mauszeiger gegen eine Wand bewege geht er normalerweise drüber , aber er soll durch die Wand angehalten werden sodass er nicht weiterkommt.

blackeye
08.08.2004, 06:40
@Dhan:
Ok ich hab das mit dem Sichtfeld so gemacht:
http://www.250kb.de/images/20040808/kug4hT8z.PNG

is dat richtig?
Denn irgendwie funzt es nicht.
Der SE kommt direkt wenn ich die Map betrete!

PS:Der SE ist nur zum TEST!

Achja :

Variable 27 ist ex
Variable 26 ist hy
Variable 28 ist ey

blackeye:D

Dhan
08.08.2004, 07:43
Fehler bei dir entdeckt, die Fork obs kleiner als 10 ist, ist net innerhalb der Fork obs gleich ist

blackeye
08.08.2004, 07:57
Ich habs jetzt so gemacht und es passiert garnichts mehr
http://www.250kb.de/images/20040808/liSEopc9.PNG
egal ob ich 10 Felder davor,drin oder dahinter bin.

blackeye
09.08.2004, 06:35
Die Frage einen Beitrag über mir ist an Dhan gerichtet.

blackeye:D

Dhan
09.08.2004, 13:18
Also bei mir klappts einwandfrei meine Methode:
http://dhan.de/maker/flashing.zip (Exe fehlt, schieb die von einem anderen Projekt rein)

blackeye
09.08.2004, 15:14
@Dhan:
THX.Funzt super.
Mir ist nur schleierhaft warum das bei mir nicht geklappt hat,naja.

blackeye:D