私はそのようなプロパティを書きました (私の XNA ゲーム オブジェクトの方向を表します):
public Vector2 Direction
{
get { return direction; }
protected set
{
(direction = value).Normalize(); // ***
angle = MathHelper.WrapAngle((float)Math.Atan(direction.X / direction.Y));
}
}
setは、オブジェクトの向きを角度で表し、同時に正規化されたベクトルで表す 2 つの同等のフィールドを設定します。
***でマークされた行が失敗したため、ゲームの開始に失敗しました。ベクトルを正規化しません。
この行を次のように変更しました。
direction = value;
direction.Normalize();
それは正常に動作します...なぜですか?***でマークされた行で、最初の操作はvalueを割り当ててから、 directionを正規化
すると仮定しました。しかし、それは真実ではありません。
_ __
__ _ _ ___
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();