本日のテーマは『スイカゲーム』風の落ちものパズルを作ろう です
本記事は色や見た目を進化させます
URSuika UnrealEngine製のスイカゲーム風3D落ちものパズルゲーム – BOOTH
無料です(Windowsのみ)遊んでみてください。
色を変えてみよう
キャラクターのブループリントでフルーツを作るところを改造します
フルーツ自体の見た目をかえるのになぜフルーツのBPではないのかと思うかもしれません
もちろんそれでも作れます
でも、たくさんできるフルーツ1個1個が色や形の情報を全部持っていると
データ量がすごく多くなってしまい効率が悪くなります
なので、生産者だけがすべての種類の情報を知っていて
スポーンされるフルーツ自体は最小限の情報だけ持つのがよいです

もっと効率よく作る方法はありますが、ちょっとずつ学んでください
色を変えるのはマテリアルの変更でできます
スポーン直後のフルーツの玉(Sphere)の Set Material します
BP_ThirdPersonCharacter > イベントグラフ / SpawnMain


メッシュが肉でマテリアルは表面の皮みたいなものです
色やつるつるざらざらなどの質感などを表現できます
そして、設定するマテリアルはレベルに応じて変更したいので、一旦変数にしてデータ型を決めます

Alt+クリックで接続をいったん切り、詳細欄のところから配列に変更します


たくさんのデータ型の中からマテリアルインスタンスを探すよりこちらのほうが手軽かなと思います
この状態で再度コンパイルして初期値を設定できるようにしましょう
初期値のプラスボタンを押して、最大レベルの要素(フルーツの種類、11)を追加します
配列の先頭を0番目から数えるので、最大レベル引く1まであればいいのですが、今回は理解しやすいように0番目の箱は無視して1番目から使う仕様とします
ではレベル1から好きなマテリアルを設定していきましょう

あとからでもここで変更できるので最初はあまり悩まず適当に変えましょう

たまに用途が違うマテリアルを選ぶと色がでないのでそれは避けます
エンジンのものやスターターコンテンツがないとあまり選択肢がないかもしれません
※ ステップ14でFab.comのアセットを使う方法の解説もします。
ごく簡単な色だけのマテリアルの作り方は、UnrealEngineだけで動くカメを作った記事の参照動画内でも紹介しています
ではこのリストの中から、これからスポーンさせたいレベル用のものを選択します
LVからの線はRキーで点を打ちながら伸ばしてつなぎます
配列の中から番号を指定して中身を取り出すのはGet**です
この番号指定入力にレベルをつなぎます

これでレベルに合わせたマテリアルが選択できます
SetMaterialノードのElement Indexピンは、メッシュに複数スロットがあるときに使うものなので0のままにしましょう

これのことです

上図のように複数のマテリアルがあるメッシュもあります。大きな1枚の皮の中に色々な模様を描くのか、部位ごとに違う皮を貼るのか
ゲームを開始して、色が変わるかや、Shift+F1で編集画面に制御を戻してさっきの配列を見てみましょう

形を変えてみよう(省略可)
今回のお手本ではマテリアルで色を変えているだけですが、形も変えてみましょう
同時にも変えられますが、今回はメッシュだけを変更します
このスフィアはもっとも簡単な形状ですが、スタティックメッシュであることには違いなく、Set Static Mesh でメッシュを変更できます
これも先ほどと同様に11番目まで枠を用意して適当に形を設定しましょう




キューブが大きすぎますが、同じ形で合体できていますね
スタティックメッシュごとに大きさがまちまちだと、レベルx0.5で比率だけでサイズを決めている部分も要見直しです
その場合はfloat型の数値配列を同様に用意して、レベルごとの大きさを管理しましょう
おっとカメラが地面をすり抜けちゃいました
まぁカメラは基本ぶつからない設定になっているので当然ですが、もしぶつかるようにしたい場合は、単純なコリジョンがないので、ここでコリジョンを作成してください

今回は形は玉に戻します
メッシュ用の配列変数も削除しましょう
※削除しないと、ゲームに必要ないアセットがパッケージに含まれちゃいます
備考
今回使ったエンジンコンテンツは、設定で非表示になっていると見えません

コンテンツブラウザ上だけでなく、設定欄から探す検索にも引っかからなくなるので注意しましょう
逆にエンジンのものを直接編集してしまうと、ほかのプロジェクトにも影響するので、必要なものはプロジェクトのコンテンツ以下にコピーしてから作業することもよくあります
その場合は以後は検索に引っかからないほうが安全でしょう
また、違うフォルダを行き来すると迷子になったりもします
わかりやすい構造を保つのも大事ですが、よく使うフォルダに簡単にアクセスできるように、
「お気に入りに追加」もできます



ほかにも便利な小技はたくさんあるのですが、一度にインプットしても覚えられないと思いますので、今日はこのくらいにしておきましょう
問題と対策
さて、さきほどの色変えを真面目に最後までテストしたひとは気づけますが
スイカ相当のレベル11でも合体したら次のレベルになっちゃいます
BP_Fruitで同じレベルとぶつかったら合体する処理にガードを追加し修正しましょう
BP_Fruit > イベントグラフ / HitEvent 2段目


Bでブランチをだして、判定条件はレベルが最高レベルだったらやらないので「<」未満で
最高レベルの一歩手前です
(もしくは LV<最高レベル としても問題ありません)

本家AladdinXプロジェクター版は、スイカ同士が合体しないので、ここで消えるか消えないかの判定にもなりますが、
Switch版の仕様にしたい場合は、ここでは判定しないで、生産側でスポーンさせる処理のなかでLV12だったら無視して生産しない判定を加えることで、合体して消えるだけの動きも再現可能です
テストしましょう
コメント