UE4 GamePadとKeyboardどちらの入力かを判定する
UIの切り替えをしたくていろいろ調べてたんですけどC++じゃないとできないと出てきて諦めてたんですけど、できました!
GamePadとKeyboardどちらの入力か取得ができればこんなことができちゃいます。
これだけ!
超簡単!すごい!
UE4 Material Parameter Collections が超便利
今回はMaterial Parameter Collectionsを使ってみますよ。
こんなことができるようになります。
Material Parameter Collections
スライダーの値を複数のマテリアルParameterに入れて一斉編集しています。
公式ドキュメント↓
Material Parameter Collections | Unreal Engine Documentation
①マテリアルパラメータコレクションを作成する
- このマテリアルパラメータコレクションで値を編集していく感じです。
②パラメータを追加
③マテリアル内でMPCの変数を使用します
- ノードはCollectionParameterで出せます。
④MaterialParameterCollectionの使い方
- Parameter NameでCollectionに作成したもののうち一つを選択し使用します。
これを使うと以下の動画のように使用できます。
UI部分の一斉フェードやポストプロセスマテリアルの値も編集できちゃいます。
Unity UIアニメーションを使いまわしたい
今回はUnityでUI演出を作成するときに、よく使う演出(テキストの点滅とか)を使いまわす方法です。
①それぞれのAnimationを設定する
ColorパラメータはRGBAをそれぞれ選択、Deleteで削除することができます。
こうすることで色の違うUIのAlpha値のみアニメーションさせたりできます。
②実験用にAnimationを再生するスクリプトを書く
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CallAnimation : MonoBehaviour { private void Start() { //赤色を点滅させる transform.Find("ImageRed").GetComponent<Animator>().Play("ColorAnim"); //青色を回転させる transform.Find("ImageBlue").GetComponent<Animator>().Play("RotationAnim"); //緑色を拡大、縮小させる transform.Find("ImageGreen").GetComponent<Animator>().Play("ScaleAnim"); //黄色を中央で上下させる transform.Find("ImageYellow").GetComponent<Animator>().Play("PositionAnim"); } }
このコードをCanvasにアタッチすると動くようになります。
こんな感じ↓
【わかゲームスタジオ】Unity UIAnimationSample
クリックで切り替わるようにしてみると、
【わかゲームスタジオ】Unity UIAnimationSampleChange
別のImageが同じAnimationを再生しても問題なく動作しているのがわかりますね。
こんな感じで、Animationから変更している値を持ったComponentを意識することでAnimationを使いまわし、同じようなAimationを作成する必要がなくなりますね。
UE4 ラグドール化してから元に戻す方法
かなり前に作成したゲームで、ダメージ表現にラグドール化を使い一定時間後に復帰する仕様を実現しました。
その時に少し悩んだことがあったので備忘録として残しておきます。
使用したゲームはこちら↓
↓今回できること↓
これでふにゃふにゃ化完成 pic.twitter.com/YQUIQS7kbt
— わかです (@wakaGameStudio) 2020年12月4日
ではやっていきます。
①通常通りラグドール化、復帰を書く
すると
ラグドール化は簡単にできるけど元に戻すのは簡単じゃない pic.twitter.com/vSP9BBfaNs
— わかです (@wakaGameStudio) 2020年12月4日
復帰した時に軸が曲がっていたりCapsuleComponentがずれていたりと不具合が多いです。
これを解消していきます。
②CapsuleComponentの位置を調整する
こうすることで、CapsuleComponentがメッシュに付随するようになりました。
Capsuleはついていくようになった pic.twitter.com/y3G1hjrZEe
— わかです (@wakaGameStudio) 2020年12月4日
③復帰後のメッシュのずれを解消する
- 非ラグドール時、メッシュのRotataionとLocationをCapsuleComponentの値から代入し続けます。
この方法はきっと非効率なので、もっと良い方法を知っている方がいれば教えてください。
これでラグドール化してから非ラグドールに戻っても問題なく動作するようになりました。
これでふにゃふにゃ化完成 pic.twitter.com/YQUIQS7kbt
— わかです (@wakaGameStudio) 2020年12月4日
以上です。
ラグドール化から戻ってもメッシュがCapsuleComponentに付随しない原因はわからず。何か知っている方がいらっしゃれば教えていただけると幸いです。
UE4 なんかいい感じのマテリアルを作る
今日教えていただいたことを復習がてら忘れないように残しておく回です。
↓今日できること↓
めらめらゆらゆらまてりある pic.twitter.com/SkdOGpIbig
— わかです (@wakaGameStudio) 2020年10月24日
と
PUBGとかの範囲のやつ
— わかです (@wakaGameStudio) 2020年10月24日
エミッシブぎゃん焚きでめっちゃかっこいい pic.twitter.com/6TZPTWGPls
まずは上の方を作っていきます。
①マテリアルの作成
- これはいつものやつです。
- 何となくUserIntarfaceにしています。
②テクスチャ設定
- TextureSampleを右クリック後、テクスチャオブジェクトに変換をクリックします。
- テクスチャは標準で入っているT_Noise01がおすすめ(と言われました。)です。
③今回のキモになる部分
- まずは何もない場所で右クリック、MaterialFunctionCallを呼びます。
- 詳細パネルから、4WayChaosを選択します。これは指定したテクスチャを斜め4方向に動かしてくれるノードです。(浅い知識)
④残りのノードを組む
- カラーParamは4を押しながらクリック後、そのノードを右クリックでParameterに変更できます。
- MultiplyはMを押しながらクリックです。
以上で一つ目終了です。
色とテクスチャの組み合わせ次第で何十通りにも化けてくれそうですね。
次は
PUBGとかの範囲のやつ
— わかです (@wakaGameStudio) 2020年10月24日
エミッシブぎゃん焚きでめっちゃかっこいい pic.twitter.com/6TZPTWGPls
これを作ります。
①マテリアルの作成
- BlendModeとTwoSidedを変更します。TwoSidedは裏面も描画するかの設定です。
②ノードを組む
- ColorParameterには2500,0,0,0を代入しています。色の明るさを設定しています。
- 緑のParameterはsを押しながらクリックで出せます。初期値は10です。ラインの太さを設定しています。
- DepthFadeはオブジェクトの接地面を薄くしてくれるノードです。これを1-で反転、つまりオブジェクトとの接地面のみ描画するわけです。
これを適当なスフィアに適応すると、
PUBGとかの範囲のやつ
— わかです (@wakaGameStudio) 2020年10月24日
エミッシブぎゃん焚きでめっちゃかっこいい pic.twitter.com/6TZPTWGPls
以上です。今日教えてもらった内容でマテリアルが少しわかったように勘違いすることができました。楽しいですね。
現在制作中のゲームにも使用しようと思います。
UE4 キャラクターの違うマルチプレイを実現する
↓今回できること↓
ローカルマルチって楽しい pic.twitter.com/1rSq6QctSk
— わかです (@wakaGameStudio) 2020年10月20日
①レベルブループリントにスポーン処理を書く
- CreatePlayerでPawnとそれに付随したPlayerControllerを作ります。
- 上記のControllerから付いているPawnを変数に格納しておきます。
- 上記のControllerとPawnの付随関係をUnPossesで外します。
- CreatePlayerで作ったPawnはもう必要ないのでDestroyします。
- 新しく実際に操作するActorを生成(位置はわかりやすいようにLevel上に配置したPlayerStartを使用しています。)
- 新しく生成したActorにCreatePlayerで作成したPlayerControllerを付けます。
これをPlayer数分書くと、
ローカルマルチって楽しい pic.twitter.com/1rSq6QctSk
— わかです (@wakaGameStudio) 2020年10月20日
こうなるわけですね。
これをIさんに手取り足取り教えていただきました。
ありがとうございました。
UE4 UIをWorld座標に表示する
↓今回やること↓
ワールド座標に表示するUIってよく使うよねって話。 pic.twitter.com/dyEN8sz9L0
— わかです (@wakaGameStudio) 2020年10月20日
①表示したいWBPの作成
- TargetLocationには基準にしたいLocationを表示するBP側から代入します。
- Set Alignment in ViewportのAlignmentを調整すると表示される位置のずれを設定できます。
②WBPを生成する
- これはいつもと同じですね。
こうすると、
ワールド座標に表示するUIってよく使うよねって話。 pic.twitter.com/dyEN8sz9L0
— わかです (@wakaGameStudio) 2020年10月20日
以上です。
なんて簡単。
※追記
- 赤色のところでWBPを選択
- 青色のところで表示のずれを指定できます。
- GetPlayerCameraManagerでカメラを取得
- そこからLook at Rotationでカメラの方を向いてもらいます。
もっと簡単な方法を教えてもらいました。
— わかです (@wakaGameStudio) 2020年10月20日
ありがとうSくん。 pic.twitter.com/Pjin2PjD7g
こっちの方が簡単やん。
壁を透過するしないの違いがあるので使い分けられそうですね。