Tips40

Last-modified: 2011-08-29 (月) 15:49:03

キャラクターの向き(Direction)について

  • カテゴリー: スクリプト
  • 重要性: 普通
  • 投稿日: 2006-02-06 (月) 03:10:12

Directionの値

North = 0,
Right = 1,
East = 2,
Down = 3,
South = 4,
Left = 5,
West = 6,
Mask = 7,
Mask = 7,
Running = 128,
ValueMask = 135

反対の向きを取得するには

現在の向きと反対の向きを取得するには

dir ^ 0x4

とする。最上位ビットとのXORを取れば、半分を中心にした対称の値が得られる。純粋な向きは0~7までなので3ビットで表現できる。この場合、3ビットで100(2進数)となり、最上位ビットの値は4となる。

runningフラグを得るには

bool running = ((dir & Direction.Running) != 0); で得られる。

純粋な向きを得る

純粋な向きだけを得たい場合、Runningなどのフラグが邪魔になる。そういう場合は

public static Direction RunningOff(Direction dir)
{
	//runningフラグがあるかチェック
   bool running = ((dir & Direction.Running) != 0);

   if (running)//runningフラグがあるなら
       dir -= Direction.Running;//runningフラグを取り除く

   return dir;
}

とすればRunningフラグを取り除ける。

向きごとの移動量

North: Y-1
Right: X+1, Y-1
East:  X+1
Down:  X+1, Y+1
South: Y+1
Left:  X-1, Y+1
West:  X-1
Up:    X-1, Y-1;