使用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
的结果四舍五入为整数。在几乎所有的情况下,这将给出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之后进行强制转换。