Button für iPhone/iPad erstellen

  • iOS

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

  • Button für iPhone/iPad erstellen

    Hallo Leute,

    ich würde für mein Jump N Run fürs iPhone gerne ein paar Steuerungsbutton erstellen die auf Berührung reagieren, also alles was man so braucht: links, rechts, springen, schiessen etc...

    Habe dies hier in den step event des Buttons gesetzt:

    GML-Quellcode

    1. if (device_mouse_check_button_pressed(0,mb_left))// Tue irgendwas



    Jetzt reagiert er aber nicht nur wenn ich den Button drücke, sondern auch wenn ich außerhalb des Buttons drücke, sprich er reagiert auf den ganzen Bildschirm.

    Wie bekomme ich es hin das er nur reagiert wenn ich auf den Button drücke?

    Vielen Dank im Voraus!

    Gruß,
    Pascal
  • Indem du wie beim normalen GM noch die Koordinaten abfragst.

    Beispiel für GM 8.1:

    GML-Quellcode

    1. if (mouse_x < 100 && mouse_x > 50 && mouse_y < 250 && mouse_y > 225 && mouse_check_button(mb_left)) { // Tu was!


    Für Studio:

    GML-Quellcode

    1. if (device_mouse_x(0) < 100 && device_mouse_x(0) > 50 && device_mouse_y(0) < 250 && device_mouse_y(0) > 225 and device_mouse_check_button_pressed(0,mb_left)) { // TU was!


    Es steht sogar ein Beispiel in der offiziellen Hilfe was dein Problem anbelangt...
    Ausserdem würde ich device_check_button_release() nehmen, da es bei Pressed sonst jeden Step wiederholt wird.
    :thumbsup:
  • Pressed wird nicht jeden Step wiederholt. Das wird es nur wenn du weder pressed noch released schreibst. Der Unterschied zwischen pressed und released ist lediglich, ob es am Anfang, also beim herunterdrücken oder am Ende, also beim loslassen ausgelöst wird.

    edit: wie willst du eigentlich mit 8.1 für iOS bauen? Dafür brauchst du doch Studio + iOS-Plugin...
    Einige meiner Spiele:
  • Ich weiß nicht, ob das in Studio auch so geht, aber versuchs mal:

    GML-Quellcode

    1. if (device_mouse_check_button_pressed(0,mb_left) && position_meeting(device_mouse_x(0),device_mouse_y(0),self))
    2. {
    3. // code
    4. }
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)
  • levarris07 schrieb:


    Ich weiß nicht, ob das in Studio auch so geht, aber versuchs mal:

    GML

    if (device_mouse_check_button_pressed(0,mb_left) && position_meeting(device_mouse_x(0),device_mouse_y(0),self))
    {
    // code
    }

    Danke das funktioniert!

    jlsnews schrieb:


    Indem du wie beim normalen GM noch die Koordinaten abfragst.


    Für Studio:

    GML

    if (device_mouse_x(0) < 100 && device_mouse_x(0) > 50 && device_mouse_y(0) < 250 && device_mouse_y(0) > 225 and device_mouse_check_button_pressed(0,mb_left)) { // TU was!

    Es steht sogar ein Beispiel in der offiziellen Hilfe was dein Problem anbelangt...
    Ausserdem würde ich device_check_button_release() nehmen, da es bei Pressed sonst jeden Step wiederholt wird.
    Danke für Deine Hilfe! Ich finde die Lösung von levarris07 (siehe oben) jedoch etwas einfacher. Oder hat Deine Lösung gegenüber seiner irgendwelche Vorteile?


    jlsnews schrieb:

    Es steht sogar ein Beispiel in der offiziellen Hilfe was dein Problem anbelangt...
    Das habe ich leider nicht gefunden... Kannst du mir bitte den link geben?


    interceptor schrieb:

    edit: wie willst du eigentlich mit 8.1 für iOS bauen? Dafür brauchst du doch Studio + iOS-Plugin...
    Ich habe Studio und iOS-Plugin, hatte das jedoch noch nicht in meinem Profil geändert. Dies ist inzwischen geschehen ;)



    Jetzt habe ich aber noch ein anderes Problem:

    Wenn ich z.B. nach links laufe, und dann ZUSÄTZLICH springen möchte um einen Sprung nach links auszuführen, muss ich ja erst den Button für "LINKS" drücken, und dann gleichzeitig den Button für "SPRUNG" drücken. Aber irgendwie komm ich mit dieser Gleichzeitigkeit nicht klar. Wenn ich dem Button für LINKS das device "0" gebe und dem Button für SPRUNG das device "1" dann funktioniert das. Nur funktioniert dann der Sprung nach oben nicht mehr wenn ich SPRUNG einzeln drücke, also ohne vorher auch LINKS oder RECHTS zu drücken. Denn das device "1" kann ja nur angesprochen werden wenn zuvor das device "0" aktiviert wurde.

    Hab ich das richtig verstanden mit den devices? Hoffe ihr versteht mein Problem und könnt mir helfen? Oder gibt es dafür in Studio vielleicht ein ganz anderen Ansatz um Buttons zu erstellen? Ein Tutorial wäre hilfreich, habe leider keines gefunden...


    Noch ein weiteres Problem:

    Wenn ich die Sprungtaste loslasse, soll der Player nach unten fallen. Das hab ich folgendermaßen versucht zu lösen (Steht im Step-Event des Buttons):

    GML-Quellcode

    1. if (device_mouse_check_button_released(1,mb_left)){ obj_player.gravity=15 // Wenn man Sprungtaste loslässt, nach unten fallen}



    Kann mir jemand erklären warum das nicht funktioniert?


    Gruß,
    Pascal

    EDIT: Habs schon selbst gelöst! Und zwar mit der Funktion "virtual_key_add(x,y,w,h, keycode)". Damit kann man Tasten auf den screen legen, die genauso reagieren wie Tastaturbefehle.

    Das ist ja einfach! :thumbsup:




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


  • Jetzt habe ich aber noch ein anderes Problem:

    Wenn ich z.B. nach links laufe, und dann ZUSÄTZLICH springen möchte um einen Sprung nach links auszuführen, muss ich ja erst den Button für "LINKS" drücken, und dann gleichzeitig den Button für "SPRUNG" drücken. Aber irgendwie komm ich mit dieser Gleichzeitigkeit nicht klar. Wenn ich dem Button für LINKS das device "0" gebe und dem Button für SPRUNG das device "1" dann funktioniert das. Nur funktioniert dann der Sprung nach oben nicht mehr wenn ich SPRUNG einzeln drücke, also ohne vorher auch LINKS oder RECHTS zu drücken. Denn das device "1" kann ja nur angesprochen werden wenn zuvor das device "0" aktiviert wurde.


    Alles klar, ich kenne GMStudio zwar nicht, aber pass auf, ultimative Lösung incoming:

    GML-Quellcode

    1. // Stepevent Button 1
    2. if (device_mouse_check_button_pressed(0,mb_left) && position_meeting(device_mouse_x(0),device_mouse_y(0),self))
    3. {
    4. global.jump_pressed = true
    5. }
    6. // Stepevent Button 2
    7. if (device_mouse_check_button_pressed(1,mb_left) && position_meeting(device_mouse_x(1),device_mouse_y(1),self))
    8. {
    9. global.right_pressed = true
    10. }
    11. // Beim Spieler
    12. if (global.right_pressed = true && global.jump_pressed = true)
    13. {
    14. //springe nach rechts.
    15. }
    Alles anzeigen
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)