2012-02-20 2 views
0

내 코드가 전체적으로 작동하지 않는 이유가 궁금했습니다.Math.Sin을 사용하여 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

당신은 정수로 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); 
+0

그래, 여전히 옳다. 그러나 여전히 진동하는 것처럼 보이지는 않는다. 이제 움직입니다. – ksandarusi

+0

@ksandarusi : 이제 어떻게 움직일까요? –

+0

그것은 곧장 앞으로 이동합니다 – ksandarusi

0

Math.Sin()int 항상 0을 반환에 그 주조 -1과 1
사이에 항상이다.

너는 그것을 100 배로 던지기를 원한다.