让一个对象锁定一个圆圈,跟随鼠标移动

我正在制作一个圆形乒乓球游戏(其中只有一个挡板,你在圆形中移动球)

目前,我几乎已经全部完成,但我觉得使用键盘移动挡板太慢了,我找不到任何"中间"值,既不太快也不太慢

我看到了一些使用鼠标控制挡板的示例,但我不知道如何做到这一点。

这是我用于挡板的更新函数(如果我处理更新的方式很丑陋,对不起):

    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基本上是挡板在圆圈上的位置

点赞
用户6079712
用户6079712

通过将当前位置设置在圆(r)上,将鼠标与圆心之间的角度(在我的情况下是窗口中心,即800x600)连接起来。

self.r=math.atan2((400-mouseX), -(300-mouseY))+math.rad(90)
2017-05-11 20:49:49