我正在写一个2D平台游戏,它有一个带有矩形撞击盒的物体。我正在使用XNA,它使用单精度浮点数作为其Vector2数据类型。由于浮点算法略有不准确,精灵的碰撞分辨率使其略高于给定图块的顶部,而不是将精灵直接放在图块上。
sprite.Position.Y == 240.0694f;
collisionDepth.Y == -0.06945801f;
sprite.Position.Y + collisionDepth.Y == 239.999985f;
correctPosition == 240f;
correctionPosition - (sprite.Position.Y + collisionDepth.Y) == 0.000015f;
不正确的放置导致精灵稍微抖动,但奇怪的是只在Y = 240f和Y = 248f之间。
我的问题是:如何确定给定的浮点值是否非常接近整数值?如何对其进行适当的舍入?
答案 0 :(得分:1)
尝试Math.Abs
方法来衡量贴近度:
float dVal = ...;
int iVal = ...;
if (Math.Abs(dVal - iVal) < 0.0001)
{
// values are very close to each other
}