3D Fadenkreuz

  • GM 7
  • 3D Fadenkreuz

    Hi,

    Weiss jemand von euch, wie ich ein Fadenkreuz in 3D hinbkomme?

    Ich weiss, dass es mit d3d_set_projection zu tun hat ... damit hab ich es auch versucht, leider ohne erfolg.

    Hier mal der Code:

    GML-Quellcode

    1. switch(global.view){
    2. case 0: d3d_set_projection(x,y,global.camz+10/2,x+cos(direction*pi/180),y-sin(direction*pi/180),global.camz+10/2+tan(global.camang*pi/180),0,0,1); break;
    3. case 1: d3d_set_projection(x,y,1000,x+cos(direction*pi/180),y-sin(direction*pi/180),10,0,0,1); break;
    4. }
    5. if(view_current = 0){
    6. d3d_set_projection_ortho(0,0,view_wview,view_hview,0);
    7. draw_sprite(spr_cursor,1,display_mouse_get_x()/2,display_mouse_get_y()/2);
    8. }


    Was genau geschiet : Blick zum Himmel, Steuerung funzt nicht mehr bzw. vielleicht sieht man es einfach nicht mehr.
    Der Sprite wird auch nicht gezeichnet.

    Was mache ich falsch?

    Vielen Dank schon mal :)
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • GML-Quellcode

    1. d3d_set_projection_ortho(0,0,1280,1024,0);

    mit dieser FUnktion legst du wieder eine 2d Fläche auf dein Bildschirm. Das kommt ins draw event. dahinter must du auch dann alles deine Sprite ausgeben. wie zb dein Fadenkreuz sprite.
    Aber nutze um sicher zugehen für die x und y werte den befehl "view_xview+deineWert und view_yview+deineWert"
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Danke für deine schnelle Antwort, leider geht das bei mir noch net...

    GML-Quellcode

    1. switch(global.view){
    2. case 0: d3d_set_projection(x,y,global.camz+10/2,x+cos(direction*pi/180),y-sin(direction*pi/180),global.camz+10/2+tan(global.camang*pi/180),0,0,1); break;
    3. case 1: d3d_set_projection(x,y,1000,x+cos(direction*pi/180),y-sin(direction*pi/180),10,0,0,1); break;
    4. }
    5. if(view_current = 0){
    6. d3d_set_projection_ortho(view_xview,view_yview,1600,1600,0);
    7. draw_sprite(spr_cursor,1,display_mouse_get_x()/2,display_mouse_get_y()/2);
    8. }


    Das hab ich mal abgeändert mit folgendem Erfog: siehe Anhang

    Gruss
    X-treme
    Dateien
    • bild.zip

      (143,02 kB, 175 mal heruntergeladen, zuletzt: )
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • Geht denn das normale rumschauen in deinem Schooter.

    Ps ich würde das hier

    GML-Quellcode

    1. draw_sprite(spr_cursor,1,display_mouse_get_x()/2,display_mouse_get_y()/2);

    in

    GML-Quellcode

    1. draw_sprite(spr_cursor,1,view_xview+800,view_yview+800);
    ändern. aber das war jetzt nicht der hauptgrund
    also so ist das bei mir -Ganz unten steht ja draw_sprite(gun....) das ist mein Fadenkreuz
    Las dich von dem anderen zeug nich täuschen das sind nur Bullet time und nachtscht gerät effekte

    GML-Quellcode

    1. d3d_set_projection_ortho(0,0,1280,1024,0);
    2. d3d_set_hidden(true)
    3. d3d_set_lighting(0);
    4. if instance_exists(bullet) then draw_text(50,16,(instance_nearest(x,y,bullet).distp))
    5. draw_text(50,32,obj_player.z)
    6. draw_text(50,64,obj_player.fall)
    7. //draw_text(50,64,obj_player.jump)
    8. //draw_text(50,76,obj_player.max_jump)
    9. //draw_text(50,96,obj_player.zspeed)
    10. draw_set_blend_mode(bm_add);
    11. if obj_player.light_on=1 then draw_sprite_ext(spr_flashlight,-1,640,512,1,1,0,c_white,0.25);
    12. if obj_player.nv=1 then
    13. {
    14. if nv_a<0.5 then nv_a+=0.025
    15. }
    16. else if nv_a>0 then nv_a-=0.025
    17. draw_sprite_ext(nw,obj_player.nv_number,0,0,2,2,0,c_lime,nv_a);
    18. draw_set_blend_mode(bm_normal);
    19. draw_set_alpha(1)
    20. draw_set_blend_mode_ext(bm_zero,bm_src_color);
    21. if obj_player.sniper=1 then draw_sprite_ext(hud_fade,-1,640,512,2,2,0,c_white,1);
    22. draw_set_blend_mode(bm_normal);
    23. if obj_player.fear=1 then
    24. {
    25. if fear_a<0.5 then fear_a+=0.01
    26. }else if fear_a>0 then fear_a-=0.01
    27. draw_set_alpha(fear_a)
    28. draw_set_color(make_color_rgb(165,0,0))
    29. draw_rectangle(0,0,1280,1024,0)
    30. draw_set_alpha(1)
    31. if fear_shok_a>0 then fear_shok_a-=0.1
    32. draw_sprite_ext(spr_shok,-1,0,0,2,2,0,noone,fear_shok_a)
    33. draw_set_alpha(1)
    34. //draw_sprite_ext(sprite_shotgun,-1,0,600-256,2,2,0,c_white,1);
    35. draw_sprite_ext(cursor_2,-1,640+(obj_player.walk_ani/100),512+(obj_player.walk_ani/100),1,1,0,c_white,1);
    36. if obj_player.weapon=1 then draw_sprite_ext(hud_weapon1,-1,view_xview+100,view_yview+80,1,1,0,c_white,1);
    37. if obj_player.weapon=2 then draw_sprite_ext(hud_weapon2,-1,view_xview+100,view_yview+80,1,1,0,c_white,1);
    38. if obj_player.weapon=3 then draw_sprite_ext(hud_weapon3,-1,view_xview+100,view_yview+80,1,1,0,c_white,1);
    39. if obj_player.weapon=4 then draw_sprite_ext(hud_weapon4,-1,view_xview+100,view_yview+80,1,1,0,c_white,1);
    40. if obj_player.weapon=5 then draw_sprite_ext(hud_weapon5,-1,view_xview+100,view_yview+80,1,1,0,c_white,1);
    41. if obj_player.weapon=6 then draw_sprite_ext(hud_weapon6,-1,view_xview+100,view_yview+80,1,1,0,c_white,1);
    42. if obj_player.weapon=7 then draw_sprite_ext(hud_weapon7,-1,view_xview+100,view_yview+80,1,1,0,c_white,1);
    43. draw_set_alpha(1)
    44. draw_set_alpha(0.4);
    45. if obj_player.life>89 then {draw_sprite(spr_hp_bar,10,view_xview+165,view_hview-49)}
    46. if obj_player.life>79 and obj_player.life<90 then {draw_sprite(spr_hp_bar,9,view_xview+165,view_hview-49)}
    47. if obj_player.life>69 and obj_player.life<80 then {draw_sprite(spr_hp_bar,8,view_xview+165,view_hview-49)}
    48. if obj_player.life>59 and obj_player.life<70 then {draw_sprite(spr_hp_bar,7,view_xview+165,view_hview-49)}
    49. if obj_player.life>49 and obj_player.life<60 then {draw_sprite(spr_hp_bar,6,view_xview+165,view_hview-49)}
    50. if obj_player.life>39 and obj_player.life<50 then {draw_sprite(spr_hp_bar,5,view_xview+165,view_hview-49)}
    51. if obj_player.life>29 and obj_player.life<40 then {draw_sprite(spr_hp_bar,4,view_xview+165,view_hview-49)}
    52. if obj_player.life>19 and obj_player.life<30 then {draw_sprite(spr_hp_bar,3,view_xview+165,view_hview-49)}
    53. if obj_player.life>9 and obj_player.life<20 then {draw_sprite(spr_hp_bar,2,view_xview+165,view_hview-49)}
    54. if obj_player.life>0 and obj_player.life<10 then {draw_sprite(spr_hp_bar,1,view_xview+165,view_hview-49)}
    55. if obj_player.life=0 then {draw_sprite(spr_hp_bar,0,view_xview+165,view_hview-49)}
    56. draw_set_alpha(1)
    57. draw_sprite(gun_1,-1,view_xview+1280,view_yview+1024)
    58. d3d_set_lighting(0);
    59. draw_set_alpha(1);
    Alles anzeigen
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Hab dafür 'n neues Objekt angelegt, ins Draw Event kommt dann folgendes:

    GML-Quellcode

    1. d3d_set_projection_ortho(0,0,window_get_width(),window_get_height(),0);
    2. draw_sprite(spr_cursor,-1,window_get_width()/2,window_get_height()/2);

    (Sollte selbsterklärend sein)
    Die depth des Objekts sollte möglichts gering sein, z.B. -100.
    Also bei mir hats zumindest funktioniert, als ich es in deinem Spiel zugefügt hab'.
    Edit: Meeensch x-sascha, den Code hättest du aber rapide abürzen können, da Blickt ja kein normaler Mensch mehr durch. ^^
  • Geht denn das normale rumschauen in deinem Schooter.

    Jep.

    Irgendwie ist das merkwürdig, das kann net am zeichnen des Sprites liegen, sondern eindeutig an der projection.

    Nochmals zu meinem Code (oben) ich habe eine globale (view) die kann ich ändern mit den Tasten 0 und 1 normalfall ist 0 (1 brauch ich nur zum Editieren, dass ich das von oben sehe hald)
    Muss ich denn nicht nach d3d_set_projection_ortho meinen switch hin tun? Weil ich hab das gefühl, als würde das Zeichnen die projection so verschieben, dass die "normale Sicht" irgendwie ignoriert wird oder so.

    Ich weiss jetzt nicht, ob das so in einem Zusammenhang stehen könnte, aber möglich könnte es ja sein...

    Weil egal was ich tue - jedes mal kommt dieses Bild, dass ich attached habe - ich kann rein gar nix mehr tun. :|

    @Moolt
    Wieso brauchste denn dafür nen extra objekt?
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • Die depth des Objekts sollte möglichts gering sein, z.B. -100.

    Bitte mal genau lesen: Ich habe nichts von der depth des Sprites, sondern der des Objekts geschrieben.

    ---
    Edit: xx-XtremeX-xx: Wärst du so freundlich, deine Beiträge nicht sinnverfälschend zu bearbeiten? Danke.
    Zur Frage: Weil's sonst, zumindest bei mir, zu Projektionsfehlern kommt, unter anderem auch der von dir genannte. Lässt sich sicher auch anders lösen, hätte ich jetzt auf die schnelle nicht hinbekommen.
  • Ich habe das ja auch geändert (siehe Edit) - hab zuerst gedacht du sprichst von nem Sprite ^^

    Ne, so gehts auf jeden Fall.
    Danke an alle!! :)

    EDIT:
    Wobei muss ich jetzt für alles das ich noch zusätzlich möchte ein Objekt erstellen, oder geht das einfacher?
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • Benutzer online 1

    1 Besucher