summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--adapt_triangle.rb28
-rw-r--r--camera.rb22
-rw-r--r--run.rb29
3 files changed, 26 insertions, 53 deletions
diff --git a/adapt_triangle.rb b/adapt_triangle.rb
index de1ae0d..dd73991 100644
--- a/adapt_triangle.rb
+++ b/adapt_triangle.rb
@@ -2,6 +2,7 @@
module AdaptTriangle
+=begin
def _translate_x(x)
@x1 += x
@x2 += x
@@ -22,7 +23,7 @@ module AdaptTriangle
@x3 = ((@x3) * Math.cos(angle)) - ((@y3) * Math.sin(angle))
@y3 = ((@x3) * Math.sin(angle)) + ((@y3) * Math.cos(angle))
end
-
+=end
def _update
angle = Camera.angle * (Math::PI / 180)
@x1 = (((x + x1 - Camera.x) * Math.cos(angle)) - ((y + y1 - Camera.y) * Math.sin(angle))) * Camera.zoom
@@ -31,6 +32,15 @@ module AdaptTriangle
@y2 = (((x + x2 - Camera.x) * Math.sin(angle)) + ((y + y2 - Camera.y) * Math.cos(angle))) * Camera.zoom
@x3 = (((x + x3 - Camera.x) * Math.cos(angle)) - ((y + y3 - Camera.y) * Math.sin(angle))) * Camera.zoom
@y3 = (((x + x3 - Camera.x) * Math.sin(angle)) + ((y + y3 - Camera.y) * Math.cos(angle))) * Camera.zoom
+ width = Window.width * 0.5
+ height = Window.height * 0.5
+ @x1 += width
+ @x2 += width
+ @x3 += width
+ @y1 += height
+ @y2 += height
+ @y3 += height
+
end
def _x1
@@ -46,10 +56,6 @@ module AdaptTriangle
end
def x=(x)
- #diff = x - self.x
- #self.x1 += diff
- #self.x2 += diff
- #self.x3 += diff
@x = x
_update
end
@@ -59,39 +65,27 @@ module AdaptTriangle
end
def y=(y)
- #diff = y - self.y
- #self.y1 += diff
- #self.y2 += diff
- #self.y3 += diff
@y = y
end
#undo rotation
def x1
@virtual_x1 ||= @x1
- #(@x1 * Math.cos(-Camera.angle)) - (@y1 * Math.sin(-Camera.angle)) - Camera.x
end
#difference between 'x1' and undone rotation > then rotated
def x1=(x1)
@virtual_x1 = x1
_update
- #temp = self.x1
- #@x1 += ((x1 - temp) * Math.cos(Camera.angle))
- #@y1 += ((x1 - temp) * Math.sin(Camera.angle))
end
def y1
@virtual_y1 ||= @y1
- #(@x1 * Math.sin(-Camera.angle)) + (@y1 * Math.cos(-Camera.angle)) - Camera.y
end
def y1=(y1)
@virtual_y1 = y1
_update
- #temp = self.y1
- #@x1 += -((y1 - temp) * Math.sin(Camera.angle))
- #@y1 += ((y1 - temp) * Math.cos(Camera.angle))
end
def x2
diff --git a/camera.rb b/camera.rb
index 2f521cc..cd4dc38 100644
--- a/camera.rb
+++ b/camera.rb
@@ -15,7 +15,7 @@ module Camera
item.extend AdaptTriangle if item.is_a? Triangle
objects.push(item) unless objects.include?(item)
end
-
+=begin
def self.center_x
x + ((Window.width / 2) * (1/zoom))
end
@@ -50,11 +50,12 @@ module Camera
objects.each(&:_update)
end
=end
+
def self._x(x)
@x += x
objects.each(&:_update)
end
-
+
def self._y(y)
@y += y
objects.each(&:_update)
@@ -65,9 +66,9 @@ module Camera
end
def self.x=(x)
- angle = Camera.angle * (Math::PI / 180)
- @y += (x - self.x) * Math.sin(-angle)
- @x += (x - self.x) * Math.cos(-angle)
+ #angle = Camera.angle * (Math::PI / 180)
+ #@y += (x - self.x) * Math.sin(-angle)
+ @x = x#+= (x - self.x) * Math.cos(-angle)
objects.each(&:_update)
end
@@ -76,9 +77,9 @@ module Camera
end
def self.y=(y)
- angle = Camera.angle * (Math::PI / 180)
- @x += -(y - self.y) * Math.sin(-angle)
- @y += (y - self.y) * Math.cos(-angle)
+ #angle = Camera.angle * (Math::PI / 180)
+ #@x += -(y - self.y) * Math.sin(-angle)
+ @y = y#+= (y - self.y) * Math.cos(-angle)
objects.each(&:_update)
end
@@ -88,12 +89,7 @@ module Camera
def self.zoom=(zoom)
if zoom != self.zoom
- 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]
objects.each(&:_update)
end
end
diff --git a/run.rb b/run.rb
index 3eef70a..884efcc 100644
--- a/run.rb
+++ b/run.rb
@@ -180,38 +180,21 @@ update do
Camera.zoom *= @zoom_by
if @is_follow
- #Camera.center(@player.x, @player.y)
- Camera.center_x = @player.x
- Camera.center_y = @player.y
+ Camera.x = @player.x
+ Camera.y = @player.y
else
- Camera.x += @cam_x_move
- Camera.y += @cam_y_move
+ angle = Camera.angle * (Math::PI / 180)
+ Camera.x += (@cam_x_move * Math.cos(-angle)) - (@cam_y_move * Math.sin(-angle))
+ Camera.y += (@cam_x_move * Math.sin(-angle)) + (@cam_y_move * Math.cos(-angle))
end
@cam_x_move = 0
@cam_y_move = 0
@zoom_by = 1
- @ui_pos_cam.text = "Camera Position: #{Camera.center_x.round(1)}, #{Camera.center_y.round(1)}"
+ @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}"
- 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