|
| 1 | +""" |
| 2 | +raylib [core] example - 2d camera mouse zoom |
| 3 | +""" |
| 4 | + |
| 5 | +import pyray |
| 6 | + |
| 7 | +SCREEN_WIDTH = 800 |
| 8 | +SCREEN_HEIGHT = 450 |
| 9 | + |
| 10 | +pyray.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - 2d camera mouse zoom") |
| 11 | + |
| 12 | +pyray.set_target_fps(60) |
| 13 | + |
| 14 | +camera = pyray.Camera2D() |
| 15 | + |
| 16 | +camera = pyray.Camera2D() |
| 17 | +camera.zoom = 1.0 |
| 18 | + |
| 19 | +pyray.set_target_fps(60)
8000
; |
| 20 | + |
| 21 | +# main game loop |
| 22 | +while not pyray.window_should_close(): |
| 23 | + # update |
| 24 | + if pyray.is_mouse_button_down(pyray.MOUSE_BUTTON_RIGHT): |
| 25 | + delta = pyray.get_mouse_delta() |
| 26 | + delta = pyray.vector2_scale(delta, -1.0 / camera.zoom) |
| 27 | + camera.target = pyray.vector2_add(camera.target, delta) |
| 28 | + |
| 29 | + # zoom based on mouse wheel |
| 30 | + wheel = pyray.get_mouse_wheel_move() |
| 31 | + if wheel != 0: |
| 32 | + |
| 33 | + mouseWorldPos = pyray.get_screen_to_world_2d(pyray.get_mouse_position(), camera) |
| 34 | + |
| 35 | + camera.offset = pyray.get_mouse_position() |
| 36 | + |
| 37 | + camera.target = mouseWorldPos |
| 38 | + |
| 39 | + ZOOM_INCREMENT = 0.125 |
| 40 | + |
| 41 | + camera.zoom
8000
+= (wheel*ZOOM_INCREMENT) |
| 42 | + if (camera.zoom < ZOOM_INCREMENT): camera.zoom = ZOOM_INCREMENT |
| 43 | + |
| 44 | + |
| 45 | + # draw |
| 46 | + pyray.begin_drawing() |
| 47 | + pyray.clear_background(pyray.BLACK) |
| 48 | + |
| 49 | + pyray.begin_mode_2d(camera) |
| 50 | + |
| 51 | + pyray.rl_push_matrix() |
| 52 | + pyray.rl_translatef(0, 25*50, 0) |
| 53 | + pyray.rl_rotatef(90, 1, 0, 0) |
| 54 | + pyray.draw_grid(100, 50) |
| 55 | + pyray.rl_pop_matrix() |
| 56 | + |
| 57 | + pyray.draw_circle(100, 100, 50, pyray.YELLOW) |
| 58 | + |
| 59 | + pyray.end_mode_2d() |
| 60 | + |
| 61 | + pyray.draw_text("Mouse right button drag to move, mouse wheel to zoom", 10, 10, 20, pyray.WHITE); |
| 62 | + |
| 63 | + pyray.end_drawing() |
| 64 | + |
| 65 | +# de-Initialization |
| 66 | +pyray.close_window() |
| 67 | + |
0 commit comments