3D Kamera "smoothen"

  • GM 6

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

  • 3D Kamera "smoothen"

    Hi,
    Ich hab grad Justforfun so nen Egodingens gemacht und bin unzufrieden mit meiner Kamera
    weil die mir irgendwie zu "unsmooth" ist :(
    Hier der Code:
    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,1024)
    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. direction -= (display_mouse_get_x() -display_get_width()/2)/10;
    27. pitch += (display_mouse_get_y() -display_get_height()/2)/10;
    28. pitch = max(min(pitch,100),-100);
    29. display_mouse_set(display_get_width()/2, display_get_height()/2);
    30. Keyboard Event for <Left> Key:
    31. execute code:
    32. direction+=5
    33. Keyboard Event for <Up> Key:
    34. execute code:
    35. pitch-=2
    36. Keyboard Event for <Right> Key:
    37. execute code:
    38. direction-=5
    39. Keyboard Event for <Down> Key:
    40. execute code:
    41. pitch+=2
    42. Keyboard Event for A-key Key:
    43. execute code:
    44. {
    45. var xn,yn;
    46. xn = x - sin(direction*pi/180)*4;
    47. yn = y - cos(direction*pi/180)*4; { x = xn; y = yn; }
    48. }
    49. Keyboard Event for D-key Key:
    50. execute code:
    51. {
    52. var xn,yn;
    53. xn = x + sin(direction*pi/180)*4;
    54. yn = y + cos(direction*pi/180)*4; { x = xn; y = yn; }
    55. }
    56. Keyboard Event for S-key Key:
    57. execute code:
    58. speed=-10
    59. Keyboard Event for W-key Key:
    60. execute code:
    61. speed=10
    62. Mouse Event for Mouse Wheel Up:
    63. execute code:
    64. z-=20
    65. Mouse Event for Mouse Wheel Down:
    66. execute code:
    67. z+=20
    68. Draw Event:
    69. execute code:
    70. 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);
    71. Key Press Event for <Up> Key:
    72. execute code:
    73. z_to+=0.4
    74. Key Press Event for <Down> Key:
    75. execute code:
    76. z_to-=0.4
    77. Key Release Event for S-key Key:
    78. execute code:
    79. speed=0
    80. Key Release Event for W-key Key:
    81. execute code:
    82. speed=0
    Alles anzeigen


    Hier die gm6:
    firstperson.zip

    Was gibts den da für Möglichkeiten dieses Problem zu mildern oder sogar ganz verschwinden zu lassen?
    Danke!
    Ihc hab so voll den ij

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dick-Software Studios ()

  • Ne es gibt keine Probleme mit der Programmierung oder so sondern die Art wie sich die Kamera bewegt (schwierig zu erklären)
    Probier die gm6 einfach mal aus und fahr mit der Maus übern Bildschirm... Das is schrecklich...
    Gibts nich irgendwie sowas wie Motionblur oder so (wie z.B. in Portal)
    Ihc hab so voll den ij
  • Du könntest die fps erhöhen, bei 40-45 wirkt es schon deutlich weicher.
    Ne zusätzliche Möglichkeit wäre es, vertikale synchronisation anzustellen, was sich aber eher negativ auf die Performance auswirken würde.

    Das mit dem Blur solltest du lieber vergessen.
  • fps = roomspeed.
    Also musst du im bei den "Room Properties" unter dem tab "settings" speed auf 45 stellen.
    Vertikale Synchronisation stellst du entweder direkt im Grafikkartentreiber ein oder unter "Global Game Settings" => Resolution => Use synchronisation to avoid tearing.