Я изучаю XNA и почти во всех обучающих наборах, найденных на http://creators.xna.com/en-US/. Я всегда вижу вызов Normalize() для вектора. Я понимаю, что нормализация в основном преобразует вектор в единицу длины, поэтому все это дает направление.
Теперь мой вопрос: когда нормализовать и что именно мне это помогает. Я занимаюсь 2D-программированием, поэтому, пожалуйста, объясните в 2D-концепциях, а не в 3D.
EDIT: вот код в наборе XNA, так почему называется Normalize?
if (currentKeyboardState.IsKeyDown(Keys.Left) ||
currentGamePadState.DPad.Left == ButtonState.Pressed)
{
catMovement.X -= 1.0f;
}
if (currentKeyboardState.IsKeyDown(Keys.Right) ||
currentGamePadState.DPad.Right == ButtonState.Pressed)
{
catMovement.X += 1.0f;
}
if (currentKeyboardState.IsKeyDown(Keys.Up) ||
currentGamePadState.DPad.Up == ButtonState.Pressed)
{
catMovement.Y -= 1.0f;
}
if (currentKeyboardState.IsKeyDown(Keys.Down) ||
currentGamePadState.DPad.Down == ButtonState.Pressed)
{
catMovement.Y += 1.0f;
}
float smoothStop = 1;
if (catMovement != Vector2.Zero)
{
catMovement.Normalize();
}
catPosition += catMovement * 10* smoothStop;
}