PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 8 Frames Button



SMWma
12.08.2009, 17:51
Ich arbeite an ein Kampfsystem, welches nur von Events läuft. Also taucht in diesen Events natürlich der Befehl If C Buttom is pressed, welches in einer Conditional Branch ist. Nun ist mir ein schwerer Fehler unterlaufen:
Man kann jeden Actionkamof gewinnen, indem man den C-Buttonm gedrückt hält:( Und das ist ja bekanntlich nicht gut xD
Ich habe jetzt schon mehrere Gegner koppiert und im Spiel verteilt. Hier eure Aufgabe:
Ist es möglich, denConditional Branch befehl The C-Buttom is being pressed so umzustellen, dass er sobald die Taste gedrückt wurde, 8 Frames lang inaktiv wird und erst nach diesen 8 Frames die C Taste wieder gedrückt werden kann? Allerdings nur bei diesem Befehl? Belohnung:
Creditseintrag
Gastrolle in ein RTP-Spiel, als RTP-Stil xD

strich
12.08.2009, 18:53
Also ich würd empfehlen:
1 extra event machen, auf parallel stellen und darein kommt:

-If c pressed
- switch[x] = on
- wait 8 frames
-end

dann das event mit dem eigentlichen angriff extra machen und das ausführen sobald switch[x] on is und am ende des events x auf off setzen

SMWma
12.08.2009, 20:00
Damit wäre immernoch ein ähnliches Ergebniss:
Der Held kann immernoch angreifen, indem er auf die Entertaste drückt.

strich
12.08.2009, 20:30
aber nur alle 8 frames und das wolltest du doch oder nich :confused:

SMWma
12.08.2009, 22:40
ich will, das man nach 8 Frames die Taste wieder drücken kann. Davor soll das ignoriert werden.

Wagshadow
12.08.2009, 23:16
das müsste wie es aussieht durch strichs methode funktionieren.
Hast du maybe vergessen, den switch am ende wieder off zu stellen?

oder wenn dein event parallel ist und immer eine Aktion macht wenn der C Button gedrückt wird müsste es auch gehen wenn du die 8 Waitframes am Ende hinpackst.

SMWma
12.08.2009, 23:40
ja, aber ich will, das man Enter erneut drücken muss...

Wagshadow
13.08.2009, 00:00
hm? also THEORETISCH wäre das ja so:

Enter wird gedrückt -> extra Event wird gestartet
Extra Event stellt switch x auf an.
Daraufhin Startet das Parallele Hauptevent und führt die Aktionen aus.
Dann wartet das extra Event 8 Frames bevor es nochmal funktioniert.


So sollte das eigentlich gehen.

Falls nicht, erhöhe mal die Wartezeit extrem, vielleicht liegts nur daran dass du den Unterschied von 8 Frames net bemerkst.

strich
13.08.2009, 00:34
adrian hat recht, wenn man das ganze nach dieser methode macht kann man auch C gedrückt halten, klar das event wird dann nur alle 8 frames ausgeführt, aber es wird dauerhaft ausgeführt bis man c loslässt. Das problem liegt daran das der enterbrain interpreter prüft ob der button gedrückt ist, was er ja auch ist wenn man ihn gedrückt hält. Die lösung ist ganz einfach du nimmst das gleiche event wie oben nur die condition änderst du auf nen script das sieht dann so aus:


@>Conditional Branch: Script: Input.trigger?(Input::C)
@>Control Switches: [x] = ON
@>Wait: 8 frame(s)
@>
: Branch end
@>

Hier der Script befehl den du in die condition schreibst (da gibts ja ne extra script zeile ich glaub direkt unter dem button zeug)

Input.trigger?(Input::C)

SMWma
13.08.2009, 12:38
ich idiot... Es gibt da sogar ein Befehl xD
Ob deins gehen würde, Strich weiss ich nicht. Aber der Befehl, den ich meine lautet:
Buttom Input Processing...
Dann stell ich die Varialbe ein und frage ab, ob sie 13(Enter) beträgt. Der Rest ist gleich xDDDD
Aber deins sollte auch gehen... Bei dir hat man sogar ein Eventbefehl weniger verbraucht xD

strich
13.08.2009, 12:53
Ok freut mich wenns geht nur noch mal falls es jmd braucht: :)


Input.press?(Input::C)
Press überprüft ob die taste gerade gedrückt ist, also egal ob man sie gerade erst drückt oder ob man sie bereits gedrpckt hält.

Input.trigger?(Input::C)
Trigger überprüft nicht ob die taste gedrückt ist, sondern ob sie gedrückt wird.

Input.repeat?(Input::C)
Reapeat überprüft, ob die Taste gedrückt gehalten wird, zum beispiel beim laufen, der held läuft solange in die richtung, wie man die pfeiltaste gedrückt hält, und stoppt sobald man sie loslässt.

Das ganze kann man entweder in ein script einbauen oder eben auch in eine condition. C kann man natürlich mit DOWN oder ähnlichen austauschen.
Hoffe es hilft wem :D

SMWma
13.08.2009, 13:18
ich dachte immer, der Held läuft mit Input.press?(Input::C)
Also zwischen Input.press?(Input::C) und Input.repeat?(Input::C)
verstehe ich den unterschied nicht...

strich
13.08.2009, 13:32
also press sendet wenn die taste gedrückt ist ein true, und repeat sendet solange true bis die taste losgelassen wird, klar mann kann den held auch mit press laufen lassen aber repeat is dann noch ne vereinfachung