- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在开发的游戏中使用 Mathhelper.Clamp 时遇到了问题。这是导致我出现问题的代码片段:
if (background.position.Y == 0)
{
player.position.Y = MathHelper.Clamp(player.position.Y, 0, viewport.Height / 2);
}
if (Math.Abs(background.position.Y) == background.sprite.Height - viewport.Height / 2)
{
player.position.Y = MathHelper.Clamp(player.position.Y, viewport.Height / 2, viewport.Height - player.sprite.Height);
}
if (player.position.Y == viewport.Height / 2)
{
background.position.Y = MathHelper.Clamp(background.position.Y, -(background.sprite.Height - viewport.Height / 2), 0);
}
基本上,我希望完成的是(从 x,0 开始)让玩家 Sprite 向下移动直到它到达屏幕中间,然后背景将移动,直到它到达背景底部减去屏幕高度的一半,然后玩家 Sprite 将再次移动,直到它到达屏幕底部。 (我有实现此目的的代码)- 对我来说,这似乎是 2D 横向卷轴器的非常典型的相机功能。
但是,我遇到的问题是这些位置并没有精确地固定在它们应该的数字上,这意味着依赖于它们被如此专门放置的代码也被破坏了。更具体地说,似乎允许超出夹点的额外一帧移动。
谁能告诉我为什么这不起作用,或者我可以做些什么来让它起作用?提前致谢!
最佳答案
要比较 float ,永远不要使用==
,因为这几乎总是错误的。由于 float 的精度有限,您应该始终查看它们之间的差异是否小于给定的 epsilon。
像这样:
// Difference less than one tenthousandth should be considered equal
private const float Epsilon = 0.0001;
public static bool FloatEquals(float f1, float f2)
{
return Math.Abs(f1 - f2) < Epsilon;
}
关于c# - Mathhelper.Clamp 不准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077737/
我在开发的游戏中使用 Mathhelper.Clamp 时遇到了问题。这是导致我出现问题的代码片段: if (background.position.Y == 0) { player.posi
自从我需要在 C# 中使用 PI (3.1415...) 以来,我一直使用 Math.PI 来获取值。通常我只会使用像 Math.PI/2.0 或 2.0*Math.PI 这样的值,但现在我刚刚注意到
我假设 MathHelper.ToRadians() 返回一个 0° - 360° 的值,其中: 北 0° 东经90° 南纬 180° 西经 270° 或者是: 0°东 北纬 90° 西经 180°
我有一辆车,在加速时我希望速度“缓慢”地增加.. 在查看了几个网站后,我得出的结论是可以使用 SmoothStep 方法来做到这一点? 我非常了解如何移动纹理和其他东西,因此使用 smoothstep
我有一个函数,该函数将采用一系列值,需要将其标准化为范围 [-1, 1]。 MathHelper.Clamp() 只获取超出范围的值并将它们设置为超出范围的值。 XNA 或 C# 是否有任何东西可以满
我是一名优秀的程序员,十分优秀!