この記事ではMcreator2024.2の情報を執筆しています。
こんにちは。もえやです。3年ほど前からMcreatorの制作動画をYoutubeにアップしています。
今回は、歩いてぶつかると大丈夫なのに、走ってぶつかると爆発するようにしてみました!
グローバル変数を作成する
1ティック前の位置を保存するグローバル変数を作成します。
変数タブに移動し、左上のプラスから、変数を作成します。
変数名を入れ、変数の種類をnumber、変数のスコープをPLAYER_LIFETIMEにし、OKを押します。
プロシージャを作成する
Mod要素タブに移動し、プラスから、プロシージャを作成します。
名前を入れて、新しいプロシージャを作成、を押します。
グローバルトリガーを、プレイヤーのティック更新時にします。
ローカル変数のプラスから、numberで変数を5つ作成します。
フロー制御から、もし~実行を持ってきます。
ロジックから、~ではない、と数字の比較を持ってきます。
カスタム変数から、変数を取得、と設定を持ってきます。
エンティティプロシージャのデータから、各方向の座標を取得するプロシージャブロックを持ってきます。
数式からいろいろ持ってきます。
このように設定し、グローバル変数が初期値でない場合はこのように各変数を設定します。
ワールドプロシージャのデータから、指定位置に何もない、を持ってきます。
ワールドプロシージャのアクションから、爆発を起こすプロシージャブロックを持ってきます。
このように設定し、速度が設定した値を超えた場合、現在地から今の移動速度で移動した先に何かあれば(何もない、でなければ)爆発を起こすようにします。
歩く、走る、の場合は壁が近くなると減速するようにできているようなので、変数を使って2倍の距離に壁がある場合、としています。
最後に、現在位置をグローバル変数に保存して完成です。
走って壁にぶつかったときに爆発するようになりました。
歩く、走るの場合には、x/y/z delta movement ofでは速度を取得できないため、1ティック前の位置と比較して速度を出す方法をとりましたが、エリトラで飛んでいる場合、などはx/y/z delta movement ofで速度を取得しても大丈夫だと思います。