Wie passe ich einen 3D-Block an die Sicht des Spielers an?

  • GM 6

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

  • Wie passe ich einen 3D-Block an die Sicht des Spielers an?

    Hi,
    Ich wollte wissen wie ich einen 3D-Block so zeichne dass er sich mit der Sicht des Spielers dreht
    (Wie halt in EgoShootern die Waffe)
    Spoiler anzeigen

    GML-Quellcode

    1. Information about object: obj_character
    2. Sprite: <no sprite>
    3. Solid: false
    4. Visible: true
    5. Depth: 100000
    6. Persistent: false
    7. Parent: <no parent>
    8. Mask: <same as sprite>
    9. Create Event:
    10. execute code:
    11. d3d_start()
    12. d3d_set_perspective(true)
    13. d3d_set_lighting(true)
    14. d3d_set_fog(true,c_black,0,2048)
    15. draw_set_color(c_white)
    16. z=64
    17. z_to=64
    18. direction=90
    19. pitch=0
    20. Step Event:
    21. execute code:
    22. d3d_light_define_direction(1,1,1,1,c_white)
    23. d3d_light_enable(1,true)
    24. d3d_light_define_direction(2,-1,-1,-1,c_gray)
    25. d3d_light_enable(2,true)
    26. d3d_light_define_point(3,room_width/2,room_height/2,500,1200,c_white)
    27. d3d_light_enable(3,true)
    28. direction -= (display_mouse_get_x() -display_get_width()/2)/10;
    29. pitch += (display_mouse_get_y() -display_get_height()/2)/10;
    30. pitch = max(min(pitch,100),-100);
    31. display_mouse_set(display_get_width()/2, display_get_height()/2);
    32. Keyboard Event for A-key Key:
    33. execute code:
    34. {
    35. var xn,yn;
    36. xn = x - sin(direction*pi/180)*2;
    37. yn = y - cos(direction*pi/180)*2; { x = xn; y = yn; }
    38. }
    39. Keyboard Event for D-key Key:
    40. execute code:
    41. {
    42. var xn,yn;
    43. xn = x + sin(direction*pi/180)*2;
    44. yn = y + cos(direction*pi/180)*2; { x = xn; y = yn; }
    45. }
    46. Keyboard Event for S-key Key:
    47. execute code:
    48. speed=-5
    49. Keyboard Event for W-key Key:
    50. execute code:
    51. speed=5
    52. Mouse Event for Mouse Wheel Up:
    53. execute code:
    54. z-=20
    55. Mouse Event for Mouse Wheel Down:
    56. execute code:
    57. z+=20
    58. Draw Event:
    59. execute code:
    60. d3d_set_projection(x,y,z,x+cos(direction*pi/180),y-sin(direction*pi/180),z_to-sin(pitch*pi/180),0,0,1);
    61. Key Press Event for <Up> Key:
    62. execute code:
    63. z_to+=0.4
    64. Key Press Event for <Down> Key:
    65. execute code:
    66. z_to-=0.4
    67. Key Release Event for S-key Key:
    68. execute code:
    69. speed=0
    70. Key Release Event for W-key Key:
    71. execute code:
    72. speed=0
    Alles anzeigen


    Wie geht dat?
    Danke!
    Ihc hab so voll den ij
  • GML-Quellcode

    1. d3d_transform_set_identity();
    2. d3d_transform_add_translation(-x,-y,0);
    3. d3d_transform_add_rotation_z(obj_player.direction);
    4. d3d_transform_add_translation(x,y,0);
    5. d3d_draw_block(x-16,y-16,z+0,x+16,y-16,z+1,tex,1,1); //Ergibt dann einen 32 Großen block
    6. d3d_transform_set_identity()


    Das sollte eigentlich probieren hab es nicht getestet!
    Die Kordinaten musst du aber noch bearbeiten!
    :saint:
  • Hab jetzt diesen code drin:

    GML-Quellcode

    1. d3d_transform_set_identity();
    2. d3d_transform_add_translation(-x,-y,0);
    3. d3d_transform_add_rotation_z(direction);
    4. d3d_transform_add_translation(x,y,0);
    5. d3d_draw_block(x-16,y-16,z+0,x+16,y+16,z+32,background_get_texture(background0),1,1); //Ergibt dann einen 32 Großen block
    6. d3d_transform_set_identity()


    Da tut sich nichts... Hier mal die Datei:
    firstperson.zip
    Ihc hab so voll den ij