NAPOAN.COM by マイクラ思考
by
/ UPDATE :

目が合うと死亡! 向いている視点の方向を判定する「rx/ry」を使った仕掛けの作り方[コマンド解説]


「人形と目を合わせるとダメージを受けて殺される」など、
ホラーな配布ワールド/サーバーにぴったりな仕掛けの作り方と、
プレイヤーの向いている方向を判定する新しい引数「ry」「rx」を解説します。
応用すれば、マリオ64のピーチ城の「天井を見たらワープ」なんてことも!
簡単なコマンドと回路だけで実現可能なんです。そう、1.8ならね。

 

※仕掛けの作り方は飛ばして、視点の向きを判定する「rx/ry」についての
詳しい解説を読みたい方
こちらへどうぞ。

 

今回作る仕掛け -目を合わせてはいけない人形、ピーチ城再現-

ホラゲーでよくある、「目を合わせたら何か起きる」という仕掛け。
マイクラで再現してみました。防具立てを人形に見立て、「死の人形」にしたわけです。

人形と目を合わせると...

暗い部屋に置かれた謎の人形に目を合わせると「殺す...!」とダメージを受けます。
目を合わせている間はダメージを受け続けます。
ホラーな配布ワールドやサーバーにピッタリ
でしょ?


それともう一つ、楽しい仕掛けを作ってみました。
皆さん、ニンテンドー64のマリオを覚えていますか? 滑り台で落ちまくるアレです。
あのマリオ64のピーチ城、広間で天井を見上げるとワープしますよね。
ほんで羽マリオでしたっけ、に変身して空をビューンって飛べる。アレです。

それもマイクラで再現しちゃいました。建物は適当ですが。
Cugv056f

天井をずっと見ていると画面が歪み、天空へワープします。
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;">「Ill kill you...」のメッセージを表示します。
「<人形までの距離>」には、先ほどの「<人形までの距離と方角>」「dx(dz)=a(-a)」部分のみを書きます。

「4」のコマンドブロックに入力するコマンド (〃)
/title @a[青い羊毛の上の座標,<人形までの距離>] times 5 20 5

「3」より先に実行されます。メッセージ(title)の表示時間を設定します。
「5 20 5」は「フェードイン | 表示 | フェードアウト」の時間(tick)の数値です。


最後に、「5」のコマンドブロックの中身を入力すれば完成です。

「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」の使い方

▲「ry」の使い方を図にまとめてみました。数値と方角は左の円のような関係になっています。
南が「0」で、北が「180」東が「-90」で、西が「90」です。
これらの数値を、「rym=最小値」「ry=最大値」を2つセットで記述して判定します。


「ry」の表示場所

「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」の使い方
▲「rx」の使い方を図にまとめてみました。数値と向きは左の円のような関係になっています。
真下が「90」で、斜め下は「45」真横が「0」で、斜め上は「-45」、真上は「0」です。
これらの数値を、「rxm=最小値」「rx=最大値」を2つセットで記述して判定します。


「rx」の数値の場所

「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」を使って、楽しい仕掛けが制作されるのを心待ちにしています。


最後までお読み頂き、ありがとうございました
いかがでしたか。色々な場面で使って頂ければ幸いです。
「これはどうするの?」などコメント待ってます。

最近書いたコマンド解説記事

 

Tweet

コメント

記事の内容が最新のものと異なる場合があります。ご了承ください。

“目が合うと死亡! 向いている視点の方向を判定する「rx/ry」を使った仕掛けの作り方[コマンド解説]” への3件のフィードバック

  1. .* より:

    図:新引数ryの使い方!
    が矛盾してますよー

  2. 匿名 より:

    どこが矛盾しているのか教えて頂ければ助かります…

  3. hijiki より:

    (↓の矛盾点について…)
    コメント失礼いたします。
    真上がrxm=-90,rx=-80
    斜め上がrxm=-55,rx=-35
    真横がrxm=-10,rx=10
    …となることを指摘したかったのではないでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です