我正在学习XNA以及http://creators.xna.com/en-US/上发现的几乎所有教育工具包.我总是在向量上看到对Normalize()的调用.我理解,normalize基本上将向量转换为单位长度,所以它给出的只是方向.
现在我的问题是何时进行标准化以及它对我有什么帮助.我正在进行2D编程,因此请在2D概念而不是3D中进行解释.
编辑:这是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;
Run Code Online (Sandbox Code Playgroud)
}