Mehrere Tasten belegen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Mehrere Tasten belegen

    hallo

    ist es möglich mehrere tasten zu belegen..
    also das zb. wenn man mit dem player movement nach links gehen will gleichzeitig mit den tasten links und a machen könnte und es auch per mouseklick machen kann?
    normal sieht der code ja so aus

    Quellcode

    1. if keyboard_check(ord("A"))
    2. hspeed=-4
    3. image_speed=0,25
    4. sprite_index=spr_player_left:
    5. geht das nicht das ich einfach so schreibe
    6. if keyboard_check(ord("A"),vk_left)
    7. hspeed=-4
    8. image_speed=0,25
    9. sprite_index=spr_player_left:
    Alles anzeigen


    mit ist klar das das mit dem mouseklick eine eigene sache ist die man proggen muss.
    bitte um hilfe ...thx an alle nutzer die mir helfen wollen


    Und noch eine kleinigkeit ich will das wenn das player vor bestimmten sachen steht das ein zeichen kommt das er damit was machen kann wie bei böse nachbarn
    das gleiche zeichen sollte auch bei der maus erscheinen.
  • Also du kannst if abfragen mit zB and oder or verknüpfen

    GML-Quellcode

    1. if keyboard_check(ord("A")) or keyboard_check(vk_left)
    2. {
    3. hspeed=-4
    4. image_speed=0,25
    5. sprite_index=spr_player_left:
    6. }

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Und schau dir mal die funktion collision_circle (oder collision_rectangle) an.


    docs.yoyogames.com/source/dadi…ons/collision_circle.html

    Damit kannst du prüfen, ob dein Player Objekt sich in einem Radius eines anderen Objektes befindet.

    Wenn der Player sich nun in dem Radius befindet, und zb die E taste drückt (Objekt benutzen taste zb), wird die gewünschte Aktion ausgeführt.
  • danke euch für die tolle hilfe.wirklich super
    werd ich gleich mal probieren.

    eine frage noch: kennt ihr jemanden der vielleicht sprites von playern erstellt weil die die ich selbst mache wirklich nicht gut aussehn.
    wenns geht ohne geld.(dafür aber mit benannter copyright signatur im spiel)
    aber wenns nicht anders geht mit geld nur wenig halt.da ich schüler bin und nur taschengeld bekomme.



    also der code lautet so:also ich habs jetzt mal mit einer kiste gemacht.ich will das wenn der player davor steht ein zeichen erscheint das er dann mit E oder Enter anklicken kann und ein menü öffnet sich.
    if collision_circle(x,y,50,obj_player,true,true){
    instance_create(865,468,obj_hello)
    }
    aber mit was kann ich jetzt sagen das das bild nur solange erscheint wie das der player in dem radius ist===???also das es wieder verschwindet...zurzeit bleibt es einfach
    ich habs mit alarm event probiert aber ich bekomms nicht hin.bitte um hilfe

    und ich hab jetzt mal diesen code gemacht
    if keyboard_check(vk_enter) or keyboard_check (ord("E")){

    }


    nur weis ich nicht wie ichs sagen soll das ich diese taste als eingabe taste haben will also was könnte ich hier benutzen.bitte um hilfe

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von acidrain833 ()

  • Hier mal ein kleiner "NPC" der dir vll hilft es zu verstehen:

    Im Create Event:

    GML-Quellcode

    1. PlayerIsInRadius = false // Spieler ist nicht in Reichweite
    2. SatzToSay = "Klick mich Hart!" // Nachricht die erscheinen soll


    Im "Step Event":

    GML-Quellcode

    1. if collision_circle(x+16,y+16,32,obj_player,0,1)>-1 // Überprüfen: Spieler ist in einem Radius von "32" habe hier Circle (Kreis) genommen
    2. {
    3. PlayerIsInRadius = true // legt fest das der Spieler im Radius ist
    4. }
    5. else PlayerIsInRadius=false; // Wenn spieler nicht im Radius ist wird es wieder zurückgestellt


    und dann im "Draw" Event:

    GML-Quellcode

    1. draw_self() // Sich selbst zeichnen
    2. draw_set_alpha(1) // -Nicht- durchsichtig
    3. if PlayerIsInRadius = true // Abfragen ob der Spieler den im Radius ist?
    4. {
    5. draw_text_colour(x+(sprite_width/2-floor(string_width(SatzToSay)/2)), y-32, SatzToSay, c_white, c_white, c_black, c_black, 1) // Ja spieler ist im Radius: Zeigt Text mittig über Sprite an der im Create Event festgelegt wurde
    6. }


    Das ganze ist auf ein 32x32 pixel großes Sprite / Objekt ausgelegt.

    Wenn du dich nun dem Objekt näherst und dich in dem Radius des objektes dich befindest, zeigt es die Nachricht an die du im Create Event unter "SatzToSay" eingegeben hast.

    Um nun eine Aktion bei Tastendruck ausführen zu lassen, musst du deinen Code

    GML-Quellcode

    1. if keyboard_check(vk_enter) or keyboard_check (ord("E")){
    2. }


    mit in den Step Event packen und mit der Abfrage verknüpfen ob der Spieler sich im Radius befindet. In etwa so:

    GML-Quellcode

    1. if PlayerIsInRadius = true
    2. {
    3. if keyboard_check(vk_enter) or keyboard_check (ord("E"))
    4. {
    5. //führe etwas aus
    6. }
    7. }


    Viel Spaß beim probieren :)
  • woow danke für deine tolle antwort und hilfe

    aber hier mal mein code:

    im Objekt Tür wo das zeichen erscheinen soll
    CREATE EVENT:

    Quellcode

    1. image_speed=0;
    2. image_index=0;
    3. PlayerIsInRadius = false // Spieler ist nicht in Reichweite


    STEP EVENT:

    Quellcode

    1. if collision_circle(x,y,50,obj_player,true,true){
    2. PlayerIsInRadius = true // legt fest das der Spieler im Radius ist
    3. instance_create(x,y,obj_fragezeichen) //soll das zeichen erstellen das erscheinen soll
    4. }
    5. else if PlayerIsInRadius=false {instance_destroy()} // Wenn spieler nicht im Radius ist wird es wieder zurückgestellt


    leider
    wird durch das instance destroy die tür direkt nicht angezeigt.gibt es
    eine andere möglichkeit eine instanz verschwinden zu lassen???


    ich habe es auch mit dem draw event probiert aber da macht er das selbe das er das zeichen dauernd von anfang an anzeigt.

    ich probiers weiter....das hatte ich alles nicht beim letzten spiel das war ein einfaches jumpn run...
  • juhuuuuuuuu es funktioniert
    danke dir wirklich

    ich musste nur im draw event draw sprite machen und das im step event das instance create einfach weg machen. toll danke dir....
    CREATE EVENT von obj_tür

    Quellcode

    1. [/b]image_speed=0;
    2. image_index=0;
    3. PlayerIsInRadius = false // Spieler ist nicht in Reichweite
    4. [b]


    STEP EVENT von obj_tür

    Quellcode

    1. if collision_circle(x+16,y+16,32,obj_player,0,1)>-1 // Überprüfen: Spieler ist in einem Radius von "32" habe hier Circle (Kreis) genommen
    2. {
    3. PlayerIsInRadius = true // legt fest das der Spieler im Radius ist
    4. }
    5. else PlayerIsInRadius=false; // Wenn spieler nicht im Radius ist wird es wieder zurückgestellt



    DRAW EVENT von obj_tür

    Quellcode

    1. [/b]draw_self() // Sich selbst zeichnen
    2. draw_set_alpha(1) // -Nicht- durchsichtig
    3. if PlayerIsInRadius = true // Abfragen ob der Spieler den im Radius ist?
    4. {
    5. draw_sprite(obj_fragezeichen,0,1024,864)
    6. // Ja spieler ist im Radius: Zeigt Text mittig über Sprite an der im Create Event festgelegt wurde
    7. }[b]


    ich habe für dieses fragezeichen eine animation gemacht jedoch weis ich nicht wo ich den image speed eintragen soll da es ja ein vollkommen anderes objekt ist

    aber noch was ich würde es gerne immer direkt über dem player haben das zeichen also wenn er in diesem bereich ist...
    ich dachte ich kann es ganz einfach mit obj_player.x obj_player.y+20 aber das funkt nicht. weist du abhilfe.....

    ich habs im create event direkt beim obj_fragezeichen probiert....geht nicht und auch wenn ich es im code über das obj_tür mache gehts auch nicht...



    ich weis ich stelle viele fragen aber keine angst ich informiere mich e auch nebenbei aber es sind halt neue bereiche die ich hier angehe .bitte um verständniss

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von acidrain833 ()

  • acidrain833 schrieb:

    juhuuuuuuuu es funktioniert
    ich habe für dieses fragezeichen eine animation gemacht jedoch weis ich nicht wo ich den image speed eintragen soll da es ja ein vollkommen anderes objekt ist

    aber noch was ich würde es gerne immer direkt über dem player haben das zeichen also wenn er in diesem bereich ist...
    ich dachte ich kann es ganz einfach mit obj_player.x obj_player.y+20 aber das funkt nicht. weist du abhilfe.....

    ich habs im create event direkt beim obj_fragezeichen probiert....geht nicht und auch wenn ich es im code über das obj_tür mache gehts auch nicht...


    Image Speed kannst du im Create Event deklarieren, musst es aber nicht zwangsläufig. Du kannst es auch jederzeit schneller/langsamer machen (es kann nicht schneller als die room_speed sein), indem zu es z.B. ins Step oder ins Alarm Event reinpackst mit dem entsprechenden Code. Die einfachste Variante ist jedoch es ins Create Event mit einem konstanten Wert zu packen.

    GML-Quellcode

    1. //Normale Speed
    2. image_speed = 1
    3. //Langsame Speed
    4. image_speed = 1/30


    Zu deinem 2. Problem:

    Versuche im Step Event vom Fragezeichen das hier reinzupacken

    GML-Quellcode

    1. x = obj_player.x
    2. y = obj_player.y+20


    So setzt du die x und y Variable in jedem Step vom deinem Fragezeichen-Objekt auf die x und y Variable von deinem Player-Objekt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von icqgamer ()

  • Schön wenn ich dich weiterbringen konnte :)

    Es bringt nichts, den Imagespeed im Create Event vom Objekt festzulegen, wenn er mit draw_sprite(obj_fragezeichen,0,1024,864) nur den Sprite zeichnen lässt.

    Versuch es mal so:

    Statt deinem Code:

    GML-Quellcode

    1. draw_sprite(obj_fragezeichen,0,1024,864)


    mit diesem:

    GML-Quellcode

    1. Fragezeichen=draw_sprite(obj_fragezeichen,0,obj_player.x,obj_player.y + 20)
    2. Fragezeichen.image_speed=0.5


    Wobei "Fragezeichen" einfach ein Variablen Name ist. Kannst du wählen wie du willst.
    Ich habe auch mal den Code eingebaut das es über dem Player normal angezeigt wird. Sollte eigentlich so funktionieren. Wenn dein Player objekt auch wirklich obj_player heisst.
  • Um mal auf die eigentliche Frage zurückzukommen, ja das geht :

    GML-Quellcode

    1. keyboard_set_map(ord("W"), vk_up);


    In obigem Beispiel mappe ich die Pfeiltaste auf die W-Taste.
    Selbiges geht auch zB mit der Maustaste & Entertaste etc.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • husi012 schrieb:

    @icqgamer Der normale Speed ist 1 nicht room_speed


    Huch, da bin ich durcheinander gekommen mit etwas anderem. Natürlich ist es 1, habe es editiert, um Missverständnisse auszuschließen. Danke für den Hinweis.

    Atomicmaster schrieb:

    Es bringt nichts, den Imagespeed im Create Event vom Objekt festzulegen, wenn er mit draw_sprite(obj_fragezeichen,0,1024,864) nur den Sprite zeichnen lässt.


    Achso, dann habe ich das falsch verstanden. ich dachte das objekt wäre mit dem Sprite belegt!
    Aber meiner Erfahrung nach sollte es im Create Event doch eigentlich auch funktionieren. Hat es bei mir zumindest mal soweit ich weiß.
  • icqgamer schrieb:


    Achso, dann habe ich das falsch verstanden. ich dachte das objekt wäre mit dem Sprite belegt!
    Aber meiner Erfahrung nach sollte es im Create Event doch eigentlich auch funktionieren. Hat es bei mir zumindest mal soweit ich weiß.



    Wenn ich nun aber alles richtig überflogen habe, wird kein Objekt erstellt :) Sondern nur das Sprite selbst gezeichnet ohne ein Objekt.
    Und Ohne eine Objekt, kein Create Event.

    Du hast schon recht, das der Imagespeed im Create Event festgelegt wird (Und auch geändert werden kann zur Laufzeit) von Objekten, aber er lässt das Fragezeichen wie gesagt nur zeichnen. Ohne dafür ein Objekt zu brauchen.

    Falls ich was übersehen habe... steinigt mich!

    Kurz offtopic:

    Rhazul schrieb:

    Um mal auf die eigentliche Frage zurückzukommen, ja das geht :

    GML-Quellcode

    1. keyboard_set_map(ord("W"), vk_up);


    In obigem Beispiel mappe ich die Pfeiltaste auf die W-Taste.
    Selbiges geht auch zB mit der Maustaste & Entertaste etc.


    Würde / Kann man das auch mit Gamepad Tasten machen? Würde mir sehr gelegen kommen :)


  • danke euch allen für die antworten


    wegen dem image_speed:
    ich will das er nur einmal die animation ausführt also wenn der spieler zb in der nähe von object tür ist kommt ja durch das collision_circle ein fragezeichen zum vorschein....
    aber es sollte nur einmal wenn das fragezeichen erscheint die animation durchlaufen und nicht die ganze zeit.

    Das mit dem Fragezeichen.image_speed=0,5
    funktioniert nicht leider.aber das andere schon.ich danke dir :thumbsup:


    ich vergesse immer die variablen....mit denen geht vieles einfacher....muss ich die variable Fragezeichen auch im CREATE EVENT eintragen???ja oder reicht der code von dir oben einfach.



    EINE FRAGE NOCH...in welcher grösse sollte ein raum am besten sein??? ich will das der user im hauptmenü auch die auflösung selbst bestimmen kann. denkt ihr eine raum grösse von 2000x1000 ist zuviel oder gut???
    oder ist es egal in welcher grösse der raum ist ...und man kann auch bei einer raum grösse von 800x600 eine auflösung von 1920x1280 oder so bestimmen???

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von acidrain833 ()