diff options
| author | realtradam <[email protected]> | 2021-04-25 18:12:58 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2021-04-25 18:12:58 -0400 |
| commit | a3e96f57e36bfd96b753aab3a7fbe28be9bdfcf8 (patch) | |
| tree | 49ad332d3da404c6c45202fd18d282a062473acd /run.rb | |
| parent | 505a4735d519253c5f173f47fbe9691bc5d9ce93 (diff) | |
| download | ruby2d-camera-old-a3e96f57e36bfd96b753aab3a7fbe28be9bdfcf8.tar.gz ruby2d-camera-old-a3e96f57e36bfd96b753aab3a7fbe28be9bdfcf8.zip | |
.
Diffstat (limited to 'run.rb')
| -rw-r--r-- | run.rb | 89 |
1 files changed, 51 insertions, 38 deletions
@@ -28,11 +28,13 @@ Window.set(icon: './assets/blobcoolthink.png', 'assets/blobshadow.png', width: 52, height: 10, - z: 1 + z: 4 ) Camera << @shadow @player.play animation: :walk, loop: true Camera << @player + +# UI Rectangle.new( width: 350, height: 135, @@ -88,8 +90,8 @@ Rectangle.new( @speed = 5 # Initializing -player_movement_x = 0 -player_movement_y = 0 +@player_movement_x = 0 +@player_movement_y = 0 @pressed_space = false @scene_transition_into = false @scene_transition_out = false @@ -99,62 +101,68 @@ player_movement_y = 0 on :key do |event| if event.key == 'w' - player_movement_y -= @speed unless @scene_transition_into || @scene_transition_out + @player_movement_y -= @speed unless @scene_transition_into || @scene_transition_out end if event.key == 's' - player_movement_y += @speed unless @scene_transition_into || @scene_transition_out + @player_movement_y += @speed unless @scene_transition_into || @scene_transition_out end if event.key == 'd' - player_movement_x += @speed unless @scene_transition_into || @scene_transition_out + @player_movement_x += @speed unless @scene_transition_into || @scene_transition_out end if event.key == 'a' - player_movement_x -= @speed unless @scene_transition_into || @scene_transition_out + @player_movement_x -= @speed unless @scene_transition_into || @scene_transition_out end if event.key == 'space' @pressed_space = true unless @scene_transition_into || @scene_transition_out end if event.key == 'q' - Camera.angle += 1 + Camera.angle += 1 unless @scene_transition_into || @scene_transition_out end if event.key == 'e' - Camera.angle -= 1 - end - if event.key == 'z' - Camera.zoom *= 1.015 - end - if event.key == 'x' - Camera.zoom *= 0.985 + Camera.angle -= 1 unless @scene_transition_into || @scene_transition_out + end + if event.key == 'r' + unless @scene_transition_into || @scene_transition_out || Camera.angle.zero? + if Camera.angle <= 180 + if Camera.angle > 10 + Camera.angle -= 10 + else + Camera.angle -=1 + end + elsif + if Camera.angle < 350 + Camera.angle += 10 + else + Camera.angle += 1 + end + end + end end end -=begin -Camera << Text.new('rotate me to see how if it works', - x: 500, - y: 500, - z: 99) -=end + update do - if (@player.x > 2371 && player_movement_x.positive?) || (@player.x.negative? && player_movement_x.negative?) - player_movement_x = 0 + if (@player.x > 2371 && @player_movement_x.positive?) || (@player.x.negative? && @player_movement_x.negative?) + @player_movement_x = 0 end - if (@player.y > 1608 && player_movement_y.positive?) || (@player.y.negative? && player_movement_y.negative?) - player_movement_y = 0 + if (@player.y > 1608 && @player_movement_y.positive?) || (@player.y.negative? && @player_movement_y.negative?) + @player_movement_y = 0 end - if !player_movement_y.zero? == !player_movement_x.zero? - player_movement_x /= 1.4141 - player_movement_y /= 1.4141 + if !@player_movement_y.zero? == !@player_movement_x.zero? + @player_movement_x /= 1.4141 + @player_movement_y /= 1.4141 end - @player.x += player_movement_x - @player.y += player_movement_y - if player_movement_x.negative? + @player.x += @player_movement_x + @player.y += @player_movement_y + if @player_movement_x.negative? @player.play animation: :walk, loop: true - elsif player_movement_x.positive? || !player_movement_y.zero? + elsif @player_movement_x.positive? || !@player_movement_y.zero? @player.play animation: :walk, loop: true, flip: :vertical else @player.play animation: :stand end if !@scene_transition_into && !@scene_transition_out - Camera.zoom = (-[Math.sqrt(((@player.x + (@player.width / 2) - Camera.x)**2) + ((@player.y + (@player.width / 2) - Camera.y)**2)), 350].min * 0.004) + 2 + Camera.zoom += ((-[Math.sqrt(((@player.x + (@player.width / 2) - Camera.x)**2) + ((@player.y + (@player.width / 2) - Camera.y)**2)), 350].min * 0.004) + 2 - Camera.zoom) * 0.25 Camera.x += (@player.x + (@player.width / 2) - Camera.x) * 0.025 Camera.y += (@player.y + (@player.height / 2)- Camera.y) * 0.025 elsif @scene_transition_into @@ -180,7 +188,7 @@ update do Camera.x += (@player.x + (@player.width / 2) - Camera.x) * 0.25 Camera.y += (@player.y + (@player.height / 2) - Camera.y) * 0.25 elsif @scene_transition_out - if !(Camera.zoom <= 2.1 && Camera.angle.zero?) + if !((Camera.zoom <= (@zoom_transition * 1.001)) && (Camera.angle == @angle_transition)) Camera.zoom /= 1.05 Camera.angle -= 5 else @@ -217,17 +225,22 @@ update do else @house_text = @house.visted_by?(@player) end - Camera << @house_text unless @house_text.nil? - if !@house_text.nil? && @pressed_space + unless @house_text.nil? + Camera << @house_text + @house_text.center = true + end + if !@house_text.nil? && @pressed_space && !@scene_transition_into && !@scene_transition_out @scene_transition_into = true + @angle_transition = Camera.angle + @zoom_transition = Camera.zoom end @ui_pos_cam.text = "Camera Position: #{Camera.x.round(1)}, #{Camera.y.round(1)}" @ui_pos_ply.text = "Player Position: #{@player.x.round(1)}, #{@player.y.round(1)}" @ui_zoom.text = "Zoom: #{Camera.zoom.round(3)}" @ui_fps.text = "FPS: #{Window.fps.round(2)}" @ui_rotation.text = "Angle: #{Camera.angle}" - player_movement_x = 0 - player_movement_y = 0 + @player_movement_x = 0 + @player_movement_y = 0 @pressed_space = false Camera.redraw |
