今回はマイクラでプログラムをやってみます!
自分の現在で整地を行っています!
JavaScriptsのコード,ブロックコード?は下にあります
-
実行動画
-
今回のやったこと!!
- getPosition()で現在の位置を取得を取得します.
- ここから,自分が動いても初めにいた場所で整地が開始されます
- for文で,fillを繰り返し処理することでブロックのところをairブロックに変えていきます
- またこの時にワールド座標にすることで,動いても処理される場所に影響しないようにしています.
- for文を繰り返す中で,床に特定のブロックを敷き詰めるようにしています.
*岩盤よりも下を処理しないように,現在のY座標からdeleteHeghtを比較しています.もし,岩盤以下を処理する場合はdeleteHeightを変更するようにしています.
deleteHeght :整地する高さ
deleteRange:整地する幅
-
JavaScripts Code
player.onChat("clear", function () {
player.say("現在の位置を取得:動かないで!!")
getPosition()
player.say("動いてもいいよ~~")
player.say("整地スタート")
// 岩盤より下に掘らないようにする
if (playerY - deleteHeight <= 0) {
player.say("このままだと岩盤より深く掘ることになるので,整地する高さを変更します!")
deleteHeight = deleteHeight - playerY + 2
}
for(let v = deleteRange; v >= -deleteRange;v--){
for(let w = deleteRange;w >= -deleteRange;w--){
//床の第一引数のものを敷き詰める
blocks.fill(
Block.GoldBlock,
positions.createWorld(
playerX + (w * 100),
playerY - deleteHeight-1,
playerZ + (v * 100)
),
positions.createWorld(
playerX + (w + 1) * 100,
playerY - deleteHeight-1,
playerZ + (v + 1)*100
)
)
for(let h = deleteHeight;h > -deleteHeight;h--){
blocks.fill(
positions.createWorld(
playerX + (w * 100),
playerY + h,
playerZ + (v * 100)
),
positions.createWorld(
playerX + ((w + 1) * 100),
playerY + h - 1,
playerZ + ((v + 1) * 100)
)
)
}
player.say("finish remove one area")
}
}
player.say("整地終了")
})
// 自分の現在の位置を取得
function getPosition () {
// getValueは配列指定 0 -> x,1 -> y...
playerX = player.position().getValue(0)
playerY = player.position().getValue(1)
playerZ = player.position().getValue(2)
player.say("player position:(" +
playerX.toString() + "," +
playerY.toString() + "," +
playerZ.toString() + ")")
}
let deleteHeight = 0
let playerZ = 0
let playerY = 0
let playerX = 0
let deleteRange = 0
deleteHeight = 35
-
ブロックコード