【Minecraftプログラミング】は、「Microsoft MakeCode for Minecraft」を利用してマインクラフトの世界でプログラミングを学ぶ連載です。毎週月~金曜日更新。
座標を変数で置き換える
座標を変数で置き換えるには
プレイヤーの座標を変数にする
ここからのレッスンで作るプログラムは、まずプレイヤーが闘技場を作り、次にプレイヤーの座標に同じワールドでマルチプレイ中のほかのユーザーをテレポートさせます。このときプレイヤーの位置がずれてしまうと、プログラムが正常に動作しません。
そこで、プレイヤーの座標を変数で置き換えて、プレイヤーが移動してもプログラムが正確に実行されるようにします。
1新しい変数を作る
HINT ワールド座標の値を固定する
[ブロックを並べる]ブロックなどで指定する座標は、プレイヤーの位置を中心にした相対座標が使われます。このプログラムではプレイヤーが闘技場を作る際の座標と、闘技場にほかのユーザーをテレポートさせる際の座標、ゲームオーバーの際に闘技場の下にテレポートする際の座標がすべて同じ必要があります。このため、闘技場を作る際の座標を変数に置き換え、プレイヤーが移動しても座標の値が保たれるようにします。
2ワールド座標のブロックを接続する
HINT ワールド座標とは
ワールド座標とは、マインクラフトのワールド内での絶対座標のことです。ブロックやプレイヤーがワールド内のどの位置にあるかを表しており、ワールド内のある1点のみを指します。相対座標とワールド座標については、レッスン22のテクニックを参照してください。
間違った場合は?
手順2で選択する[[position]のワールド座標]ブロックは、[[position]から[x(東西)]の値を取得する]ブロックと似ているので間違えないように注意が必要です。間違ってしまったときはブロックを削除して、正しいブロックを選択し直しましょう。
HINT 変数[position]は自動で生成される
手順6で[position]のワールド座標]ブロックをほかのブロックに接続すると、[変数]カテゴリーに変数[position]用のブロックが自動的に生成されます。今回は使用しませんが、変数[position]を使うとプレイヤーやブロックの座標をまとめて取得できます。
3プレイヤーの座標を中心点にする
HINT 変数に不備があるとエラー表示が出る
間違った場合は?
[プレイヤー]カテゴリーの[プレイヤーの位置]ブロックと[プレイヤーの名前]ブロックは名前と見ためが非常に似ているので注意しましょう。それぞれ役割が異なるので、違うブロックを配置してしまったときは正しいブロックを配置し直しましょう。
4座標の数値を変数にする
HINT 座標をxyzの要素に分解する
手順4ではプレイヤーのワールド座標をx、y、zそれぞれの変数に置き換えます。[position]から[x(東西)]の値を取得する]ブロックを使うと、プレイヤーのワールド座標からx座標だけを取り出して変数に置き換えます。同様にy座標、z座標の数値を変数に置き換えて、続くレッスンで計算に使います。
間違った場合は?
手順4で変数[x][y][z]に正しい座標を指定しないとプログラムが誤動作します。変数と座標が正確に対応しているかどうか、確認しながら作業しましょう。間違った場合は、正しい変数と座標を選択しましょう。
HINT ブロックを複製して作ろう
手順4で作った[変数[x]を[[fieldcentor]から[x(東西)]の値を取得する]にする]ブロックは、3重の入れ子になっているため作るのに手間がかかります。y座標、z座標のブロックを作るときは、x座標用のブロックを複製して接続し、変数[x]の部分と[x(東西)]の部分をクリックして変更しましょう。