【问题标题】:Making object locked to a circle "follow" mouse使对象锁定到一个圆圈“跟随”鼠标
【发布时间】:2017-05-12 04:49:49
【问题描述】:

我正在制作一个圆形乒乓球游戏(只有一个球拍,你在一个圆圈中移动,球在圆圈中间产卵)

目前,我几乎把所有东西都搞定了,但我觉得使用键盘移动拨片太慢了,而且我找不到任何既不太快也不太慢的“中间”值

我看到了这个游戏的一些其他例子,使用鼠标来控制桨,但我不知道怎么做。

这是我对桨的更新功能(对不起,如果我处理更新的方式很丑陋):

pad:update(

function(dt,self)
    local mouseX,mouseY=love.mouse.getPosition()
    self.rot=math.atan2((400 - self.x), -(300 - self.y))
    --self.rot=math.atan2((mouseX - self.x), -(mouseY - self.y))
    self.x = circleRadius*math.cos(self.r) + self.orgX;
    self.y = circleRadius*math.sin(self.r) + self.orgY;
    if love.keyboard.isDown("a") then
        self.r=self.r+4*dt
    end
    if love.keyboard.isDown("d") then
        self.r=self.r-4*dt
    end
end,
dt
)

上面的代码在 love.update 中,并将一个函数作为参数发送到 pads 更新函数,然后调用该函数,并为其提供正确的参数,如 self 和 dt。

r 基本上就是桨在圆圈上的位置

【问题讨论】:

  • “键盘移动”的速度是表达式4*dt中的因子4。对于“鼠标移动”(左右,不是点击)添加行self.r = self.r + 0.1*(mouseX - last_mouseX); last_mouseX = mouseX(更改常数0.1以调整“鼠标移动”的速度)。在pad:update( 行之前添加行local last_mouseX = love.mouse.getPosition()
  • 我刚刚将圆上的位置设置为圆心和鼠标之间的角度,就像这样self.r=math.atan2((400-mouseX), -(300-mouseY))+math.rad(90)

标签: lua mouse love2d pong


【解决方案1】:

通过将圆 (r) 上的当前位置设置为鼠标与圆心(在我的例子中是 800x600 窗口的中心)之间的角度来获得它

self.r=math.atan2((400-mouseX), -(300-mouseY))+math.rad(90)

【讨论】:

  • 尝试self.r=math.atan2(300-mouseY, 400-mouseX)self.r=math.atan2(mouseY-300, mouseX-400) 而不是添加math.rad(90)
猜你喜欢
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
相关资源
最近更新 更多