【发布时间】:2010-06-21 00:38:29
【问题描述】:
我正在学习 XNA 以及 http://creators.xna.com/en-US/ 上的几乎所有教育工具包。我总是在向量上看到对 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;
}
【问题讨论】: