マイクラJAVA版で、移動速度に応じたコマンドの作成方法は?マインクラフト

ゲームポータル
ゲームポータル
マイクラJAVA版で、プレイヤーの移動速度に応じてパーティクルを発生させるコマンドの作り方は?

結論:
コマンドブロックでスコアボードを使って移動速度をトラッキングし、条件に応じてパーティクルを発生させる。

箇条書きメモ

- プレイヤー移動速度を条件にしたコマンドの作成方法
- スコアボードの設定
- /scoreboard objectives add previous_tick_X dummy
- /scoreboard objectives add previous_tick_Y dummy
- /scoreboard objectives add previous_tick_Z dummy
- /scoreboard objectives add current_tick_X dummy
- /scoreboard objectives add current_tick_Y dummy
- /scoreboard objectives add current_tick_Z dummy
- /scoreboard objectives add move_speed dummy
- 移動速度の計算
- execute as @a store result score @s current_tick_X run data get entity @s Pos[0] 100
- execute as @a store result score @s current_tick_Y run data get entity @s Pos[1] 100
- execute as @a store result score @s current_tick_Z run data get entity @s Pos[2] 100
- execute as @a run scoreboard players operation @s current_tick_X -= @s previous_tick_X
- execute as @a run scoreboard players operation @s current_tick_Y -= @s previous_tick_Y
- execute as @a run scoreboard players operation @s current_tick_Z -= @s previous_tick_Z
- スコアの保存
- execute as @a store result score @s previous_tick_X run data get entity @s Pos[0] 100
- execute as @a store result score @s previous_tick_Y run data get entity @s Pos[1] 100
- execute as @a store result score @s previous_tick_Z run data get entity @s Pos[2] 100
- 移動速度のスコア計算
- execute as @a run scoreboard players operation @s current_tick_X *= @s current_tick_X
- execute as @a run scoreboard players operation @s current_tick_Y *= @s current_tick_Y
- execute as @a run scoreboard players operation @s current_tick_Z *= @s current_tick_Z
- execute as @a store result score @s move_speed run execute as @a run scoreboard players operation @s current_tick_X += @s current_tick_Y
- execute as @a run scoreboard players operation @s move_speed += @s current_tick_Z
- 条件に応じたコマンドの実行
- 例えば、移動速度が毎秒3ブロック以上のプレイヤーを対象にする場合
- @a[scores={move_speed=90000..}] - 注意点
- 座標の差で計算しているため、エンダーパールやディメンション移動で数値が変動する可能性
- ラグによる一時的な0になる現象
- パーティクルの発生
- /execute as @a[scores={move_speed=90000..}] run particle ~ ~ ~
- パーティクル名の指定が必要
- リピートコマンドブロックの使用推奨
- コマンド数が多いため、functionを使うと効率的
- コマンドの流れを理解することが重要

マイクラJAVA版で、移動速度に応じたコマンドの作成方法は?

マインクラフトJAVA版では、プレイヤーの移動速度に応じて様々なアクションを実行することができます。

特に、移動速度が一定以上になったときにパーティクルを発生させるコマンドを作成することは、ゲームプレイをより楽しくするための一つの方法です。

ここでは、移動速度をトラッキングし、特定の条件を満たしたときにパーティクルを発生させるためのコマンドの作成方法を詳しく解説します。

コマンドの準備

まず、移動速度を計測するために必要なスコアボードを設定します。

以下のコマンドを実行して、スコアボードを作成します。

/scoreboard objectives add previous_tick_X dummy
/scoreboard objectives add previous_tick_Y dummy
/scoreboard objectives add previous_tick_Z dummy
/scoreboard objectives add current_tick_X dummy
/scoreboard objectives add current_tick_Y dummy
/scoreboard objectives add current_tick_Z dummy
/scoreboard objectives add move_speed dummy

これで、プレイヤーの位置情報を記録するための準備が整いました。

移動速度の計算

次に、プレイヤーの移動速度を計算するためのコマンドを設定します。

以下のコマンドを使用して、プレイヤーの現在の位置を取得し、前回の位置との差を計算します。

execute as @a store result score @s current_tick_X run data get entity @s Pos[0] 100
execute as @a store result score @s current_tick_Y run data get entity @s Pos[1] 100
execute as @a store result score @s current_tick_Z run data get entity @s Pos[2] 100
execute as @a run scoreboard players operation @s current_tick_X -= @s previous_tick_X
execute as @a run scoreboard players operation @s current_tick_Y -= @s previous_tick_Y
execute as @a run scoreboard players operation @s current_tick_Z -= @s previous_tick_Z
execute as @a store result score @s previous_tick_X run data get entity @s Pos[0] 100
execute as @a store result score @s previous_tick_Y run data get entity @s Pos[1] 100
execute as @a store result score @s previous_tick_Z run data get entity @s Pos[2] 100
execute as @a run scoreboard players operation @s current_tick_X *= @s current_tick_X
execute as @a run scoreboard players operation @s current_tick_Y *= @s current_tick_Y
execute as @a run scoreboard players operation @s current_tick_Z *= @s current_tick_Z
execute as @a store result score @s move_speed run execute as @a run scoreboard players operation @s current_tick_X += @s current_tick_Y
execute as @a run scoreboard players operation @s move_speed += @s current_tick_Z

このコマンドを実行することで、プレイヤーの移動速度の2乗の10000倍がスコア「move_speed」に保存されます。

パーティクルの発生

次に、移動速度が一定以上のプレイヤーに対してパーティクルを発生させるコマンドを設定します。

例えば、移動速度が毎秒3ブロック以上のプレイヤーを対象にする場合、以下のようにコマンドを設定します。

execute as @a[scores={move_speed=90000..}] run particle  ~ ~ ~

ここで、<particle_name>には発生させたいパーティクルの名前を入力します。

パーティクルのIDの例としては、以下のようなものがあります。

  • minecraft:block: ブロックが壊れたときのパーティクル
  • minecraft:bubble_column_up: バブルカラムが上昇中のパーティクル
  • minecraft:cloud: 雲のパーティクル
  • minecraft:crit: クリティカルヒット時のパーティクル
  • minecraft:damage_indicator: ダメージを受けたときのパーティクル
  • minecraft:depthsuspend: 浮遊しているアイテムのパーティクル
  • minecraft:dripping_lava: したたる溶岩のパーティクル
  • minecraft:dripping_water: したたる水のパーティクル
  • minecraft:dust: 色付きのパーティクル
  • minecraft:effect: ポーション効果のパーティクル

これらのコマンドをリピートコマンドブロックで実行することで、移動速度に応じたパーティクルを発生させることができます。

注意点

ただし、座標の差で計算しているため、エンダーパールでのテレポートやディメンション移動などでは、数値が一瞬大きく変化したり、ラグの影響で移動中に一瞬0になったりすることがあります。

このため、コマンドの動作が不安定になることがあるので、注意が必要です。

以上の手順を踏むことで、マインクラフトJAVA版において、移動速度に応じたコマンドを作成し、パーティクルを発生させることができます。

ぜひ、試してみてください!

Yes