红宝石gosu移动图像的方向是指向

时间:2015-05-29 14:27:35

标签: ruby

我一直试图让图像向指向的方向移动 然而,它只是随机方向移动:(
无法弄清楚为什么......

这是代码:
require 'gosu'

class Game < Gosu::Window def initialize super(1280, 720, true) @image = Gosu::Image.from_text ':', 100 @ang = 1 @x = 640 - @image.width @y = 360 - @image.height end def update @sngX = (10.0/Math.cos(@ang.to_f)).to_i @sngY = (10.0/Math.sin(@ang.to_f)).to_i @n = Gosu::Image.from_text @ang.to_s, 50 end def draw @image.draw_rot @x, @y, 0, @ang @n.draw 0, 0, 0 end def button_down id close if id == Gosu::KbEscape if id == Gosu::KbE @ang += 10 end if id == Gosu::KbQ @ang -= 10 end if id == Gosu::KbW @x += @sngX @y += @sngY end end end

Game.new.show

1 个答案:

答案 0 :(得分:1)

它肯定不会随意发生。

我敢打赌问题是数学三角函数期望弧度中的值不是梯度,因此@sngX@sngY被赋予极端结果。

从Ruby文档到Math :: cos:

  

计算x的余弦值(以弧度表示)。返回-1.0..1.0

范围内的Float

希望你知道如何将毕业生转换成弧度。