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