Shoot in richtung Maus - beschraenkt

  • Shoot in richtung Maus - beschraenkt

    ich bin am arbeiten eines platform-spiels

    meine figur obj_player bewegt sich wie immer auf einer platform (hab ich geklaert)

    nun soll am obj_player eine waffe auf einem bestimmten punkt tragen

    dies hangt von der richtung aus in welche die figur steht /links,rechts

    obj_player soll sich nicht drehen, nur die waffe

    die waffe soll sich immer zur maus drehen

    soll aber wenn figur links steht nur im bereich von 0-90 grad zur maus zeigen

    und wenn rechts nur im bereich 90-180 grad zur maus zeigen!

    wie mach ich das nun?

    danke im vorraus!
  • Ist relativ einfach (oder auch nicht, hab ich so gelöst):
    Das kommt in step event von deiner Waffe:

    GML-Quellcode

    1. image_angle=point_direction(x,y,mouse_x,mouse_y)
    2. }
    3. if player.image_xscale>0&&(image_angle>90&&image_angle<270)
    4. {if image_angle<180 {image_angle=90}
    5. if image_angle>180 {image_angle=270}
    6. }
    7. if player.image_xscale<0&&(image_angle<90||image_angle>270)
    8. {if image_angle>0&&image_angle<90 {image_angle=90}
    9. if image_angle>270 {image_angle=270}
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]
  • Im Kugel Objekt:

    Entweder:

    GML-Quellcode

    1. direction = waffe.image_angle;
    2. speed = 10; // Oder was anderes.


    Oder:

    GML-Quellcode

    1. direction = point_direction(x,y,mouse_x,mouse_y);
    2. speed = 10; // Oder was anderes.


    ;)

    EDIT:

    Entschuldigen sie Mister Trompadon, aber auf das habe ich nicht geachtet. :P

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

  • Oder, auf keinen Fall!! Mister Fabse, er wollte ja das sich der Arm nicht überdreht, dann würde der Schuss wo anders hingehen als die Waffe hinzeigt, also natürlich so:

    GML-Quellcode

    1. if ammo>0&&keyboard_check_pressed(vk_dein_key)
    2. {
    3. bullet=instance_create(lengthdir_x(länge_der_waffe,waffe.image_angle)+Punkt_x_um_den_sich_Waffe_dreht,lengthdir_y(länge_der_waffe,waffe.image_angle)+Punkt_y_um_den_sich_Waffe_dreht,obj_bullet)
    4. with (bullet)
    5. {motion_set(waffe.image_angle,dein_bullet_speed)}
    6. }
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]
  • oh, ich versteh jetzt nicht, kannst du mir bitte noch erklaeren, wo man was einsetzen muss,

    also etwas genauer:

    GML-Quellcode

    1. if ammo>0&&keyboard_check_pressed(mb_left) { bullet=instance_create(lengthdir_x(länge_der_waffe,waffe.image_angle)+Punkt_x_um_den_sich_Waffe_dreht,lengthdir_y(länge_der_waffe,waffe.image_angle)+Punkt_y_um_den_sich_Waffe_dreht,obj_bullet) with (bullet) {motion_set(waffe.image_angle,dein_bullet_speed)} }
  • Der Code muss natürlich ins Stepevent

    GML-Quellcode

    1. if ammo>0&&keyboard_check_pressed(vk_dein_key) //is klar, wenn die ammo größer null ist und die taste gedrückt wird dann:
    2. {
    3. bullet=instance_create( //So deine Bullet wird erstell, die id wird unter bullet gespeichert
    4. lengthdir_x(länge_der_waffe,waffe.image_angle) //lengthdir_x(length,dir) returnt den x Anteil von length im Winkel dir, länge waffe ist die länge der Waffe vom Ursprung aus gesehen dort hin wo die bullet rauskommen soll
    5. +Punkt_x_um_den_sich_Waffe_dreht, //Der Ursprung Punkt von der Waffe, bsp:player.x-16 oder so, halt wo die Waffe vom Player aus gesehen ist
    6. lengthdir_y(länge_der_waffe,waffe.image_angle)+Punkt_y_um_den_sich_Waffe_dreht,obj_bullet) //gleiche mit y
    7. with (bullet) //dieser Code wird praktisch in das Objekt das vorher erschaffen worden ist rein gesetzt, bullet ist ja die id
    8. {motion_set(waffe.image_angle,dein_bullet_speed)} //setzt nun die geschwindigkeit und den Winkel der bullet
    9. }


    Alles Klar Herr sweetos

    Achja das von vorher muss natürlich ins Stepevent von der Waffe und zusätzlich noch:

    GML-Quellcode

    1. x=player.x-dein_Wert
    2. y=plaer.y-dein_Wert
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]