diff options
| author | realtradam <[email protected]> | 2021-04-22 23:07:11 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2021-04-22 23:07:11 -0400 |
| commit | ce9047d61e9514cbb38bfc0f8dcdb7dac4afa840 (patch) | |
| tree | aa71ea3f08bd90e350c045012b37f9c2d988625d | |
| parent | 72084e270bd849c74b18bfcbb6a0d454035c4897 (diff) | |
| download | ruby2d-camera-old-ce9047d61e9514cbb38bfc0f8dcdb7dac4afa840.tar.gz ruby2d-camera-old-ce9047d61e9514cbb38bfc0f8dcdb7dac4afa840.zip | |
.
| -rw-r--r-- | camera.rb | 22 | ||||
| -rw-r--r-- | run.rb | 41 |
2 files changed, 54 insertions, 9 deletions
@@ -21,18 +21,19 @@ module Camera end def self.center_x=(center_x) - @x = center_x - ((Window.width / 2) * (1/zoom)) + @x = center_x - ((Window.width / 2) )#* (1/zoom)) objects.each(&:_update) end def self.center_y - y + ((Window.height / 2) * (1/zoom)) + y + ((Window.height / 2) )#* (1/zoom)) end def self.center_y=(center_y) - @y = center_y - ((Window.height / 2) * (1/zoom)) + @y = center_y - ((Window.height / 2) )#* (1/zoom)) objects.each(&:_update) end +=begin def self.center(center_x, center_y) self.center_y = center_y self.center_x = center_y @@ -48,6 +49,17 @@ module Camera #@y = y + ((pivot_x - x) * Math.sin(angle)) + ((pivot_y - y) * Math.cos(angle)) objects.each(&:_update) end +=end + def self._x(x) + @x += x + objects.each(&:_update) + end + + def self._y(y) + @y += y + objects.each(&:_update) + end + def self.x @x ||= 0 end @@ -76,7 +88,9 @@ module Camera def self.zoom=(zoom) if zoom != self.zoom - temp = [center_x, center_y] + shift = (Window.width - Window.height) / 2 + #temp = [center_x, center_y] + temp = [0, center_y] @zoom = zoom self.center_x = temp[0] self.center_y = temp[1] @@ -3,6 +3,8 @@ require 'ruby2d' require_relative 'camera' +#set width: 700, height: 300 + # Use this to add a few extra methods to an Image module SizableImage def size @@ -92,8 +94,18 @@ Rectangle.new( @cam_y_move = 0 @is_follow = true @zoom_by = 1 +@debug1 = 0 +@debug2 = 0 +@debug4 = 0 +@debug3 = 0 on :key do |event| + if event.key == 't' + @debug3 += 2 + end + if event.key == 'g' + @debug3 -= 2 + end if event.key == 'a' @y_move += 0 @x_move += -@speed @@ -127,7 +139,11 @@ on :key do |event| @is_follow = false end if event.key == 'f' - @is_follow = true + @debug1 += 2 + #@is_follow = true + end + if event.key == 'h' + @debug1 -= 2 end end @@ -146,10 +162,10 @@ on :key do |event| end if event.key == 'q' - Camera.angle += 1 + Camera.angle += 2 end if event.key == 'e' - Camera.angle -= 1 + Camera.angle -= 2 end if event.key == 'r' Camera.angle = 0.0 @@ -179,8 +195,23 @@ update do @ui_zoom.text = "Zoom: #{Camera.zoom.round(3)}" @ui_fps.text = "FPS: #{Window.fps.round(2)}" @ui_rotation.text = "Angle: #{Camera.angle}" - puts @player.x - puts @player.y + angle = Math::PI / 180 * Camera.angle + Camera._x((Math.cos(angle + (3 * Math::PI / 4)) * 0.7 + 0.5) * Window.height )#* (1/Camera.zoom)) + Camera._y((Math.cos(angle - (3 * Math::PI / 4)) * 0.7 + 0.5) * Window.height )#* (1/Camera.zoom)) + shift = (Window.width - Window.height) / 2 + Camera._x(shift )#* (Camera.zoom / 1)) + + + Camera._x(-shift * Math.cos(-angle) )#* (1/Camera.zoom)) + Camera._y(-shift * Math.sin(-angle) )#* (1/Camera.zoom)) + Camera._x(-Window.width.to_f * 0.5 * ((1/Camera.zoom) - 1)) + Camera._y(-Window.height.to_f * 0.5 * ((1/Camera.zoom) - 1)) + puts 'debug x' + puts Camera.x + puts @debug1 + puts 'debug y' + puts Camera.y + puts @debug3 end show |
