プレイヤーモデルを変えてマリオになる最善手を考える(豚に変身するコマンドのおまけつき)【マインクラフト】

スポンサーリンク

ようこそぷっこ村へ、アドオン博士のししゃもです。

(・∀・)ノ

さて、今回は誰もが試してみつつも絶対に挫折するポイントである、「プレイヤーの見た目を変える」方法の最善手を考えてみます。さぁ、あなたは狭き門より入れるのか!?

プレイヤーの見た目を変える方法について

さてさて、最善手と表現したのには理由があって、実は色々な方法があります。もちろん目的によって使う方法は変わってきますが、根幹の部分の考え方は同じになります。実際変えるプレイヤーモデルを用意してあるものとして進めますね。

  • プロパティを追加してレンダーコントローラーで変える。
  • 何かしらのコンポーネントを追加して(mark_variantとか)レンダーコントローラーで変える。
  • エフェクトでインビジブルつけて、別エンティティとして追加したモブをtpさせ続ける

とかが主な方法でしょうか。もちろん自分が知らない方法が他にもあると思います。この中で、一番スマートな方法が1番上にある、プロパティを追加してレンダーコントローラーで変える方法です。1つずつ考えてみましょっか。

プロパティを追加してレンダーコントローラーで変える

プロパティは結構最近追加された便利機能で、まぁここを見ている皆さんなら今さらでしょう。コンポーネントを使わずに割と何でもできるので、ビヘイビアのアニメーション、アニコンなどと組み合わせると非常に便利ですね。

ただ、プレイヤーに使う場合1つ欠点があって、ポーズメニューでエラーが出ます。

と言うのも、ポーズメニューで出る自キャラ(ペーパードール)はプレイヤー自身とは別エンティティのようで、プロパティが存在しないよって言われます。知らんし、あるし。公式のバニラパックにも存在しない謎の存在で、どうやってプロパティをリンクさせるのかわからんのよね。まぁ、今後何かしらの方法で修正されるとは思いますし、たぶんマケプレの商品でも出るのがあるので、使ってもギリオッケーなのではないかと思ってます(持論)。

使い方自体はスゲー簡単。↓ビヘイビア側(追加部分だけ)

    "description": {
      "identifier": "minecraft:player",
      "properties": {
        "test:event_state": {
          "type": "int","default": 0,
          "range": [0,10],
          "client_sync": true
        }
	  }
    }

description 内に使いたいプロパティを入れて client_sync を true に設定。これでリソパ側に橋渡しできます。↓リソパ側(追加部分だけ)

      "textures": {
        "mario_idle": "textures/sisyamo_pv/entity/mob/mario_idle"
      },
      "geometry": {
        "test_2d_model": "geometry.test_2d_model"
      },
      "animations": {
        "2dcam": "animation.player.2d_cam"
      },
      "render_controllers": [
        { "controller.render.player.mario_root": "(q.property('test:event_state') == 1) && !variable.is_first_person && !variable.map_face_icon && !query.is_spectator" }
      ],
    "controller.render.player.mario_root": {
      "arrays": {
        "textures": {
          "Array.types": [
            "Texture.mario_idle"
          ]
        }
      },
      "geometry": "Geometry.test_2d_model",
      "materials": [ { "*": "Material.default" } ],
      "textures": [ "Array.types[(v.is_on_ground ? ( v.is_moving ? v.move_step : 0 ) : 1 )]" ]

こんな感じにしておくとできます。テクスチャなどは適宜ご用意ください。で、実際これを実行しますと以下のようなことができます。

なんとマリオになって横スクロールアクションゲームの世界にいけるんですね。すごいね!1つの欠点を除けばこの方法が間違いなく最善手でしょう。

次善の策、コンポーネントで切り替える方法

は?エラー出るとかキモい。そんなんエンジニアのすることじゃないわ、タヒね!っていう潔癖の方のために、別の方法も考えておきましょう。

方法としては、コンポーネントの付け変えにより、モデルを切り替える方法ですね。個人的には mark_variant が一番使いやすいと思います。この方法のいい点は、エラーが出ないってことです。欠点は、忘れた頃に見返すと魔導書かな?ってくらい複雑になりがちなのと、別のコンポーネントと混同してバグりやすいってことでしょうか。

↓ビヘイビア側(追加部分だけ)

    "component_groups": {
      "test:mark_variant_1": {"minecraft:mark_variant": {"value": 1}},
      "test:mark_variant_2": {"minecraft:mark_variant": {"value": 2}}
    },
    "events": {
      "test:set_mark_variant_0": {
        "remove": {"component_groups": ["test:mark_variant_1"]},
        "add": {"component_groups": ["test:mark_variant_0"]}
      },
      "test:set_mark_variant_1": {
        "remove": {"component_groups": ["test:mark_variant_0"]},
        "add": {"component_groups": ["test:mark_variant_1"]}
      }
    }

コンポーネントグループとイベントで切り替えます。↓リソパ側(重複部分省略&追加部分だけ)

      "render_controllers": [
        { "controller.render.player.mario_root": "(q.mark_variant == 1) && !variable.is_first_person && !variable.map_face_icon && !query.is_spectator" }
      ],

リソパ側は重複部分省いてますので上手く結合して考えてね。こんな感じにしておけば、上の動画みたいに変身できます。

おまけ、コマンドでtpし続ける方法

この方法は、マイクラ内だけで完結させて、アドオン使わない方法です。ちょっとごり押しなのと、上の方法と比べると融通は利かないですね。ただ簡単なのでちょっと遊ぶにはいいかもね。

まずはリピートのとチェーン1個ずつのコマブロタワーを立てます。そしたら、

/effect @p invisibility 1 1 true
/execute as @e[type=pig,c=1] rotated as @p run tp @s @p

これらのコマンドを入力しましょう。すると……、

あら不思議、プレイヤーが豚ちゃんになっているではありませんか!?こんな感じで友達を招待して遊ぶのも面白いかもしれませんね。

まとめ

エラーがもしかしたらマケプレの審査で何か言われるかもしれませんが、基本はプロパティで変えるのが簡単で安心です。コマンドでちょっと遊びたいだけなら、2つのコマンドだけでできちゃうのでこれまた簡単!

なんや、マイクラなんか簡単やんけ!マタイもびっくりの福音でした。

適当な締めと共にこの辺で終わりたいと思います。それでは、お帰りの際はお気をつけて~(・∀・)ノシ

コメント