使对象锁定到圆圈 "follow" 鼠标
Making object locked to a circle "follow" mouse
我正在制作一个圆圈乒乓球游戏(只有一个球拍,你在圆圈中移动,球在圆圈中间生成)
目前,我几乎一切都下来了,但我觉得使用键盘移动桨太慢了,我找不到任何 "middle" 不太快或不太慢的值
我看到了这个游戏的一些其他例子,使用鼠标来控制球拍,但我不知道该怎么做。
这是我的球拍更新函数(如果我处理更新的方式很丑,请见谅):
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 update 函数,然后调用该函数,为其提供正确的参数,如 self 和 dt。
r基本上就是球拍在圆上的位置
通过将圆圈 (r) 上的当前位置设置为鼠标与圆心之间的角度(在我的例子中是 window 的中心,即 800x600)得到它
self.r=math.atan2((400-mouseX), -(300-mouseY))+math.rad(90)
我正在制作一个圆圈乒乓球游戏(只有一个球拍,你在圆圈中移动,球在圆圈中间生成)
目前,我几乎一切都下来了,但我觉得使用键盘移动桨太慢了,我找不到任何 "middle" 不太快或不太慢的值
我看到了这个游戏的一些其他例子,使用鼠标来控制球拍,但我不知道该怎么做。
这是我的球拍更新函数(如果我处理更新的方式很丑,请见谅):
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 update 函数,然后调用该函数,为其提供正确的参数,如 self 和 dt。
r基本上就是球拍在圆上的位置
通过将圆圈 (r) 上的当前位置设置为鼠标与圆心之间的角度(在我的例子中是 window 的中心,即 800x600)得到它
self.r=math.atan2((400-mouseX), -(300-mouseY))+math.rad(90)