このプログラミングゲームを参考に、現在制作中です。
キャンバスを特定の距離に、現在の角度に従って移動 (変換) する以下のメソッドを作成しました。
private void MoveBot(double pix, MoveDirection dir)
{
if (dir == MoveDirection.Forward)
{
Animator_Body_X.To = Math.Sin(HeadingRadians) * pix;
Animator_Body_Y.To = ((Math.Cos(HeadingRadians) * pix) * -1);
}
else
{
Animator_Body_X.To = ((Math.Sin(HeadingRadians) * pix) * -1);
Animator_Body_Y.To = Math.Cos(HeadingRadians) * pix;
}
Animator_Body_X.To += Translate_Body.X;
Animator_Body_Y.To += Translate_Body.Y;
Animator_Body_X.From = Translate_Body.X;
Translate_Body.BeginAnimation(TranslateTransform.XProperty, Animator_Body_X);
Animator_Body_Y.From = Translate_Body.Y;
Translate_Body.BeginAnimation(TranslateTransform.YProperty, Animator_Body_Y);
TriggerCallback();
}
受け入れるパラメーターの 1 つは、変換時にカバーする必要があるピクセル数です。
上記のコードに関して、Animator_Body_X
とAnimator_Body_Y
はタイプDoubleAnimation
であり、ロボットのTranslateTransform
オブジェクトに適用されます。Translate_Body
私が直面している問題は、入力された距離に応じて、ロボット (キャンバス) が異なる速度で移動していることです。したがって、距離が長いほど、ロボットは速く動きます! つまり、入力された距離が の20
場合、ロボットの動きはかなり遅くなりますが、入力された距離が の場合、800
文字通り画面から飛び出します。
入力された距離に関係なく、この速度を一定にする必要があります。
Animator_Body_X
入力された距離に応じてとプロパティのいくつかを微調整する必要があると思いますが、Animator_Body_Y
何を正確に微調整すればよいかわかりません (数学も行う必要があると思います)。
これを理解するために見てみたいと思うかもしれないプロパティのリストを次に示します。DoubleAnimation