マインクラフト MakeCode プログラミング。
チュートリアル、コードチェック編。
Gold Stairs のコードチェックページです。
player.onChat("goldstairs", function () {
builder.teleportTo(positions.create(0, 0, 0))
for (let i = 0; i < 25; i++) {
builder.move(SixDirection.Forward, 1)
builder.move(SixDirection.Up, 1)
}
builder.tracePath(Block.GoldBlock)
mobs.teleportToPosition(
mobs.target(TargetSelectorKind.AllPlayers),
positions.create(0, 0, 0)
)
gameplay.setGameMode(
GameMode.Creative,
mobs.target(TargetSelectorKind.AllPlayers)
)
})
今回はビルダーというエージェントと似たような存在で目には見えない「なにか」を使用します。
新しいコードは
builder.teleportTo(positions.create(0, 0, 0))
builder.move(SixDirection.Forward, 1)
builder.move(SixDirection.Up, 1)
builder.tracePath(Block.GoldBlock)
この4行、3種類ですね。
しかしよく見てみると最初の3行は以前にも見たことがあるような気がします。
まずは1行目
builder.teleportTo(positions.create(0, 0, 0))
ですが、以前出てきたプレイヤーをテレポートさせる
player.teleport(positions.create(0, 0, 0))
に非常によく似ています。
先頭のグループ指定とteleportToとteleportが違うだけです。
同様に2,3行目の
builder.move(SixDirection.Forward, 1)
builder.move(SixDirection.Up, 1)
は
agent.move(SixDirection.Forward, 1)
とまったく同じような構文です。
グループ指定が違うだけですね。
最後の4行目は
builder.tracePath(Block.GoldBlock)
というまったく新しいものになっています。
これはビルダーが通った後の座標を記録して指定ブロックを設置する命令です。
ほかにも、埋める(fill)、線を引く(line)があるようです。
fillは開始点と終了地点を結んだ範囲内を埋めます。
面(2D)でも立体(3D)でも可能です。
lineは開始地点から終了地点を結びます。
今回のチュートリアルの開始画像にある斜めに設置されるブロックはこの命令と
「ビルダー:印をつける builder.mark()」を使えば実現できます。
エージェントとちがってブロックをあらかじめ渡しておく必要がないので建築をさせる場合はビルダーのほうが適していると思います。
ただし、ビルダーは見えないので使用には注意が必要になってきます。
プログラムを実行する前になるべく位置指定をしておくことをオススメします。
コメント