• グループ番号について
 0:自身のマスクと、他のキャラクタのカテゴリで判定する。
 →全キャラクタと衝突判定(自分のマスクと相手のカテゴリでAND演算)
 つまり、常に衝突判定(自分のマスクと相手のカテゴリでAND演算)あり。

 正:同じグループ番号同士の場合、必ずヒットする。それ以外は0と同等。
 →同じグループ番号の場合は必ず衝突し、異なるグループ番号の場合は衝突判定(自分のマスクと相手のカテゴリでAND演算)
 つまり、同じグループ番号以外と衝突判定(自分のマスクと相手のカテゴリでAND演算)あり。

 負:同じグループ番号同士の場合、必ずヒットしない。それ以外は0と同等。
 →同じグループ番号の場合は必ず衝突せず、異なるグループ番号の場合は衝突判定(自分のマスクと相手のカテゴリでAND演算)
 つまり、同じグループ番号以外と衝突判定(自分のマスクと相手のカテゴリでAND演算)あり。

  • マスクビットとカテゴリビットについて
 相手のカテゴリビットと、自分のマスクビットで、AND演算を行う。
 0であればヒットしない。0以外であればヒットする。

  • ビットのAND演算の具体例(2進数の場合)
①0000と1010
 0000 → 0のため、衝突せず
②1111と1010
 1010 → 0でないため、衝突する
③0001と1010
 0000 → 0のため、衝突せず
④1110と1010
 1010 → 0でないため、衝突する
⑤1010と1010
 1010 → 0でないため、衝突する
⑥0101と1010
 0000 → 0のため、衝突せず
⑦1000と1010
 1000 → 0でないため、衝突する
⑧0111と1010
 0010 → 0でないため、衝突する

 どちらかが0(ONビットなし)であれば、AND演算の結果は0となる。
 どの桁でも1が重ならない場合(どこでもONビットが一致しない場合)、AND演算の結果は0となる。
 1が重なる桁が1つでもある場合(どこかでONビットが一致する場合)、AND演算の結果は0とならない。

 0以外の同一値であれば、AND演算の結果は0以外の同一値となり、0とはならない。
 全キャラクタと衝突させたい場合、全キャラクタのマスクとカテゴリを0以外の同一値にしておけば良い。

  • ビットのAND演算(2進数では、ともに1の場合のみ1となり、それ以外は0)
 1 AND 1 → 1
 1 AND 0 → 0
 0 AND 1 → 0
 0 AND 0 → 0

 同じ値の時は同じ値を返し、異なる値の場合は0を返す。
 ともに1の時のみ1を返し、どちらかが0の時は0を返す。

  • 実際の判定
①自分の衝突判定の有無
 自分のマスクと相手のカテゴリで判定
②相手の衝突判定の有無
 相手のマスクと自分のカテゴリで判定

 自分のマスクを0にしておけば、自分の衝突判定では、衝突しない。
 自分のカテゴリを0にしておけば、相手の衝突判定では、衝突しない。
 自分のマスクもカテゴリも0にしておけば、どの衝突判定でも、衝突しない。
 自分と同じキャラクタ同士で衝突したい場合は、マスクもカテゴリも0にしてはならない。
 自分と同じキャラクタ同士で衝突したい場合は、マスクとカテゴリ0以外の同一値にしておくと確実。

  • 表での管理(2進数の場合)

マスク カテゴリ
A 1111 1111
B 1111 1010
C 1111 0101
D 1111 0000

Aカテゴリ Bカテゴリ Cカテゴリ Dカテゴリ
1111 1010 0101 0000
Aマスク:1111 1111:○ 1010:○ 0101:○ 0000:×
Bマスク:1111 1111:○ 1010:○ 0101:○ 0000:×
Cマスク:1111 1111:○ 1010:○ 0101:○ 0000:×
Dマスク:1111 1111:○ 1010:○ 0101:○ 0000:×

マスク カテゴリ
A 1010 1111
B 1010 1010
C 1010 0101
D 1010 0000

Aカテゴリ Bカテゴリ Cカテゴリ Dカテゴリ
1111 1010 0101 0000
Aマスク:1010 1010:○ 1010:○ 0000:× 0000:×
Bマスク:1010 1010:○ 1010:○ 0000:× 0000:×
Cマスク:1010 1010:○ 1010:○ 0000:× 0000:×
Dマスク:1010 1010:○ 1010:○ 0000:× 0000:×

マスク カテゴリ
A 0101 1111
B 0101 1010
C 0101 0101
D 0101 0000

Aカテゴリ Bカテゴリ Cカテゴリ Dカテゴリ
1111 1010 0101 0000
Aマスク:0101 0101:○ 0000:× 0101:○ 0000:×
Bマスク:0101 0101:○ 0000:× 0101:○ 0000:×
Cマスク:0101 0101:○ 0000:× 0101:○ 0000:×
Dマスク:0101 0101:○ 0000:× 0101:○ 0000:×

マスク カテゴリ
A 0000 1111
B 0000 1010
C 0000 0101
D 0000 0000

Aカテゴリ Bカテゴリ Cカテゴリ Dカテゴリ
1111 1010 0101 0000
Aマスク:0000 0000:× 0000:× 0000:× 0000:×
Bマスク:0000 0000:× 0000:× 0000:× 0000:×
Cマスク:0000 0000:× 0000:× 0000:× 0000:×
Dマスク:0000 0000:× 0000:× 0000:× 0000:×

マスク カテゴリ
A 1010 1111
B 0101 1010
C 0101 0101
D 1010 0000
E 0000 0011
F 1111 1100

Aカテゴリ Bカテゴリ Cカテゴリ Dカテゴリ Eカテゴリ Fカテゴリ
1111 1010 0101 0000 0011 1100
Aマスク:1010 1010:○ 1010:○ 0000:× 0000:× 0010:○ 1000:○
Bマスク:0101 0101:○ 0000:× 0101:○ 0000:× 0001:○ 0100:○
Cマスク:0101 0101:○ 0000:× 0101:○ 0000:× 0001:○ 0100:○
Dマスク:1010 1010:○ 1010:○ 0000:× 0000:× 0010:○ 1000:○
Cマスク:0101 0101:○ 0000:× 0101:○ 0000:× 0001:○ 0100:○
Dマスク:1010 1010:○ 1010:○ 0000:× 0000:× 0010:○ 1000:○
Eマスク:0000 0000:× 0000:× 0000:× 0000:× 0000:× 0000:×
Fマスク:1111 1111:○ 1010:○ 0101:○ 0000:× 0011:○ 1100:○

 同じキャラクタ同士でも衝突する場合としない場合がある。
 自分と相手の衝突と相手と自分の衝突では判定結果が異なる場合がある。
 実際には、2進数→16進数へ変換した値で代入する必要あり。


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2014年08月03日 02:27