如何在LibGDX中使边界(碰撞矩形)的大小比精灵小

3

标题已经说得很清楚了。我希望碰撞箱比玩家角色精灵略小,这样他就能更紧贴墙壁(甚至有些重叠),不会因为子弹只轻轻擦过而死亡。

在我的角色类中,我可以改变矩形的高度和宽度,但无法改变左下角的x和y坐标:

Rectangle bounds = new Rectangle((getPosition().x+0.45f), (getPosition().y+1.25f), 0.52f, 0.64f);

通过这样做,矩形右侧会缩小,因此左侧不变而发生位移。当然,根据需要可以调整高度。
从右边接近墙时,字符和墙之间会留下空白。我希望碰撞框更窄,以便角色无论从哪个方向接近墙都能贴着墙“拥抱”。除此之外,目前一切正常。

自然而然地,如果没有其他办法,我可以改变她拿枪的姿势,并能够使.png更窄,但那会感觉像是放弃,仍然有必要知道如何正确调整碰撞框边缘。 - Steve Waters
1个回答

2
您可以按照以下方式更改矩形的大小并居中显示:
//suppose originalwidth, and originalheight as the starting size, and that you want to set it 40% smaller.
bounds.setSize(originalwidth*0.6F, originalheight*0.6F);

bounds.setPosition( bounds.x+(originalwidth-bounds.width)/2F, bounds.y+(originalheight-bounds.height)/2);

如果您不想改变高度(这样看起来就像脚穿过地板了),那么只需不影响高度即可:

bounds.width = originalwidth*0.6F

bounds.x += (originalwidth-bounds.width)/2F;

2
谢谢,伙计。就这样,它可以工作了。作为一个新手Java“程序员”,这些简单的逻辑语句对我来说仍然是日常工作中需要努力的地方。 - Steve Waters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接