- 衝突判定
- 衝突判定
- テトリスにおける衝突判定の基本的な考え方
- ブロックの進行方向に壁・床やブロックの障害物があったらそれ以上進めないようにする
- 次の状態の予測ブロックを作り、予測ブロックが壁・床や他のブロックと重なっていたら衝突していると判定する
- テトリスでの衝突判定と処理
- テトリスでは以下の場合での衝突を想定する
- ブロック落下時の衝突判定
- 進行方向(下向き)に予測ブロックを使って判定
- これをしないと床やブロックを突き抜けてしまう
- 衝突したらブロックをフィールドに固定
- ブロックの左右の移動時の衝突判定
- 進行方向(左右)に予測ブロックを使って判定
- これをしないと壁を突き抜けてしまう
- 衝突したら移動をキャンセル
- ブロックの回転時の衝突判定
- 回転後の予測ブロックを使って判定
- これをしないと回転時に壁・床、他のブロックにめり込んでしまう
- 衝突したら回転をキャンセル
- 予測ブロックの作成
- 予測ブロックは移動、回転する時(落下時、左右のキー、「z」「x」キーが押された時)に作成
- 落下時は現在のブロックを1つ下に移動したものを予測ブロックとする
- 左右移動時は現在のブロックを進行方向に進めたものを予測ブロックとする
- 回転時は回転後の状態のブロックを予測ブロックとする
GIF画像(落下)
GIF画像(移動)
GIF画像(回転)