我在旋转三角形精灵的中心绘制撞击箱时遇到问题。当我生成三角形时,我将碰撞矩形设置为:
bullet.collisionRect.width = flashingTriangleSprite.getWidth() - 20;
bullet.collisionRect.height = flashingTriangleSprite.getHeight() - 14;
bullet.scale = 0.287f;
更新完成如下:
bullet.position.y += bullet.velocity.y;
// center collision rect over triangle sprite
bullet.collisionRect.x =
bullet.position.x + ((flashingTriangleSprite.getWidth() / 2) - bullet.collisionRect.getWidth() / 2);
bullet.collisionRect.y =
bullet.position.y + ((flashingTriangleSprite.getHeight() / 2) - bullet.collisionRect.getHeight() / 2);
if (bullet.scale < 1)
{
bullet.scale += 0.011f;
}
if (bullet.driftDirection == Globals.Direction.LEFT)
{
bullet.rotation -= 3.804f;
bullet.position.x -= bullet.velocity.x;
}
else // drift right
{
bullet.rotation += 3.804f;
bullet.position.x += bullet.velocity.x;
}
如您所见,hitboxes不居中。事实上,根据三角精灵的旋转,hitbox似乎改变了三角形精灵内的位置。我有什么想法吗?
答案 0 :(得分:1)
确定您的hitbox中心位置时,您的目标是三角形精灵(正方形)的中心,但这不是绘制三角形的完美中心。
因此,您的hitbox始终更接近三角形的一个顶点(取决于旋转)。此外,您的hitbox永远不会随着三角形旋转,相反它们似乎总是垂直竖立。
要将hitbox放置在三角形的中间,你应该瞄准精灵高度的1/3(如果三角形在底部精灵图像的底部有一侧平坦)并且当你更新精灵时,尝试更新hitbox旋转以匹配精灵旋转。
您还可以尝试使用PolygonShape制作更精确的三角形命中框,但这取决于您。