UE4のウィジェットとは
UE4でブループリントをスッキリさせる機能見つけた
auです。
テストなどでUE4を触っていないと、ブループリントでどこに何があるのかがさっぱり把握できなくなってしまいます。
そこで、便利なグループコメント機能があることを知りました。
UE4でゲームを制作する動画を見ていたらやっていたので、自分もやってみよう!と思ったのでやってみます。
グループコメント機能は、範囲選択→右クリック→選択対象からコメントを作成するで使うことができます。
実際に使ってみると、選択したコマンドを囲むように白くなり、太字かつ大文字でコメントを残すことができます。
そして、さらにいいと思ったのが、画面を縮小してもコメントだけ普通に読める点です!
テスト明けにやり始めた時は、最初何がどれの機能なのかを思い出すのに時間がかかってしまいましたが、これならスッキリするし、割と思い出しやすい気がします。
UE4のトレース反応
UE4でアクタ同士が重ならないようにした
auです。
きのうは、頭からコインが飛び出るように設定しました。
program-shoshinsya.hatenablog.com
頭からでたコインは、それぞれのコリジョンが衝突し、色々な方向に散らばってしまっています。
そこで、今回はコイン同士が重ならないように設定していこうと思います!
コインのアクタにコリジョンプリセット与える
自分でオブジェクト応答を作る
コイン同士が重ならないようにするために「Pickup」というコリジョンプリセットを作成していきたいと思います。これは、巻物とコインも重なるようにするために巻物にも適応していくものです。
1. ツールバーの設定の「プロジェクト設定」を選択
2. エンジンの項目の中にある「コリジョン」を選択
3. Presetの中にある「新規」を選択
4. 名前を入力し、「Collision Enabled」をCollision Enabledに「Pawn」「Vehicle」をオーバーラップに選択(プレイヤーが触れた際にコインを取得するイベントが発生するため)、「Pickup」を無視するに選択(コイン同士が重ならないため)
5. 「NoCollision」「InvisibleWall」「Spectator」も「Pickup」に対して無視にそれぞれ変更します。
6. 「OverlapAll」「Trigger」も「Pickup」に対してオーバーラップにそれぞれ変更します。
これでPickupという、コリジョンプリセットができました。これをコインのアクタに適応していきましょう。
UE4でコインを取得したら頭の上から飛ぶようにした
auです。
今日は、UE4でコインを1枚以上持っている状態で、コインを失った際に、頭に設置したソケットからコインが飛び出るようにしました。
ソケットについては以前にまとめたのでよろしければ読んでみてください。
program-shoshinsya.hatenablog.com
コインを単純に飛ばす
ソケットの配置については、以前にやったので割愛します。
コインはCキーを押すことで、1枚ずつ獲得できるように、Vキーでコインを1枚ずつ失うように設定しています。
プレイヤーのブループリント(PNPlayerPawn)
コインを減らして頭の上から飛ばすブループリント(DropCoin)
()は関数名です
コインを1枚減らした際に、頭の上のソケット(CoinSpawnPoint)の位置情報を取得し、その位置からコインのアクタ(PNPickup Coin Actor)を出現させて、物理シミュレーションを利用して床に落とします。その際に、すぐに触れると再取得してしまい、飛んでいるように見えないので頭より結構離したところで出現させ、斜め方向に力を加えて飛ばしています。
最終的には、死亡判定が出た際に、所持しているコインを全部撒き散らすような挙動にします。(ソニックのリングを持っている時にダメージ食らったときの感じ)
これは楽しい・・・!
コイン同士が乗っかってしまう問題点や、死亡した際の処理も書いていこうと思います。
使っている参考書
UE4のソケットとは
auです。
C言語でのソケットは勉強しましたが、UE4でもソケットが出てきたので調べました。
C言語で使ったソケットの記事は以下の記事です。
program-shoshinsya.hatenablog.com
ソケットを利用する
スケルタルメッシュアセットをダブルクリックして、ペルソナエディタを開きます。
そして、画面左側の「スケルトンツリー」パネルの中から、ソケットを設置したい箇所に近い部位を右クリックします。」
すると、「ソケットを追加」などがあるサブメニューがあるので選択します。
頭の上にソケットを追加してみました。このロケーター情報をブループリントやC++で利用することができるようになりました!