使用Math.Sin进行XNA位置更改

时间:2012-02-20 17:55:21

标签: c# xna

我想知道为什么我的代码不能完全正常工作。

        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));

2 个答案:

答案 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之后进行投射。