Lua 我把一个玩家拉进了我的love2d,但它只填充了1/4?

Lua 我把一个玩家拉进了我的love2d,但它只填充了1/4?,lua,love2d,Lua,Love2d,这是我在love2d中跳跃时的角色。 看起来不错,但是 当我落地时,它看起来是这样的 我发现它可能与img有关,它不会填满整个正方形。 所以它只是脱离了碰撞方块 这是它应该在的广场,但由于我对编程相当陌生,我不知道怎么做。 我一直在寻找解决方案,但找不到一台自动取款机 这是我的 爱,负荷 function love.load() love.graphics.setBackgroundColor( 204, 255, 204 ) crazy = love.graphics.newImage(

这是我在love2d中跳跃时的角色。 看起来不错,但是

当我落地时,它看起来是这样的

我发现它可能与img有关,它不会填满整个正方形。 所以它只是脱离了碰撞方块

这是它应该在的广场,但由于我对编程相当陌生,我不知道怎么做。 我一直在寻找解决方案,但找不到一台自动取款机

这是我的 爱,负荷

function love.load()
love.graphics.setBackgroundColor( 204, 255, 204 )
crazy = love.graphics.newImage("player.png")
pwidth = crazy.getWidth
pheight = crazy.getHeight


AdvTiledLoader.path = "maps/"
map = AdvTiledLoader.load("map.tmx")
map:setDrawRange(0, 0, map.width * map.tileWidth, map.height * map.tileHeight)

camera:setBounds(0, 0, map.width * map.tileWidth - love.graphics.getWidth(), map.height * map.tileHeight - love.graphics.getHeight() )

world =     {
            gravity = 1536,
            ground = 512,
            }

player =    {
            x = 256,
            y = 256,
            x_vel = 0,
            y_vel = 0,
            jump_vel = -1024,
            speed = 512,
            flySpeed = 700,
            state = "",
            h = 32,
            w = 32,
            standing = false,
            }
function player:jump()
    if self.standing then
        self.y_vel = self.jump_vel
        self.standing = false
    end
end

function player:right()
    self.x_vel = self.speed
end

function player:left()
    self.x_vel = -1 * (self.speed)
end

function player:stop()
    self.x_vel = 0
end

function player:collide(event)
    if event == "floor" then
        self.y_vel = 0
        self.standing = true
    end
    if event == "cieling" then
        self.y_vel = 0
    end
end
还有我的爱人

function love.draw()
camera:set()

love.graphics.draw(crazy, player.x , player.y)


love.graphics.setColor( 255, 255, 255 )
map:draw()

camera:unset()
end
如果您需要查看我的碰撞或其他内容,请询问,我会将其粘贴到下面:)


我真的很感激你的帮助,谢谢

最有可能发生的是,你的x,y坐标是精灵的中心。所以当地图到达中心时它就停止了

当你在地图前绘制精灵时,你只能看到地图没有覆盖的部分

证明这一点的一个简单方法是在地图后绘制精灵,你应该在地图上看到整个精灵

有几种方法可以解决这个问题。要么让碰撞留在原来的位置,然后用ox=-width/2,oy=-height/2绘制精灵

或者,通过向碰撞点添加宽度/2和高度/2,使碰撞位于精灵底部的


如果这没有帮助,那么我们可能需要冲突逻辑。

首先,我假设您希望pwidth/pheight是数字,而不是get函数

pwidth = crazy.getWidth()
pheight = crazy.getHeight()
图像是从左上角绘制的,但是我猜你的碰撞逻辑中的碰撞框是以玩家的位置为中心的

可以通过更改绘图函数的坐标进行补偿,也可以将原点偏移传递到图像。指定原点偏移的优点是,可以相对于该原点旋转和缩放

love.graphics.draw(crazy, player.x - pwidth/2 , player.y - pheight/2)

rotation, scalex, scaley = 0, 1, 1
love.graphics.draw(crazy, player.x, player.y, rotation, scalex, scaley, pwidth/2, pheight/2)