巷で話題のSplatoonに登場するサブウェポン「トラップ」をマイクラで作る解説part2です。
今回は、前回スコアボードとチームの用意などをした続きです。いよいよダメージを与えられるようにしていきます。各コマンドの仕組みの解説を分かりやすい図付きで解説するので、これからPvPマップを作りたい方は、ブキ開発入門として是非最後までお読み下さい。また、scoreboardコマンドを使った仕掛けの作り方がよく分からない! という方もどうぞ最後までお付き合い下さい。
[2016年3月23日] バージョン1.9用のコマンドも追記しました。
▲細い通路に設置した「赤チームのトラップ」が、青チームのプレイヤーを瞬殺! 殴り合いが苦手なプレイヤーでもチームに貢献できる、新感覚のPvPを提供するバトルアイテム「トラップ」はいかが? なんとこの「トラップ」は、とある1つのコマンドを実行するだけで手に入ります。詳しい入手方法や使い方については、以下の記事で解説していますので、この「コマンド解説編」の前にそちらをお読み下さい。 私が作ったこの「トラップ」は、敵チームのプレイヤーが触れると起動し、逃げたとしても「リリリ」と音を発してすぐ爆発します。要するに、敵が来たらカウントダウンを開始して、特定のタイミングでダメージを与えるのです。ただ単に「近くのプレイヤーにダメージを与える」というコマンドではダメです。2つのスコアを上手く使って、自分の好きなタイミングで爆発できるよう設定していきます。(つまりは敵に逃げる余裕を与えるということです) さあ、コマンドを入力していきましょう。先ほどの「1」~「6」のコマンドブロックの下側の5つを編集します。 ついにダメージを与えるフェーズに突入します。先ほどトラップに触れてしまったプレイヤーの「TrapTimer」スコアが、すぐに「11」まで増えます。その時トラップの近くにいれば、effectコマンドを受けてしまいダメージを食らいます。でもこの一瞬の間に逃げることができればノーダメージです。「TrapTimer」スコアが11まで増えていることを条件にエフェクトコマンドを発動するで、約0.5秒の遅延を作っているのです。 さあどんどんコマンドを入力していきますよ。お次は「10」「11」のコマンドの右隣、スクショでは水色の羊毛が置いてある場所の、「12」~「16」のコマンドを入力します。コマンド解説でこんな番号まで進んだのは初めて。 ▲こちらが今回のscoreboardコマンドの活用法です。 scoreboardコマンドのaddモードと、スコアセレクタを上手く使えば、流れるように次々と好きな処理ができるようになります。これは武器の仕組みに限らず色々な場面で活用できるので、是非覚えておきましょう! ▲こちらがトラップで使っている警告音です。古いブラウザの場合再生できないかもしれません。ごめんなさい。playsoundコマンドで再生するわけですが、これはマイクラのどの効果音を使った音か分かりますか? 答えは金床が地面に落ちる時の音です。ピッチを上げるとリリリン! と警告音っぽくなるんです。 お次は4つのコマンドブロックの中身を入力していきます。part1で解説した「5」「6」の右隣、スクショではピンクの羊毛が置いてある場所のコマンドブロックです。 数あるマイクラの効果音の中から、警告音にピッタリなSEを探し当てるのは大変です。そんな時はこれ、のと氏制作の「Minecraft Assets Listener」です。マイクラのBGM/SEを検索して、音量とピッチを変更して何度でも聞けます。使い方は以前に以下の記事にて紹介していますので、気になったら是非チェックしてみてください。 本家「Splatoon」のトラップは、どうやら設置後しばらくすると勝手に爆発してしまうらしいですね。ということで、この「トラップ」も設置後11秒経つと自然に爆発するようにしています。同時にダメージも与えます。 さあ、最後のコマンド入力です。説明の便宜上、番号の順番がややこしいですがコマブロの位置は動作に関係ないので気にしないでください。それではあと6つのコマンドでトラップ完成です、頑張りましょう! 先ほど「『TrapAge』スコアが220になったら」などと解説しましたが、どうしてそんな大きな数字を条件にするのかといいますと、この図に書いてあるとおりです。最速クロックでスコアを増やし続けると、スコアが「20」になった時が1秒経過、「220」になったら11秒経過しているのです。 お疲れ様でした!! ついに全てのコマンドの準備が完了したので、以下のコマンドで赤チームもしくは青チームに参加して、各チーム用の「トラップ」を受け取れば使えます。 ...テクスチャの差し替えをしなきゃ! さあ、最後にトラップのテクスチャを差し替える作業をします。これまでコマンド解説記事では何回かリソースパック同梱の方法を解説していますので、慣れた方も多いでしょう。 デスクトップなど適当な場所に「assets」というフォルダを作り、その中に「minecraft」>「textures」>「items」という構造でフォルダを作っていきます。最後に、以下の名前でテクスチャ画像を「items」に入れましょう。 ※上記画像はぼやけて見えますが、保存すればくっきり見えるのでご安心下さい。 3つの画像を入れたら、「assets」フォルダを右クリック→送る→「圧縮」しましょう。すると「assets.zip」という名前でzipファイルが生成されると思います。このままじゃ使えませんね。 生成されたzipを、回路を作ったセーブデータのフォルダ内に移動させましょう。そして「resources.zip」に名前を変えます。スペルミスに注意! こうすることで、このワールドとテクスチャをセットで使えます。「トラップ」を今すぐ手に入れて遊びたい方は、紹介編をお読み下さい
https://napoan.com/wp/splatoon-trap-show/コマンドと仕組みを解説 part2
トラップに接触してしばらくするとダメージを与える仕組みの解説
「7」に入力するコマンド /execute @e[type=armor_stand,name=RedTrap] ~ ~ ~ scoreboard players set @a[r=1,team=Blue] DamageFlag 1
「RedTrap」つまり赤チームのトラップの半径1ブロック以内に入ってしまった青チームのプレイヤーの、「DamageFlag」というスコアを1にセットします。「こいつは触れた」というフラグを立てるんです。「8」に入力するコマンド /execute @e[type=armor_stand,name=BlueTrap] ~ ~ ~ scoreboard players set @a[r=1,team=Red] DamageFlag 1
これは「7」のコマブロの逆で、青チームのトラップに触れてしまった赤チームのプレイヤーの「DamageFlag」スコアを1にセットします。とにかく敵のトラップに触れたらフラグが立つんです。「9」に入力するコマンド /scoreboard players add @a[scoreDamageFlagmin=1] TrapTimer 1
フラグ「DamageFlag」が1になった人の「TrapTimer」スコアを1づつadd、増やしていきます。「10」に入力するコマンド /execute @e[type=armor_stand,name=RedTrap] ~ ~ ~ effect @a[scoreTrapTimer_min=11,r=2,team=Blue] 7 1 1
さあついにダメージを与える時がやって来ました。「赤チームのトラップ」の近くに、先ほどのフラグのせいで「TrapTimer」がどんどん増えて11になってしまった人がいたらダメージ効果を与えます。この時点で半径2ブロックより遠くに逃げていたらダメージの範囲外になります。「TrapTimer」スコアは1秒で20増えますから、およそ0.5秒でダメージを受けるのです。 この時「7 1 1」と書いていますが、ここを「7 1 2」にすれば即死するレベルのダメージを与えられます!「11」に入力するコマンド /execute @e[type=armor_stand,name=BlueTrap] ~ ~ ~ effect @a[scoreTrapTimer_min=11,r=2,team=Red] 7 1 1
スこちらは青チームのトラップが赤チームのプレイヤーにダメージを与えるコマンドです。赤チームの人も同様、トラップにフラグを付けられ「TrapTimer」スコアが増え続けていますから、逃げなければいつかはダメージを受けてしまうわけです。フラグスコアと増えるスコアの二段構えが重要なのです。
図で解説いたします。まず「7」のコマンドブロックが、「赤トラップの近くの敵プレイヤーにフラグを立てろ!」と命令します。すると赤トラップに触れてしまった青チームのプレイヤーの(もしくは青トラップに触れた赤チームのプレイヤーの)「DamageFlag」スコアが1になります。そしてフラグを立てられたプレイヤーの「TrapTimer」スコアがどんどん増え続け...触れたトラップから煙を出し、トラップを消去する
「12」に入力するコマンド /execute @a[team=Blue] ~ ~ ~ scoreboard players set @e[type=armor_stand,name=RedTrap,r=1] TrapFlag 1
青チームのプレイヤーが、赤チームのトラップに触れたら、触れた赤チームのトラップに「TrapFlag」スコアを与えます。「13」に入力するコマンド /execute @a[team=Red] ~ ~ ~ scoreboard players set @e[type=armor_stand,name=BlueTrap,r=1] TrapFlag 1
これは「12」のコマブロの逆で、赤チームのプレイヤーが青チームのトラップに触れたら、青チームのトラップに「TrapFlag」スコアを与えます。とにかく触れたらトラップ側にもフラグが立つんです。「14」に入力するコマンド /execute @e[type=armor_stand,scoreTrapFlagmin=1] ~ ~ ~ particle explode ~ ~ ~ 0.2 0.2 0.2 1 10
「TrapFlag」が1になった、つまり敵チームが触れてしまったトラップの周囲に爆発のパーティクルを発生させます。particleコマンドは/particle パーティクル名 x y z 大きさx y z スピード (長さ)という構文です。「15」に入力するコマンド /scoreboard players add @e[type=armor_stand,scoreTrapFlagmin=1] TrapRemove 1
こちらは、触れてしまったトラップを一定時間後に消す処理のためのコマンドです。敵が触れたトラップは「TrapFlag」スコアが1になっていますから、そのトラップの「TrapRemove」を増やし続けます。「16」に入力するコマンド /kill @e[type=armor_stand,scoreTrapRemovemin=12]
敵プレイヤーが一回でも触れると「TrapRemove」スコアが増え続けるようになり、ついに12まで増えたらトラップが殺される(=消される)のです。「フラグを立てて、スコアを増やし続ける」が肝です。リリリと警告音を鳴らしスコアをリセットする
「17」に入力するコマンド /execute @e[type=armor_stand,name=RedTrap,score_TrapRemove_min=1] ~ ~ ~ playsound random.anvil_land @a[team=Blue,r=1] ~ ~ ~ 0.6 1.5
バージョン1.9の場合:/execute @e[type=armor_stand,name=RedTrap,score_TrapRemove_min=1] ~ ~ ~ playsound block.anvil.place master @a[team=Blue,r=1] ~ ~ ~ 0.6 1.5
これちょっと自信の無いコマンドなんですが、とりあえず赤チームのトラップから半径1ブロックの青チームのプレイヤーに先ほどの警告音を聞かせています。音量は0.6、ピッチは1.5でお送りいたします。「18」に入力するコマンド /execute @e[type=armor_stand,name=BlueTrap,score_TrapRemove_min=1] ~ ~ ~ playsound random.anvil_land @a[team=Red,r=1] ~ ~ ~ 0.6 1.5
バージョン1.9の場合:/execute @e[type=armor_stand,name=BlueTrap,score_TrapRemove_min=1] ~ ~ ~ playsound block.anvil.place master @a[team=Red,r=1] ~ ~ ~ 0.6 1.5
「17」の逆で、青チームのトラップから赤チームのプレイヤーへ警告音を再生しています。「19」に入力するコマンド /scoreboard players reset @a[scoreTrapTimermin=12] DamageFlag
scoreboardコマンドのリセット機能を使います。「9」のコマンドブロックで登場した「TrapTimer」スコアは、トラップに触れてしまった人にどんどん追加されるスコアですが、これが「12」になった瞬間に「DamageFlag」スコアをリセットしています。(普通にもう要らないので)用済みのスコアはどんどんリセットしましょう。「20」に入力するコマンド /scoreboard players reset @a[scoreTrapTimermin=12] TrapTimer
「TrapTimer」スコアが12まで増えた人は、その人自身の「TrapTimer」スコアもリセットします。
https://napoan.com/wp/44137681/一定時間が経過するとトラップを爆発させる
「21」に入力するコマンド /scoreboard players add @e[type=armor_stand,name=RedTrap] TrapAge 1
これ「RedTrap」つまり赤チームのトラップに対して、常に「TrapAge」という新しいスコアを増やし続けます。このスコアは「トラップが設置されてどれくらい経過したか」を計るためのダミースコアです。「22」に入力するコマンド /scoreboard players add @e[type=armor_stand,name=BlueTrap] TrapAge 1
上と同様、今度は青チームのトラップの「TrapAge」を増やし続けます。「23」に入力するコマンド <
td>/execute @e[type=armor_stand,scoreTrapAge_min=210] ~ ~ ~ particle largeexplode ~ ~ ~ 0.2 0.2 0.2 1 1
ついにparticleコマンドの登場です。スコア「TrapAge」は増え続けていますが、210になる(=10.5秒経過する)と「largeexplode」という名前のパーティクルを0.2の大きさで通常の速度と数(1 1)で発生させます。「24」に入力するコマンド /kill @e[type=armor_stand,scoreTrapAge_min=220]
トラップが誰にも触れられなかった場合、いつかは消さないといけません。増え続ける「TrapAge」が220になった(=11秒経過した)ら、どちらのチームのトラップでも消されてしまうのです。 「25」に入力するコマンド /execute @e[type=armor_stand,name=RedTrap,scoreTrapAge_min=215,scoreTrapAge=215] ~ ~ ~ effect @a[r=2,team=Blue] 7 1 1
トラップが消える直前、実は周囲の敵プレイヤーにダメージを与えているんです。先ほどの「TrapAge」スコアが215(=10.75秒経過)になったら、このコマンドですと赤チームのトラップが青チームのプレイヤーにダメージを与えます。「26」に入力するコマンド /execute @e[type=armor_stand,name=BlueTrap,scoreTrapAge_min=215,scoreTrapAge=215] ~ ~ ~ effect @a[r=2,team=Red] 7 1 1
トラップが消える直前に今度は青チームのトラップが赤チームのプレイヤーにダメージを与えます。
/scoreboard teams join Red プレイヤー名(セレクタも可)
青チームに参加させる場合:
/scoreboard teams join Blue プレイヤー名(セレクタも可)
※前回紹介したコマンドでチームを作成していないと参加できません。
/give @p minecraft:slime_ball 16 0 {display:{Name:青チームのトラップ,Lore:["投げて設置してね"]}}トラップアイテムのテクスチャを差し替えよう
アイテムの種類 画像の名前 適用されるアイテム 私が作ったテクスチャ画像 赤チームのトラップ paper.png 紙 青チームのトラップ slimeball.png スライムボール

いかがでしたか。PvPがより楽しくなれば幸いです。
「これはどうするの?」などコメント待ってます。
最近書いたコマンド解説記事
コメントを残す