image_xscale problem

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

  • image_xscale problem

    hy


    also ich benutze image_xscale und yscale für die sprite drehung .also damit er nach links und rechts schaut.

    jetzt wollte ich das sich ein sprite verkleinert wenn eine variable auf true gesetzt wird.

    mit diesem code:

    GML-Quellcode

    1. ​if (small)
    2. {
    3. if (image_xscale >= 0.9) and (image_yscale >= 0.9)
    4. {
    5. image_xscale -= 0.01;
    6. image_yscale -= 0.01;
    7. }
    8. }



    aber dadurch das ich image_xscale für die drehung benutze führt er nur die verkleinerung für yscale aus...wie kann ich das lösen?

    und problem 2:

    also ich habe mit move towards point einen gegner gehn lassen und das problem jetzt ist das er kurz vor ende des weges anfängt zu gleiten.also zuerst ist er im state run dann kurz vor ende schaltet er zu state idle und währenddessen
    rutscht er bis zum endpunkt.könnt ihr mir bitte helfen.hier der code dazu

    GML-Quellcode

    1. ​if (go2)
    2. {
    3. now2 = false;
    4. if distance_to_point(startpos_x,startpos_y)>10
    5. {
    6. lastgo = "right";
    7. state = "run";
    8. move_towards_point(startpos_x,startpos_y,2);
    9. }
    10. if distance_to_point(startpos_x,startpos_y)<5
    11. {
    12. move_towards_point(startpos_x,startpos_y,0);
    13. zaehlen = true;
    14. }
    15. }
    16. if (zaehlen)
    17. {
    18. num++;
    19. state = "idle";
    20. }
    21. if (num >= 180)
    22. {
    23. num = 0;
    24. go2 = false;
    25. zaehlen = false;
    26. }
    Alles anzeigen



    wäre toll wenn mir jemand helfen würde...komme da einfach nicht weiter.bin verzweifelt
  • Es wäre einfacher wenn du erklärst was du genau anstellen willst.
    Aber das sollte doch schon reichen?

    GML-Quellcode

    1. if (small) {
    2. if (abs(image_xscale) > 0.9)) {
    3. image_xscale -= 0.01;
    4. image_yscale -= 0.01;
    5. }
    6. }else{
    7. if (abs(image_xscale) < 1)) {
    8. image_xscale += 0.01;
    9. image_yscale += 0.01;
    10. }
    11. }
    Alles anzeigen
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • @Rhazul

    also erstens mal danke dir für die antwort.

    und ja ich will das wenn der gegner bei einer bestimmten position ist kleiner wird. und es ging auch aber nur mit yscale...werd es mal so wie du es gemacht hast probieren.

    und weißt du vielleicht eine hilfestellung zu problem 2?
  • Ich weiß aus diesem Kontext garnicht was die ganzen no(w) - go Variablen für eine Bedeutung haben.
    Also mein Vorschlag wäre Folgender: :deal:

    lies dir das hier durch (ganz unten die Funktionen):
    docs.yoyogames.com/source/dadi…otion planning/index.html

    Du erstellst zuerst ein globales mp_grid. Dafür wählst du eine passende Zellengröße aus. Damit Rasterst du quasi deinen ganzen Raum in kleine Zellen auf welche für pathfinding genutzt werden können.

    Anschließend müssen die Instanzen deiner Wände hinzugefügt werden.
    Ob dies richtig funktioniert kannst du mit der debug funktion mp_grid_draw überprüfen.

    Dann lässt du dir im Gegner einen Pfad berechnen und den dann verfolgen, der Pfad wird um die Wände herum verlaufen.

    GML-Quellcode

    1. path = path_add();
    2. if mp_grid_path(global.grid, path, x, y, obj_Player.x, obj_Player.y, 1) {
    3. path_start(path, 0, path_action_stop, 1);
    4. }

    Um In Entfernung zu stoppen würde ich sowas machen :

    GML-Quellcode

    1. if (point_distance(x,y,xgoal,ygoal) <= stop_distance) {
    2. path_end();
    3. speed = 0;
    4. }



    Oder wenn dir das alles zu kompliziert ist kommst du mit etwas Glück ohne Grid aus:

    GML-Quellcode

    1. if (point_distance(x,y,xgoal,ygoal) > stop_distance) {
    2. mp_potential_step_object(xgoal, ygoal, stepsize, obj_avoid);
    3. }else{
    4. speed = 0;
    5. }

    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • achso also go bedeutet er geht nach links....und now ist nur da um go auf true zu setzen...es geht eigentlich nur darum das er kurz vor der endposition zu idle wechselt und dann die restlichen pixel gleitet...

    aber ok.. also ich habs ganz am anfoang schon mit nen grid versucht aber das hat nicht wirklich hingehauen.deshalb jetzt das move_towards point

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

  • ich habs jetzt nochmal mit nen grid versucht hier mit diesem code

    GML-Quellcode

    1. ​if (go)
    2. {
    3. now1 = false;
    4. if mp_grid_path(grid,newpath,startpos_x,startpos_y,playerpos_x,playerpos_y,false)
    5. {
    6. state = "run";
    7. lastgo= "right"
    8. path_start(newpath,2,path_action_stop,true);
    9. }
    10. if point_distance(x,y,playerpos_x,playerpos_y)< 10
    11. {
    12. path_end();
    13. speed = 0;
    14. state = "idle";
    15. timer = true;
    16. }
    Alles anzeigen



    aber erstens wenn ich ein grid erstelle mit diesen code:

    GML-Quellcode

    1. ​grid=mp_grid_create(0,0,room_width,room_height,128,128);


    dann hängt das spiel voll...

    aber es funktioniert auch nicht bei anderen hcell und vcell grössen....
  • Das Grid musst du global NUR EINMAL erstellen in einem Controllerobjekt. Du hast wahrscheinlich jeder Instanz ein Grid erstellt und/oder sogar jeden step, und das ist natürlich völliger Schwachsinn.
    Zudem gibst du room_width und room_height an, die musst du aber durch die jeweilige Zellengröße Teilen weil dein grid sonst 128 mal größer als dein Raum ist, das könnte auch die Performanceprobleme erklären...

    Mach die Zellen mal so groß das deine mask vom player da reinpasst
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • Siehst du doch auch in der Dokumentation. Bei breite und höhe sind die Angaben aufs grid bezogen und nicht auf den raum. Wenn du da also room_width anstatt room_width/128 reinschreibst macht das einen enormen Unterschied in der Größe wobei du dann trotzdem nur ein 128tel des grids effektiv nutzen kannst.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: