Zoom if distancce to object < 50

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

  • Zoom if distancce to object < 50

    Hallo :)

    Ich würde gerne einen simplen zoom erstellen wenn mein obj_player zu nah an obj_asteroid kommt ..

    Nach mehrstündigen rumversuchen hab ichs immernoch nicht hinbekommen .. deswegen frag ich einfach hier nach ..

    UI Darf gerne mitgezoomt werden ...


    Kann ich das ganze in mein obj_player step event schreiben oder sollte ich für sowas eine art obj_zoomcontroller erstellen ?

    Wenn ich einen zoomcontroller erstelle .. kann ich da sowas reinschreiben wie " if distance_to_object.obj_player (obj_asteroid) < 50 " ?

    Da die sachen bei mir nicht geklappt haben denke ich eher das es falsch ist .. naja .. fragen kostet ja nichts :)

    Vlt hat einer ne simple idee

    Grüße
    Mo
    That is not dead which can eternal lie.
    And with strange aeons even death may die.

    Ph’nglui mglw’nafh Cthulhu R’lyeh wgah’nagl fhtagn.

  • Also zum zoomen und so bietet es sich an view_wview und view_hview zu modifizieren. Die Portgröße muss aber gleich bleiben.
    Damit sich das HUD nich verändert kannst du ja dank GM:S das Draw GUI Event verwenden.

    Kann ich das ganze in mein obj_player step event schreiben oder sollte ich für sowas eine art obj_zoomcontroller erstellen ?

    Kannst du eigentlich reinpacken wo du willst. Ein extra objekt nur für den Zoomvorgang ist aber unnötig.

    " if distance_to_object.obj_player (obj_asteroid) < 50 " ?

    So funktioniert das nicht.
    distance_to_object gibt den abstand zwischen dem aktuellen objekt und dem objekt das du als argument angibst wieder. (ich nehm immer point_distance)
    distance_to_object.obj_player würd nicht funktionieren.
    Mach einfach "if(distance_to_object(obj_asteroid) < 50)" im player event.
    (Vielleicht vorher noch testen ob überhaupt ein obj_asteroid objekt existiert mit instance_exists)
    Wenns mehrere asteroiden gibt müsstest du übrigens glaub ich instance_nearest noch zusätzlich verwenden, damit nur die Instanz zurückgegeben wird die am nächsten ist. Die anderen interessieren dann ja nicht.
    Sorm ist Schuld

    Edit: Doch ist er
  • Huhu :)

    Ich habs so einigermassen hinbekommen .. wenn ich nun in der nähe eines Asteroiden bin zoomt er tatsächlich ran .. :)

    der code sieht bei mir gerade so aus

    Quellcode

    1. if (distance_to_object(obj_asteroid) < 50)
    2. {
    3. zoom_factor -= 0.01
    4. room_speed=24;
    5. view_hview[0]=768 * (zoom_factor);
    6. view_wview[0]=1024 * (zoom_factor);
    7. if (view_hview[0] <=384) view_hview=384; [color=#008000] Die 2 ifs kann man doch bestimmt noch zusammen fassen ?[/color]
    8. if (view_wview[0]<=512) view_wview=512;
    9. }
    10. else
    11. {
    12. room_speed=60
    13. view_hview[0]=768;
    14. view_wview[0]=1024;
    15. }
    Alles anzeigen


    Heisst sobald ich an einem Asteroiden vorbeifliege wird rangezoomt auf doppelte größe und bei 384*512 cameraview stoppt der zoom ... entferne ich mich vom objekt swappt er wieder zur normalen standartgröße der camera .. da werde ichwohl auch noch einen stepzoom (oder wie auch immer man das nennen mag) einbauen

    Wenn ich jetzt jedoch wieder einen asteroiden passiere wird nichtmehr in steps gezoomt sondern er switcht das bild direkt auf 384*512 .. :\


    instance_exists wurde glaub ich nochnicht benötigt .. bzw mir ist da noch nichts aufgefallen :) obwohl mehrere asteroiden rumfliegen .. aber da schau icha uch mal genauer hin :)

    Hab den 2013er fred gelesen mit dem unterschied zwischen pointdistance und distance to objekt .. ich glaub in meinem fall ist distance_to_objekt besser .. ^^ aber rumspielen werd ich sowieso mit allem mal :D
    That is not dead which can eternal lie.
    And with strange aeons even death may die.

    Ph’nglui mglw’nafh Cthulhu R’lyeh wgah’nagl fhtagn.

  • Also ich durchblick deinen code so teilweise.

    Wenn ich jetzt jedoch wieder einen asteroiden passiere wird nichtmehr in steps gezoomt sondern er switcht das bild direkt auf 384*512 .. :\

    Liegt vermutlich da ran dass dein zoom_factor bereits niedrig ist. Er muss natürlich auch zurückgesetzt werden jedesmal wenn die viewgröße zurückgesetzt wird.
    Ich nehm mal an er is standardmäßig 1 :D

    also pack einfach zoom_factor = 1 in den else-Teil. Also wenn die distanz >= 50 ist

    instance_exists wurde glaub ich nochnicht benötigt

    Stimmt, ich war nich ganz so vertraut mit distance_to_object. Aber der nimmt wohl automatisch schon die nächste Instanz.
    Sorm ist Schuld

    Edit: Doch ist er