2012-03-20 26 views
0

I必要があり、このような謝罪は、このような簡単な質問だが、私はそれが年齢のために働く取得しようとしてきました。移動スプライト

私はスプライトと2つのVector2変数を持っており、スプライトをあるベクトルから別のベクトルに移動したいと考えています。

助けがあれば助かります。ありがとう。

このコードは私のために動作しますが、それは小さな動きは、すべての

//CurPos is the sprite current Position and DestPos is the Destination Position 
Vector2 StepAnm = (CurPos - DestPos)/60; 

をクリックし、更新機能ここで

if (currentMouseState.LeftButton ==Microsoft.Xna.Framework.Input.ButtonState.Pressed&&lastMouseState.LeftButton ==Microsoft.Xna.Framework.Input.ButtonState.Released) 
{ 
    if ((int)CurPos.X != (int)DestPos.X) 
    { 
     CurPos.X -= StepAnm.X; 
    } 
} 
+0

あなたの質問はおそらくhttp://gamedev.stackexchange.com/a/7757の複製ですか? – Robbie

+0

私は知りませんが、それは私と一緒に動作しません! –

答えて

0

Update方法を使用した例です。

以下は、このコードをあなたはおそらくあなたが一定の速度のシステムを使用している場合は、それを少し変更したいと思うでしょう

Vector2 destPos; 
Vector2 stepAnm; //Needs to be set when destPos is updated 
float duration; //Could be dependent on distance or not 

protected override void Update(GameTime gameTime) 
{ 
    float elapsedSeconds = (float)gameTime.ElapsedGameTime.TotalSeconds; 


    float moveAmount = elapsedSeconds/duration; 
    Vector2 movement = stepAnm * moveAmount; 

    //This should fix going too far 
    if (movement.LengthSquared() > destPos.DistanceSquared(curPos)) 
    { 
     curPos = destPos; 
    } 
    else 
    { 
     curPos += stepAnm * moveAmount; //+= or -= depending on how you calculate stepAnm 
    } 
} 

外に設定する必要があります。私は、より一般的な期間ベースのシステムが含まれています。

+0

質問が更新されました これは私の特定の問題です –

+0

これはXNAの私の最初の使用ですので、説明する必要があります:) –

+0

メソッド 'DistanceSquared'のオーバーロードは0引数をとりません! 7agooz @ –