我写了这样一个属性(代表我的 XNA 游戏对象的方向):
public Vector2 Direction
{
get { return direction; }
protected set
{
(direction = value).Normalize(); // ***
angle = MathHelper.WrapAngle((float)Math.Atan(direction.X / direction.Y));
}
}
set设置两个等效场,它们以角度表示对象的方向,同时以归一化向量表示。
开始游戏失败,因为***标记的行失败。它不会对向量进行归一化。
我将此行更改为:
direction = value;
direction.Normalize();
它工作正常......为什么?
我假设在***标记的行中,第一个操作是分配值,然后是规范化方向。但事实并非如此。
_ __ __ _ _ ___
Normalize()是Vector2类的方法。
//
// Summary:
// Turns the current vector into a unit vector. The result is a vector one unit
// in length pointing in the same direction as the original vector.
public void Normalize();