kleines gravity problem...

  • GM 8

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

  • kleines gravity problem...

    hey freunde :)

    ich habe ein kleines example gemacht, in dem man mein problem gut sehen kann.
    grundsätzlich ist folgendes zu sagen.
    im endspiel darf der spieler nicht von dem umherfliegenden objekt getroffen werden.
    das ding ist jetzt, wenn man die maus absolut still hält, dann kommt es vor, das das objekt niemals die maus berührt, sondern in einer umlaufbahn um die mausherum bleibt. aber seht selbst :)

    ich habe leider keine idee wie ich das ändern soll.
    Dateien
    • ballbreaker.rar

      (9,13 kB, 146 mal heruntergeladen, zuletzt: )


  • @ dragon

    das habe ich auch bereits gemacht ( hatte mal nen ähnlichen treath)
    aber das hat nicht funktioniert. im prinziep war das der selbe effekt den ich erziehlt hatte.

    du kannst auch probieren ein objekt zu machen das der maus folgt und wenn der spieler mit dem objekt kollidiert soll er stehen bleiben.
    is doch genau das gleiche das ich gemacht habe, nur das der player nicht stehen bleibt wenn er getroffen wird.
    und das is ja auch das problem, wenn man den player nicht bewegt, dann wird der nicht getroffen!


  • Tja, eine Umlaufbahn kannst du nicht einfach so wegmachen... sonst würde der Mond nicht mehr um die Erde und die Erde nicht mehr um die Sonne kreisen...

    Ich konnte mir dein Beispiel nicht anschauen, da ich nur GM 7 habe, aber wie groß ist dein Objekt?
    Eine Möglichkeit wäre es, eine Reibung einzubauen (friction), wobei ich mir nicht sicher bin, ob das ein Umlauftbahn aufjedenfall verhindert...
    Willst du es wirklich so habe, dass die Objekte vom Spieler angezogen werden (dann müsste man, damit das physikalisch richtig ist, aber auch die Entfernung der Objekts zum Spieler berücksichtigen...), wenn du aber einfach so haben willst, das der Gegner den Spieler verfolgt, aber trotzdem einen 'Wendekreis' haben soll, dann kannst du das so machen:

    GML-Quellcode

    1. drehweite = 5;
    2. xx=point_direction(x,y,player.x,player.y)-direction;
    3. if (xx>drehweite)
    4. {
    5. direction+=drehweite;
    6. }
    7. else
    8. {
    9. if (xx<-drehweite)
    10. {
    11. direction-=drehweite;
    12. }
    13. else
    14. {
    15. direction=point_direction(x,y,player.x,player.y);
    16. }
    17. }
    Alles anzeigen
  • Gruen schrieb:

    @ dragon

    das habe ich auch bereits gemacht ( hatte mal nen ähnlichen treath)
    aber das hat nicht funktioniert. im prinziep war das der selbe effekt den ich erziehlt hatte.

    du kannst auch probieren ein objekt zu machen das der maus folgt und wenn der spieler mit dem objekt kollidiert soll er stehen bleiben.
    is doch genau das gleiche das ich gemacht habe, nur das der player nicht stehen bleibt wenn er getroffen wird.
    und das is ja auch das problem, wenn man den player nicht bewegt, dann wird der nicht getroffen!
    ich glaub du hast da was falsch verstanden. ich meinte dass du noch ein objekt machst, dass dann nicht so wie der spieler der maus mit einer "verzögerung" folgt sondern immer an der maus "hängt".
  • GML-Quellcode

    1. gravity=point_direction(x,y,mouse_x,mouse_y);
    2. gravity=0.3;
    3. drehweite = 5;
    4. xx=point_direction(x,y,mouse_x,mouse_y)-direction;
    5. if (xx>drehweite)
    6. {
    7. direction+=drehweite;
    8. }
    9. else
    10. {
    11. if (xx<-drehweite)
    12. {
    13. direction-=drehweite;
    14. }
    15. else
    16. {
    17. direction=point_direction(x,y,mouse_x,mouse_y);
    18. }
    19. }
    Alles anzeigen

    das steht jetzt bei mir, dabei wird das pbjekt das auf mich zufliegen soll, und einen wendekreis haben soll, abgewendet. und im weiteren verlauf, kommt es nichtmal mehr in die nähe meiner maus.

    edit:
    @martin.
    kann sein das ich dich missverstehe, aber selbst wenn ich ein objekt auf meine maus setze, und es bei berührung stehen bleibt, bleibt immer noch das problem mit der umlaufbahn. denn die maus wird ja garnicht erst berührt. und wenn sie nicht berührt wird bleibt sie auch nicht stehen...im prinziep (wenn ich dich nicht missverstanden habe) würde ein objekt auf meiner maus nichts ändern


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

  • ich gestehe das ich deinen code nicht checke, aber was ich mir gedacht habe wie man das lösen könnte währe folgendermaßen.

    ab einem bestimmten abstand, soll der wende radius verringert werden, und je weiter das objekt weg ist, desto größer soll der radius wieder werden.
    das ding ist, es soll dann einen maximal und einen minimal radius geben.
    ich weiß bei deinem code noch nciht wie ich das realisieren kann, aber ich probiers trotzdem mal.
    wenn dus weißt, kannst des ja auchnochmal posten :).

    edit: ich habs folgender maßen gelöst...

    GML-Quellcode

    1. if(distance_to_point(mouse_x,mouse_y)<80)
    2. and(distance_to_point(mouse_x,mouse_y)>20){
    3. drehweite = 8;
    4. }
    5. else if(distance_to_point(mouse_x,mouse_y)<=20)
    6. and (distance_to_point(mouse_x,mouse_y)>10){
    7. drehweite=14;
    8. }
    9. else if(distance_to_point(mouse_x,mouse_y)<=10){
    10. drehweite=18;
    11. }
    12. else{drehweite= 5;}
    13. xx=point_direction(x,y,obj_player.x,obj_player.y)-direction;
    14. if (xx < -180){
    15. xx += 360;
    16. }
    17. if (xx > 180){
    18. xx -= 360;
    19. }
    20. if (xx>drehweite){
    21. direction+=drehweite;
    22. }
    23. else if (xx<-drehweite){
    24. direction-=drehweite;
    25. }
    26. else{
    27. direction=point_direction(x,y,obj_player.x,obj_player.y);
    28. }
    29. image_angle=direction; // drehrichtung der raketen...
    Alles anzeigen


    danke für deine hilfe...

    gruß gruen


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