サイトアイコン IT NEWS

【マイクラ】ガチャPVPの作り方!闘技場でプレイヤー同士の対戦

minecraft-pvp

さて、今回でマイクラガチャPVPの作り方についての連載は最後になります。
前回は、ガチャシステムまで作りました。
最後は闘技場に入り、プレイヤー同士が対戦してから勝敗が決するまでを、またコマンドブロックを使って制御していきます。

ミノクラ版の闘技場

ガチャPVP 闘技場

少しだけ我が家のガチャPVP闘技場をご紹介!
ただの平らな大地では飽きると思ったので、森・池・草原・溶岩の4つのエリアを作りました。
闘技場内のギミックは何でも構いませんので楽しく作りましょう!
敢えてモブが湧くようにしています。

また、闘技場の形は円型で、半径は30ブロックとしていますが、この情報は後にコマンドブロックの設定に関係するので、頭の片隅に入れておいてください。

対戦の開始と終了

前回のガチャシステム編では、闘技場以外でプレイヤー同士が攻撃できないようにゲームルールで制限していたので、プレイヤーが闘技場に入ったら対戦できるようにし、最後の1人まで生き残ったプレイヤーを勝者とします。

コマンドブロックを配置

特定の範囲のプレイヤーを検知

中央にある紫色コマンドブロックは、闘技場にいるプレイヤーの人数を検知するもので、ゲームを制御する上での要になります。
このコマンドブロック必ず闘技場の中心に配置してください。

そこから、コンパレーターやレッドストーンパウダー、レッドストーントーチを使用して、各コマンドブロックに繋げます。
向かって左側の1つのコマンドブロックは、対戦を開始するためのもの。
向かって右側の2つのコマンドブロックは、対戦を終了するためのものです。

特定の範囲のプレイヤーを検知

特定の範囲のプレイヤーを検知

まずは、特定の範囲にいるプレイヤーの人数を検知するためには、中央にある紫色反復タイプのコマンドブロックで、[testfor]コマンドを使用します。
まずはコマンドブロックの設定をします。

設定項目設定値
ブロックの種類反復
条件無条件
レッドストーン常にアクティブ
最初のティックで実行オン
ティックの遅延0
反復タイプのコマンドブロック

次にコマンドを入力します。
このコマンドブロックから、半径60ブロック以内にいるプレイヤーの数をカウントします。

testfor @a[r=60]

プレイヤー以外にモブ等も検知できるので、興味のある方はこちらをどうぞ。

レッドストーンパウダーの数について

上記の画像を見ると分かる通り、上記のコマンドブロックからコンパレーターで信号を検知し、そこから2ブロック分だけレッドストーンパウダーを設置しています。
これは、[testfor]コマンドで検知したプレイヤー数に応じて信号の強さが変わるからです。
例えば、[testfor]コマンドで指定した範囲内にプレイヤーが1人いれば、1ブロック分の信号に。プレイヤーが2人いれば、2ブロック分の強さの信号になります。

管理者

つまり、プレイヤーの数だけ信号が強くなる仕組みですね!

ここで、レッドストーンパウダーを2ブロック分設置しているということは、プレイヤーが2人以上になった場合に、左右のコマンドブロックが動作すると言った仕組みです。

ゲームルールを変更してPVP開始

ゲームルールを変更してPVP開始

闘技場にプレイヤーが2人以上入って来たら対戦できるようにします。
左側にある衝撃タイプのコマンドブロックに、ゲームルールを変更するコマンドを入力します。

設定項目設定値
ブロックの種類衝撃
条件無条件
レッドストーンレッドストーンが必要
最初のティックで実行オフ
ティックの遅延0
衝撃タイプのコマンドブロック

以前ご紹介した[gamerule](ゲームルールコマンドの中で、待機場所でプレイヤー同士が攻撃できないように設定っしていましたが、待機場所から闘技場に移動したプレイヤー2人以上になったら、プレイヤー同士が攻撃できるように設定します。

gamerule pvp true

その他の[gamerule]の引数については、こちらをご覧ください。

勝敗とPVPの終了

最後の1人になったプレイヤーが勝者となり、ゲーム画面に勝ったプレイヤー名を表示して、元のスポーン位置へとテレポートさせます。

右側にあった2つのコマンドブロックが動作する条件は、間にレッドストーントーチを挟んでいたので、開始時の動作とは逆になります。
つまり、闘技場にいるプレイヤーの数が、2人以上から1人に減った場合に動作します。

勝利したプレイヤー名を表示

勝利したプレイヤー名を表示

衝撃タイプのコマンドブロックの設定は先程と同じですので割愛します。
[title]コマンドを使用して、プレイヤー全員のゲーム画面に勝利したプレイヤー名を表示します。

title @a title @p のかち!!

勝者をスポーン位置にテレポート

勝者をスポーン位置にテレポート

最後のチェーンタイプのコマンドブロックでは、[tp]コマンドを使用して、勝者をスポーン位置にテレポートさせます。

設定項目設定値
ブロックの種類チェーン
条件無条件
レッドストーン常にアクティブ
最初のティックで実行オフ
ティックの遅延0
チェーンタイプのコマンドブロック

[tp]コマンドも前回の記事で紹介していますので、詳しい説明は割愛させていただきます。

tp @p 0 110 0

これでマイクラガチャPVPが完成しました!
あとはみんなでマルチプレイを楽しんでください!

モバイルバージョンを終了