作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在旋转三角形 Sprite 中心绘制命中框时遇到问题。当我生成三角形时,我像这样设置碰撞矩形:
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;
}
这是结果:/image/NHAzE.jpg
如您所见,命中框未居中。事实上,命中框似乎会根据三角形 Sprite 的旋转而改变三角形 Sprite 内的位置。你知道我做错了什么吗?
最佳答案
在确定碰撞盒中心位置时,您的目标是三角形 Sprite (一个正方形)的中心,但这并不是所绘制三角形的完美中心。
因此,你的碰撞箱总是更接近三角形的顶点之一(取决于旋转)。此外,你的碰撞箱永远不会随着三角形旋转,相反,它们总是看起来垂直站立。
要将碰撞盒放置在三角形的中间,您应该瞄准 Sprite 高度的 1/3(如果三角形的一侧在基本 Sprite 图像的底部平坦),并且当您更新 Sprite 时,尝试更新碰撞盒旋转以匹配 Sprite 旋转。
您还可以尝试使用 PolygonShape 制作更准确的三角形碰撞框,但这取决于您。
关于java - 如何将碰撞盒置于旋转三角形 Sprite 内的中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44990054/
我是一名优秀的程序员,十分优秀!