i/o blog

ゲーム系の情報の入出力してみるブログ

Twin Stick Shooter 11

www.youtube.com

 

やったこと

発射された玉が敵に当たるとダメージが入るようにする

 

Blueprint Interface (以降BPIと略す)

特徴

・ポリモフィーズムの実現とカプセル化させることができる

・依存度を減らすことができる(castした相手の情報を知らなくて良くなる)

参考 : もんしょ様

 もんしょの巣穴blog [UE4] Blueprint Interfaceを使って依存度を下げる

 

 

BPI使い方フロー

①BPIの作成と実装

②呼び出し側の実装

③呼び出され側の実装

 

まずBP Interfaceを作成する

関数パネルで関数を定義する

読み取り専用なので処理は書き込めない

f:id:dabura:20151202032343p:plain

 

そうすると全てのBP内で参照できるようになる

先に呼び出し側の処理を実装しないと、呼び出される側でEventノードとして実装できないので先に呼び出す必要があるみたい

f:id:dabura:20151202032636p:plain

(BPInterfaceを IDamageble というファイル名、関数名をAffectHelth名前で実装するとこうなる)

 

あとは呼び出される側の処理を実装する

呼び出されたいBP内で「クラス設定」欄をクリックすると

詳細パネルが出るので、中にある「インターフェース」項目に先ほどのBPIを追加する

そうすると、BPIの処理を実装できるようになる

f:id:dabura:20151202033423p:plain

 

ex ) 

BPIの関数に出力も設定すると、イベントとしては扱われず、次のように空の関数が用意されます

あとはこれを実装すればok

f:id:dabura:20151202040940p:plain

 

 

 

Twin Stick Shooter 9-10

www.youtube.com

www.youtube.com

 

やりました

 

やったこと

9   ...銃と弾の作成

10 ...9で作成したものをキャラクターにアタッチして、弾を発射

 

ショートカット

マテリアルエディター

ctl +「V」Vectorノードの作成

ctl +「S」Scalar ノードの作成

ctl +「M」Multiply ノードの作成

前に書いたものもあるけど、忘れてたのでもう一回書いとく

 

ClearTimerが存在しない(ver4.8で確認)

ClearTimer -> ClearTimer By Handle になっています

使い方はSetTimerByEvent(ByFunctionName)の返り値からハンドルを、引数のノードに渡せばok

f:id:dabura:20151126042612p:plain

 

改めてArrowコンポーネント便利

座標と方向だけ必要な場合とか(今回でいう銃口)に使えるので

本来であれば、多分ボーン名から座標を取得すると思うけど、UEであればそれがゲームエンジン内で完結してしまうので手間が少なくて変更時にとても楽

ゲームエンジンの強みですね

Twin Stick Shooter 8

www.youtube.com

やりました

内容

敵キャラクターの作成

 ・dynamic material instance を使用して色を変える

 ・簡単なaiの作成

これも今までやってきたことの復習みたいなものなので、説明は割愛

 

それと僕が触っていたUE4のverは4.8だったので、動画内の関数名が一部違いました

10:00~にある関数ノード名が

 「SetTimer」

なものは見当たらず、代わりに同機能っぽい

 「SetTimer By FunctionName」

がありました

どちらも、引数に与えられた名前の関数を引数に与えられた時間後に実行するというものみたいです

 

docs.unrealengine.com

 

また、SetTimer ByEvent」と似たような関数、SetTimer By FunctionName」も存在し

そちらはカスタムイベントを引数としてバインドし、そのイベントを一定時間後に呼び出すというものでした

 

Sculptris

てっちゃがSculptrisで3DCG制作を解説してみる動画 ‐ ニコニコ動画:GINZA

前々から気になっていたのでちょっと触る

無料だし

操作説明動画をみていざ作成

 

まず、ドラゴンっぽい頭

f:id:dabura:20151118043612p:plain

うーん

完成度はお察し

でも形だけならそれっぽい

 

次はバナナマン日村

f:id:dabura:20151118043542p:plain

f:id:dabura:20151118043556p:plain

f:id:dabura:20151118043141p:plain

初心者作業時間1時間くらいでこんな感じ

思ったよりムズイ

 

触ってみての感想は、

・ペンタブの操作がメインになるので直観的な操作は楽しい

・直観的な操作とは裏腹に、やりたいことと、操作結果がかみ合わないので凄くもやもやする

・まったく作りこんでいないのに20万ポリゴンとかいくので焦る

・すべて曲線的な表現になってしまうので、ロボットとかに向かないなと実感

 

これを使えるようにするだけでも時間がかかるなー

でも、なんだかんだで2時間くらい楽しんでました

Twin Stick Shooter 6-7

チュートリアル 6と7 やりました

www.youtube.com

 

www.youtube.com

 

6 ... 5で作成したc++クラスから今回の主役であるHeroCharacter(BP)を作成する話

7 ... HeroCharacterを移動させます

 

どちらとも、これからの下準備って感じでした

今までやってきたことばかりだったので特にいうこともなし

 

一応勉強になったことといえば、ゲームパッドやマウスのY軸を反転させる方法

↓の図の赤い四角で囲っているInvertに✔を入れるとできます

f:id:dabura:20151117040420p:plain

BrenderとMMD

ue4とかやってもよかったんですが、mmdとbrenderの連携周りを知りたかったのでこれやってみました

qiita.com

 

結果

f:id:dabura:20151116052507p:plain

色々おかしいところはあるけど、時間も時間なんでまぁこんなもんでしょう

 

brenderとは仲良くしていかないといけないのに、操作がわかりずらい+やれること多すぎて大変...だけど、完成物を見るとそんなことどうでもよくなりますね

Twin Stick Shooter part 5

dabura.hatenablog.com
続きやります。前やったのが8月なのか。びっくり。
前にVisualStudioのインストールがめんどくさくてずっとやってなかったけど、つい最近思い出したのでやります。

part4はは解説のみだったので飛ばします
何言ってるかさっぱりでしたが、図を見た感じCharacterBP の話かな?
acotorを継承したpawnを継承して作られてますーみたいなのは図を見てわかったけど、細かいところはパスで


というわけでpart5
今回はC++のコードを書いて、変数と関数を宣言しましょうというチュートリアルwww.youtube.com


マクロにメタデータを指定すると、それに応じた振る舞いを持つ

UCLASS
... メタデータを使用するとクラス自体の使用の仕方について指定できる( ブループリントの変数として使用可能/不可能の設定や、新規ブループリント一覧に乗せる/隠ぺい など )

UPROPERTY
... メタデータを使用するとブループリント側からのアクセスの指定とか、エディターで設定できるようにしたり様々
 例えば、UPROPERTY(BlueprintReadOnly, VisibleAnywhere , Category = "BaseCharacter")
 であれば
 ・ブループリント側からは読み込みしかできない
 ・エディタのプロパティエディタで見れるが、編集はできない
 ・カテゴリーはBaseCharacter
 となる
 
UFUNCTION
... メタデータを使用すると、ノードに実行ピンを使用させるか、させないか などの設定ができる
 例えば、UFUNCTION(BlueprintCallable , Category = "BaseCharacter")
 であれば
 ・実行ピンありの関数であり
 ・カテゴリーはBaseCharacter
 となる

その他
Categiry メタデータ
... ブループリント側から 関数/変数 を指定するときにCategiry で指定した名前で探し出すことができる
 
完成図
f:id:dabura:20151109103056p:plain


参考unrealengine.hatenablog.com
unrealengine.hatenablog.com