使用Math.Sin的XNA位置更改

本文关键字:位置 XNA Math Sin 使用 | 更新日期: 2023-09-27 18:25:16

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

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

使用Math.Sin的XNA位置更改

Math.Sin的结果四舍五入为整数。在几乎所有的情况下,这将给出0。Math.Sin分别为-Math.PI/2和Math.PI/2返回-1和1。。。但在所有其他情况下,它将在向0取整后给出0。

你的意思是在乘以100后四舍五入到整数吗?

int sinval = (int) (Math.Sin(gameTime.ElapsedGameTime.TotalSeconds) * 100);

Math.Sin()始终在-1和1之间。
将其强制转换为int总是返回0

您希望在将其乘以100之后进行强制转换。