絶対座標と相対座標? 【マイクラコラムVol.9】

こんにちは、ロボテックです。
マインクラフトの世界の場所は「0,100,10」などの3つの数字で表現できる事を知っている人も多いと思います。
これは「座標(ざひょう)」というもので、マイクラだけじゃなくゲームでは必須の重要な要素です。
今回はこの座標について簡単に学んでいきましょう。
🎮️XYZ、3つの軸の、上下はどれ?
まずマインクラフトのような3D世界では「方向」が3つあります。
X方向、Y方向、Z方向です。
これは「X方向が横でY方向が上下で~」と文字で説明するよりも、図を見て頂いた方がスムーズだと思います。

こんな感じですね。
マイクラではY方向が上下で、上へ行くほど数字が大きくなります。
では、なぜYが上下方向なのでしょうか?

3Dの前に、まず2Dゲームを考えてみましょう。
Scratchで作るゲームなどの2Dゲームは方向が上下・左右2方向しかありません。
ゲームを表示する画面も同じくX方向とY方向しかありません。
また、算数や数学で勉強する「(二次元)座標」でもXを横・Yを縦として考える事が一般的です。
では2Dから1方向増えた3Dはどう考えればいいでしょうか?
真横から見れば、上の画像と同じです。
その上で「奥行き」が増えたと考える事ができます。

このように「画面のXY方向」から「奥行きZが増えた」と考える場合は、上下方向はYとなるのです。
注意点としては、マイクラは上に行くほどYの数値が大きくなりますが、これは3Dで絶対のルールではありません。
画面の左上を基準として、下に行くほどYの数値が大きくなるというパターンもあります。
また、機械や設計の分野ではそもそもの考え方が違って、Zが上下というケースが多いです。
このあたりは全部説明すると難しくなってしまうので、「上下方向をどう扱うかはゲームやアプリなどによってルールが違う」とだけ覚えておきましょう。
📍座標には2種類ある。~絶対座標編
マイクラの話に戻りましょう。
マイクラをはじめ3Dゲームにおける「場所」は、先程も出たX、Y、Zの3つの数字で表現されます。

マイクラの設定で「座標を表示」をオンにした時、左上に表示されるものが座標です。
上の画像では「位置:-591,80,890」と書かれていますが、3つの数字の左からX座標、Y座標、Z座標を表しています。
つまりこの画面では「X-591、Y80、Z890の位置にいる」という事になります。
この座標は「絶対座標」というもので、全く同じ数値の場所は一箇所しかありません。
現実での住所や、難しく言うと「緯度・経度」のようなものです。
もちろん数字で表現されている以上、全てがゼロである「X0、Y0、Z0」も存在しますが、特別な場所という訳ではなく、あくまで世界の中心点(原点)というだけです。
一般的に「座標」と言うとこの絶対座標を指す事が多いですが、座標にはもう一種類「相対座標」という重要なものが存在します。
🧍座標には2種類ある。~相対座標編
「相対座標」もXYZの3方向で表現されるという点は同じです。
ですが、基準となる場所「X0、Y0、Z0」のポイントが異なります。
絶対座標は、マイクラのワールド内で設定された原点(X0、Y0、Z0)からどれだけ離れているかを表した値になります。
先ほどの「X-591、Y80、Z890」であれば、「中心からX方向に-591、Y方向に80、Z方向に890離れている」という事です。
相対座標は、原点がどこか決まっていません。
何を原点にするかは自由ですが、マイクラ上では「プレイヤー自身」を原点とする事が多いので今回は「プレイヤーを原点と見た相対座標」として話を進めます。
プレイヤーを原点とした相対座標はつまり、「プレイヤーからどれだけ離れているか」を現す値となります。
つまり原点(X0、Y0、Z0)はプレイヤーが立っている場所です。
そこから、X方向に1マスずれた場所が「X1、Y0、Z0」となります。
マイクラのコマンドでは「~0 ~0 ~0」のように、数字の前にニョロとした記号(チルダ)を入れて表現しますね。
ここまでだと絶対座標とあまり変わらないように思えますが、相対座標の特徴のひとつは「原点が移動する可能性がある」という事です。
プレイヤーを原点としている以上、プレイヤーが移動すれば「X0、Y0、Z0がワールドのどこにあるか」は変わります。
プレイヤーが空中に行けば「X0、Y0、Z0」は空にありますし、水中に潜れば「X0、Y0、Z0」は水の中にあります。
サンプル画像で説明しましょう。

まず、絶対座標(ワールド座標)で「X1、Y0、Z0」にブロックを配置します。
これはワールド内で一箇所しかないポイントなので、何度実行してもブロックは1個しか置かれません。

次に、相対座標で「X1、Y0、Z0」にブロックを配置します。

これはつまり「プレイヤーの1歩前にブロックを置け」という命令になります。
ですので、プレイヤーが動いて実行すれば、その度に別の場所にブロックが現れます。

この通りXYZの数値が全く同じでも、絶対座標か相対座標かによって意味は全然変わってしまいます。
🔍️まとめ
たとえば「村がある場所までテレポートしたい」という時には、「-591 80 890」のようにワールドで1つだけの住所である絶対座標を使います。
ただ、「自分の目の前にダイヤブロックを出したい」といった時は、「~1 ~0 ~0」のように相対座標で指定する方がカンタンです。
どちらもXYZでの位置の表現方法ですが、内容も使い方も違うという点をぜひ覚えておきましょう。
🖥️ ロボテックについて
\ お近くの教室で無料体験受付中! /
ロボテックは、宇都宮市(下栗・ゆいの杜)を中心に、栃木市、壬生町、館林市(群馬)で子ども向けのロボット・プログラミングスクールを運営しています。
LEGOや教育版マインクラフト、Scratch、Robloxなどなど多彩な教材で楽しくプログラミングを学んで頂けます。
無料体験も定期開催しておりますので、ぜひお気軽にご相談ください!
【詳しくはこちら】