目が合うと死亡! 向いている視点の方向を判定する「rx/ry」を使った仕掛けの作り方[コマンド解説]【Minecraft】
ホラーな配布ワールド/サーバーにぴったりな仕掛けの作り方と、
プレイヤーの向いている方向を判定する新しい引数「ry」「rx」を解説します。
応用すれば、マリオ64のピーチ城の「天井を見たらワープ」なんてことも!
簡単なコマンドと回路だけで実現可能なんです。そう、1.8ならね。
※仕掛けの作り方は飛ばして、視点の向きを判定する「rx/ry」についての
詳しい解説を読みたい方はこちらへどうぞ。
今回作る仕掛け -目を合わせてはいけない人形、ピーチ城再現-
ホラゲーでよくある、「目を合わせたら何か起きる」という仕掛け。
マイクラで再現してみました。防具立てを人形に見立て、「死の人形」にしたわけです。
▲暗い部屋に置かれた謎の人形に目を合わせると、「殺す…!」とダメージを受けます。
目を合わせている間はダメージを受け続けます。
ホラーな配布ワールドやサーバーにピッタリでしょ?
それともう一つ、楽しい仕掛けを作ってみました。
皆さん、ニンテンドー64のマリオを覚えていますか? 滑り台で落ちまくるアレです。
あのマリオ64のピーチ城、広間で天井を見上げるとワープしますよね。
ほんで羽マリオでしたっけ、に変身して空をビューンって飛べる。アレです。
それもマイクラで再現しちゃいました。建物は適当ですが。
▲天井をずっと見ていると画面が歪み、天空へワープします。
RPG風ワールドの、クエスト出発ゲートなどに応用できますね。
目を合わせるとダメージを受ける人形の作り方
それでは、人形に目を合わせるとダメージを受ける、ホラーな仕掛けの作り方を解説します。
まずは、目を合わせるための人形と部屋を用意しましょう。
こんな風に、プレイヤーが歩ける場所を柵などで制限しておいて下さい。
今回は例として、目を合わせさせる物を南に置いて、北には柵(壁)を設置しています。
青/水色の羊毛は記事で解説するための目印です。ここが効果の範囲になります。
(人形を置く方角などはどれでも構いません! 各方角別のコマンドを後述します)
それでは回路を組み立てましょう。
右側は、2つのコマンドブロックで最速クロック回路を作ります。
「A」のコマンドブロックに入力するコマンド (最速クロック)
/fill ~ ~-1 ~ ~ ~-1 ~ redstone_block
「B」のコマンドブロックに入力するコマンド (〃)
/fill ~ ~1 ~ ~ ~1 ~ stone
この上下のコマンドブロックの間にレッドストーンブロックをはめ込むことで、クロックが起動します。
以後、左右の「1」「2」は常時実行され続けます。
常時クロックで実行され続ける、「1」のコマンドブロックの中身です。↓
「1」のコマンドブロックに入力するコマンド (常時実行)
/effect @a[青い羊毛の上の座標,<人形までの距離と方角>,rxm=-3,rx=10] 20 1 1 true
「青い羊毛の上の座標」ですが、▲のように上に立って、「Block:」の数値を調べて下さい。
図のような座標の場合は、「251,56,-504」と書きます。
「<人形までの距離と方角>」は、方向と距離によって以下のように内容が変わります。
人形のある方角 | 人形までの距離 | <人形までの距離と方角>の内容 |
---|---|---|
プレイヤーの北 | aブロック | dz=a,rym=175,ry=-175 (基準点を動かす!) |
〃の南 | aブロック | dz=a,rym=-5,ry=5 |
〃の東 | aブロック | dx=a,rym=-95,ry=85 |
〃の西 | aブロック | dx=a,rym=85,ry=95 |
「dx=」または「dz=」は、基準となる座標からターゲット範囲を広げるために記述します。例えば東に範囲を広げたい場合は「dx=距離の数字」と書き、南に範囲を広げたい場合は「dz=距離の数字」と書きます。北と西の範囲は指定することができないので、基準点を動かして下さい。
続いて記述する「rym」「ry」の値は、プレイヤーの向いている方角の数値です。
その後の「rxm=-3,rx=10」は「真横を向いているプレイヤー」の事を指しています。
これらの数値と方角の関係、求め方については後で詳しく解説します。
このコマンドはeffectコマンドなので、後に続けてステータス効果を書きます。
「effect @p 20 1 1 true」というのは、「ウィザー効果を1秒与える」という意味です。
これが、南の人形の方を向いている間はずっとダメージを受ける仕掛けなのです。
続いて、「2」「3」「4」のコマンドブロックの内容を解説します。
「2」のコマンドブロックに入力するコマンド (常時実行)
/testfor @a[青い羊毛の上の座標x,y,z,<人形までの距離と方角>,rxm=-3,rx=10]
プレイヤーが人形の方を向いているかを、testforコマンドで判定します。
プレイヤーが人形と目を合わせた瞬間にコンパレーターがONになります。
「3」のコマンドブロックに入力するコマンド (プレイヤーが人形の方を向くと発動)
/title @a[青い羊毛の上の座標x,y,z,<人形までの距離>] title {“text”:“Ill kill you..."</i></span>,"color":"red"}</b></p><p style="margin-bottom: 17px!important;">コンパレーターがONになったら実行されます。<b>実は「4」より後に実行されます。</b><br /><b>羊毛の範囲のプレイヤー</b>に<b><i><span style="color: #cc0000;">「I
ll kill you…」のメッセージを表示します。
「<人形までの距離>」には、先ほどの「<人形までの距離と方角>」の「dx(dz)=a(-a)」部分のみを書きます。
「4」のコマンドブロックに入力するコマンド (〃)
/title @a[青い羊毛の上の座標,<人形までの距離>] times 5 20 5
「3」より先に実行されます。メッセージ(title)の表示時間を設定します。
「5 20 5」は「フェードイン | 表示 | フェードアウト」の時間(tick)の数値です。
最後に、「5」のコマンドブロックの中身を入力すれば完成です。
「4」のコマンドブロックにレッドストーントーチを刺しておきます。
こうすることで、プレイヤーが人形から目を離したら「5」が発動するようになります。
「5」のコマンドブロックに入力するコマンド (人形から目を離すと実行)
/effect @a[青い羊毛の上の座標,1,dz=人形までの距離] wither 0
人形から目を離した時に、ウィザー効果を解除します。
(またまた七色大先生にご指摘頂き、修正しました。毎度毎度ありがとうございます><)
どれだけ人形の近くでも、目を合わせればダメージを受けます。
意外と簡単な回路とコマンドで完成しました。
マリオ64のピーチ城のように、上を向くとワープする仕掛けの作り方
それでは、2つ目の「天井をしばらく見つめるとワープする」仕掛けの作り方を解説します。
こちらのほうが、1つ目の仕掛けより断然簡単に作れるんです。
まずはこんな風なワープ用の部屋を用意して下さい。
壁や天井は仕掛けの動作と一切関係ないので、ご自由にどうぞ。
こちらが回路です。「1」と「2」のコマンドブロックの間のコンパレーターを忘れずに。
リピーターは全て右クリック3回で、導体ブロック2個を経由して「3」へ伸びています。
「最速クロック」の部分は、先ほど解説した人形の回路と同じものです。
それでは、各コマンドブロックの内容を解説していきます。
「1」のコマンドブロックに入力するコマンド (常時実行)
/testfor @a[部屋の中心の座標z,y,z,効果が及ぶ半径,rxm=-90,rx=-70]
「部屋の中心の座標」には、図のような部屋のど真ん中に立った時の座標を「x,y,z」で書きます。
「効果が及ぶ半径」は、そのまんま部屋の中心からの半径を入力します。
(半径ではなく、「dx」「dz」を使った範囲指定でも問題ありません)
「rxm=-90,rx=-70」というのは、「上を向いたプレイヤー」という意味です。
ここで新登場した「rxm/rx」については後で詳しく解説します。
「2」のコマンドブロックに入力するコマンド (上を向いたら実行)
/effect @a[部屋の中心の座標z,y,z,効果が及ぶ半径] 9 6 1 true
「9 6 1 true」というのは「吐き気の効果を6秒間レベル1でパーティクルを隠して付与」という意味です。
上を向いたらすぐこのコマンドが発動し、画面が歪みます。
テレポートのタイミングを変える際は、ここの秒数を程よく変えて下さい。
「3」のコマンドブロックに入力するコマンド (上を向いて約2秒後に実行)
/tp @a[部屋の中心の座標z,y,z,効果が及ぶ半径] <テレポート先の座標>
リピーターでかなり遅延をかけて実行します。程よく時間を掛けてからテレポ。
これにてこの回路は完成です。簡単でしょ。
「1」のコマンドブロックの角度の部分の数値を弄れば、「下を向いてワープ」なんて事も。
どんな数値を入れればどの方向が判定できるのか、これから解説します。
プレイヤーの視点の向きを判定する数値一覧 – 全方角を網羅!
ここまで解説してきた2つの仕掛けで、見慣れない数値が出てきましたね。
「@a[(中略)… rym=●●,ry=●●,rxm=●●,rx=●●]」というセレクタの書き方。
この「ry」や「rx」の数値は、プレイヤーの向いている視点の方向を表しています。
どんな数値を設定すれば、北や南、上や下など自由自在な方向を判定できるのか。
図と表で、プレイヤーの視点の方向と数値についてまとめました。
新引数「ry」の書き方 – 横方向の視点の向き、つまり方角を判定
まず解説するのは、Minecraft 1.8で追加された新引数「ry」についてです。
この「ry」では、プレイヤー/エンティティの横方向の向きを判定できます。
つまりは、「東西南北どの方角を向いているか」を判定できるのです。
▲「ry」の使い方を図にまとめてみました。数値と方角は左の円のような関係になっています。
南が「0」で、北が「180」、東が「-90」で、西が「90」です。
これらの数値を、「rym=最小値」と「ry=最大値」を2つセットで記述して判定します。
「ry」の数値は、デバッグモードの「Facing」欄で確認できます。
まずは判定したい方向の左端の値を調べて「rym」にし、右端の値を「ry」にしましょう。
数値の大きい/小さいではなく、左がrym、右がryなのです。細かいことは気にしない。
「細かい説明はいいから、この方角はどんな数字なんだよ!」というあなたのために逆引き数値リストを用意しました。視点の向きを8方位に分けて、それぞれを判定する数値を書いています。▼
判定したい方角 | セレクタに書く数値 |
---|---|
北 | rym=175,ry=-175 |
北東 | rym=-140,ry=-130 |
東 | rym=-95,ry=-85 |
南東 | rym=-50,ry=-40 |
南 | rym=-5,ry=5 |
南西 | rym=40,ry=50 |
西 | rym=85,ry=95 |
北西 | rym=130,ry=140 |
人形の仕掛けのように、狭い幅で指定するのをお勧めします。
この表では、幅を10にしているため、結構厳しい判定になります。
新引数「rx」の書き方 – 縦方向の視点の向き、つまり上下の向きを判定
次に解説するのは、同じく1.8で追加された新引数「rx」についてです。
「rx」では、プレイヤー/エンティティの縦方向の向きを判定できます。
つまりは、「プレイヤーが上下どこを向いているか」を判定できるのです。
▲「rx」の使い方を図にまとめてみました。数値と向きは左の円のような関係になっています。
真下が「90」で、斜め下は「45」、真横が「0」で、斜め上は「-45」、真上は「0」です。
これらの数値を、「rxm=最小値」と「rx=最大値」を2つセットで記述して判定します。
「rx」の数値は、デバッグモードの「Facing」欄で確認できます。
まずは判定したい向きの上端の値を調べて「rxm」にし、下の値を「rx」にしましょう。
数値の大きい/小さいではなく、上がrxm、下がrxなのです。細かいことは気にしない。
判定したい向き | セレクタに書く数値 |
---|---|
真上 | rxm=0,rx=10 |
斜め上 | rxm=35,rx=55 |
真横 | rxm=10,rx=10 |
斜め下 | rxm=35,rx=55 |
真下 | rxm=80,rx=90 |
横方向の向きと縦方向の向きの数値を組み合わせて書くことで、自由自在な向きの判定が可能です。
この「rx/ry」を使って、楽しい仕掛けが制作されるのを心待ちにしています。
いかがでしたか。色々な場面で使って頂ければ幸いです。
「これはどうするの?」などコメント待ってます。
最近書いたコマンド解説記事
3件のコメント
-
.*2016年8月22日図:新引数ryの使い方! が矛盾してますよー
-
匿名2016年8月22日どこが矛盾しているのか教えて頂ければ助かります...
-
hijiki2016年10月5日(↓の矛盾点について...) コメント失礼いたします。 真上がrxm=-90,rx=-80 斜め上がrxm=-55,rx=-35 真横がrxm=-10,rx=10 ...となることを指摘したかったのではないでしょうか?