Lua 尝试在love2d中将水平移动添加到我的游戏中

Lua 尝试在love2d中将水平移动添加到我的游戏中,lua,love2d,Lua,Love2d,我试着在我的爱情游戏中加入水平移动,但我还没有找到方法。这是我的密码 PADDLE_SPEED = 200 player1 = Paddle(10, 30, 5, 20) player1 = Paddle(10, 30, 5, 20) player2 = Paddle(VIRTUAL_WIDTH - 15, VIRTUAL_HEIGHT - 30, 5, 20) player3 = Paddle(30, 10, 20, 5) player4 = Paddle(VIRTUAL_WIDTH - 30

我试着在我的爱情游戏中加入水平移动,但我还没有找到方法。这是我的密码

PADDLE_SPEED = 200
player1 = Paddle(10, 30, 5, 20)
player1 = Paddle(10, 30, 5, 20)
player2 = Paddle(VIRTUAL_WIDTH - 15, VIRTUAL_HEIGHT - 30, 5, 20)
player3 = Paddle(30, 10, 20, 5)
player4 = Paddle(VIRTUAL_WIDTH - 30, VIRTUAL_HEIGHT - 15, 20, 5)
ball = Ball(VIRTUAL_WIDTH / 2 - 2, VIRTUAL_HEIGHT / 2 - 2, 4, 4)

if love.keyboard.isDown('w') then
    player1.dy = -PADDLE_SPEED
elseif love.keyboard.isDown('s') then
    player1.dy = PADDLE_SPEED
else
    player1.dy = 0
end

if love.keyboard.isDown('a') then
    player1.dx = PADDLE_SPEED
elseif love.keyboard.isDown('d') then
    player1.dx = -PADDLE_SPEED
else 
    player1.dx = 0
end

if love.keyboard.isDown('a') then
    player1.dx = -PADDLE_SPEED
elseif love.keyboard.isDown('d') then
    player1.dy = PADDLE_SPEED
else
    player1.dx = 0
end

if love.keyboard.isDown('up') then
    player2.dy = -PADDLE_SPEED
elseif love.keyboard.isDown('down') then
    player2.dy = PADDLE_SPEED
else
    player2.dy = 0
end

if love.keyboard.isDown('i') then
    player3.dy = -PADDLE_SPEED
elseif love.keyboard.isDown('k') then
    player3.dy = PADDLE_SPEED
else
    player3.dy = 0
end

if love.keyboard.isDown('g') then
    player4.dy = -PADDLE_SPEED
elseif love.keyboard.isDown('b') then
    player4.dy = PADDLE_SPEED
else
    player4.dy = 0
end
这是我的课,我叫它桨

Paddle = Class{}

function Paddle:init(x, y, width, height)
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.dy = 0
    self.dx = 0
end

function Paddle:update(dt)
    if self.dy < 0 then
        self.y = math.max(0, self.y + self.dy * dt)
    else
        self.y = math.min(VIRTUAL_HEIGHT - self.height, self.y + self.dy * dt)
    end
end

function Paddle:render()
    love.graphics.rectangle('fill', self.x, self.y, self.width, self.height)
end
blade=Class{}
功能挡板:初始(x、y、宽度、高度)
self.x=x
self.y=y
self.width=宽度
自我高度=高度
self.dy=0
self.dx=0
结束
功能挡板:更新(dt)
如果self.dy<0,则
self.y=math.max(0,self.y+self.dy*dt)
其他的
self.y=math.min(虚拟高度-self.HEIGHT,self.y+self.dy*dt)
结束
结束
函数拨片:render()
love.graphics.rectangle('fill',self.x,self.y,self.width,self.height)
结束

我会尝试单独绘制矩形,但我必须删除所有包含player1-4的代码。有没有什么方法可以将一个变量(如paile\u SPEED)设置为一个数字?

这样您就不能正确地实例化您的paile类了。基于,我在你们的划桨课上做了一些改变

划桨。lua

Paddle={x=0,y=0,width=0,height=0}

function Paddle:new(o)
    o = o or {}
    setmetatable(o, self)
    self.__index = self
    return o
end

function Paddle:update(dt)
    if self.dy < 0 then
        self.y = math.max(0, self.y + self.dy * dt)
    else
        self.y = math.min(VIRTUAL_HEIGHT - self.height, self.y + self.dy * dt)
    end
end

function Paddle:render()
    love.graphics.rectangle('fill', self.x, self.y, self.width, self.height)
end
require('Paddle')

function love.load()
    --initial graphics setup
    love.graphics.setBackgroundColor(0.41, 0.53, 0.97) 
    love.window.setMode(1000, 600) 

    PADDLE_SPEED = 200
    VIRTUAL_WIDTH = 30
    VIRTUAL_HEIGHT = 30

    player1 = Paddle:new{x=10, y=30, width=5, height=20}
    player2 = Paddle:new{x=VIRTUAL_WIDTH-15, y=VIRTUAL_HEIGHT-30, width=5, height=20}
    player3 = Paddle:new{x=30, y=10, width=20, height=5}
    player4 = Paddle:new{x=VIRTUAL_WIDTH-30, y=VIRTUAL_HEIGHT-15, width=20, height=5}
    -- ball = Ball(VIRTUAL_WIDTH / 2 - 2, VIRTUAL_HEIGHT / 2 - 2, 4, 4)

end

function love.update(dt)
    
    if love.keyboard.isDown('w') then
        player1.y = player1.y + PADDLE_SPEED * dt
    elseif love.keyboard.isDown('s') then
        player1.y = player1.y - PADDLE_SPEED * dt
    end

    if love.keyboard.isDown('a') then
        player1.x = player1.x + PADDLE_SPEED * dt
    elseif love.keyboard.isDown('d') then
        player1.x = player1.x - PADDLE_SPEED * dt
    end

    if love.keyboard.isDown('a') then
        player2.x = player2.x - PADDLE_SPEED * dt
    elseif love.keyboard.isDown('d') then
        player2.x = player2.x + PADDLE_SPEED * dt
    end

    if love.keyboard.isDown('up') then
        player2.y = player2.y - PADDLE_SPEED * dt
    elseif love.keyboard.isDown('down') then
        player2.y = player2.y + PADDLE_SPEED * dt
    end

    if love.keyboard.isDown('i') then
        player3.y = player3.y - PADDLE_SPEED * dt
    elseif love.keyboard.isDown('k') then
        player3.y = player3.y + PADDLE_SPEED * dt
    end

    if love.keyboard.isDown('g') then
        player4.y = player4.y - PADDLE_SPEED * dt
    elseif love.keyboard.isDown('b') then
        player4.y = player4.y + PADDLE_SPEED * dt
    end
end

function love.draw()
    player1:render()
    player2:render()
    player3:render()
    player4:render()
end
所以你的球不行了,因为我不知道你到底想要什么,你的
桨:更新(dt)
仍然不行,因为我不知道你到底想要什么。当你开始使用
player:update(dt)
时,确保包括
player1:update(dt)
player2:update(dt)
。。。在你的
love:update(dt)
功能中,否则你的玩家都不会更新

你应该得到你的方块的水平和垂直运动


另外,如果你再次发布一个问题a,你应该确保明确说明哪些问题不起作用。您的一些详细信息丢失了,我不确定这是您询问的部分,还是您在原始代码中有这些详细信息,并且询问了其他内容

看起来你可能想处理碰撞。这里是我解释碰撞的地方,但我可能会推荐这种类型的场景