我想知道为什么我的代码不能完全正常工作。
int sinval = (int)Math.Sin(gameTime.ElapsedGameTime.TotalSeconds) * 100;
mSprite.Position += (new Vector2(5 * sinval, 0));
我的更新方法中有这个,我真的想要某种概念证明。无论如何,我想要它做的基本上只是在X轴上稍微摆动一下。但由于某种原因,它只在开头添加一次sinval所以任何时候我改变这段代码中的一个值它有一个新的起始位置,但就是它。
我也在更新方法中有这个。
新守则:
int sinval = (int) (Math.Sin(gameTime.ElapsedGameTime.TotalSeconds) * 61);
mSprite.Position += (new Vector2(25 * sinval, 0));
答案 0 :(得分:2)
您将Math.Sin
的结果四舍五入为整数。在几乎所有的情况下,这将给出0. Math.Sin
分别为-Math.PI / 2和Math.PI / 2返回-1和1 ...但在所有其他情况下它& #39;在向0舍入后给出0。
你的意思是在乘以100之后舍入到整数
int sinval = (int) (Math.Sin(gameTime.ElapsedGameTime.TotalSeconds) * 100);
答案 1 :(得分:0)
Math.Sin()
始终介于-1和1之间
将其投放到int
始终会返回0
。
您希望在将其乘以100之后进行投射。