我在我的love2d中绘制了一个玩家,但只填充了四分之一?

这是我的 love2d 中跳跃时的角色。

看起来很好,但是当我着地时会是这样的。

我发现可能与图像有关,它没有填满整个正方形,所以它简单地超出了碰撞正方形。

那是它应该呆的方框,但由于我很新程序设计,所以我不能想出如何做到这一点。我一直在寻找解决方案,但目前找不到。

点赞
用户2279620
用户2279620

最有可能发生的是你将 x,y 坐标设置为精灵的中心。所以当地图遇到中心时它就会停止。

由于你是在地图之前绘制的精灵,因此你只能看到地图未覆盖的部分。

证明这一点的简单方法是在地图之后绘制精灵,这样你就可以看到整个精灵在地图上方。

有几种解决这个问题的方法,要么保持碰撞点的不变,将精灵的 o x 设置为 -width/2,o y 设置为 -height/2。

或者通过将宽度/2和高度/2添加到碰撞点来将碰撞点设置在精灵的底部。

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

2013-11-10 20:08:14
用户4648708
用户4648708

首先,我假设您想让pwidth / pheight成为数字,而不是获取函数。

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)
2015-03-09 10:12:49