学習の一区切りと振り返り
はじめに
上の記事で見つけたプロジェクトを真似したり改造したりして、
それっぽいフライトアクションを一週間(作業日は5日くらい)で作ってみました。
結論から言うと、宇宙船を動かすのにも手一杯だったので、書籍使って一通りの学習をしようと思います。
やりたいこと、やりたかったこと、よくわからん問題などいろいろ起きてましたが、
ひとまず区切りをつけ、整理のために記事にします。
成果
ひとまずそれっぽい感じで飛びます。
WASDで平行移動、RFで上昇下降、左Shiftでブースト、マウスor左右キーでカメラの回転をします。
マップ上にある赤い玉にぶつかると赤い玉が消えます。赤い玉が全てなくなればゲームクリアです。
以下、振り返りです。
なんとか解決した問題
宇宙船がピクリとも動かない
- 移動の制御にSetPhysicsLinerVelocityノードを使用していたが、このノードはターゲットのSimulatePhysicsがオンになっていないと動かない。宇宙船のPhysicsを設定することで解決。
- 宇宙船ポーンの所有者が未設定だったため、インプットが無効になっていた。レベルエディタでPosesノードにより設定してやることで解決。
- HUDを作成したが、HUDから宇宙船の変数にアクセスできない。HUD作成時のタイミングが問題だった。HUDを作成した時点ではまだポーンを所有していなかったため、データが取得できなかった。レベルエディタでポーンの所有処理をした後にHUDを作成することで解決。
特にポーンの所有とHUDの話はこの記事にて詳しく書きました。
未解決の問題
うまくできなかったこと、やりたかったこと、わからなかったことのまとめです。
Fryingテンプレートを作成して改造しようとしたが、GameModeを変更しようとして、うまくできなかった
プロジェクト設定のDefaultGameModeを変更しても何故かFryingテンプレートに元々あったGameModeが呼ばれてしまい困惑。
DefaultPawnClassを変更したりいろいろ弄ってる内に、宇宙船が動かない問題もあって混乱したので、空のプロジェクトを作成して一から作ることにして回避。
原因と解決方法は不明。チュートリアルのプロジェクトだったからだろうか?
でもThirdPersonの時は変更できたしなあ。アクターのポーンの違いも関係しているのだろうか?
侵入拒否区域の作成
そもそも宇宙船を動かすのに時間がかかっていて、先送りにして、結局実装できなかった。
しかしレーシングプロジェクトに侵入拒否区域があるし、そういう機能ややり方は普通に用意されてそうなので、時間と学習で解決できそう。
カメラがたまに上下にズレた後、正しい位置まで戻らない
原因と条件は謎。たぶん障害物にあたったり、床にカメラが擦れたりした時に発生していると予想する。
ブループリントでカメラを正常な位置に戻そうとするブループリントを(かいたつもりだが)が完全じゃないので起こる問題だと思う。今回置いていったノードはわけもわからずひとまず置いてみたノードが多いので、ノードの理解を深めることにする。
ビームを発射しようとして、うまく行かなかった。
上記記事を参考にしてエフェクトを作り、ブループリントを真似しておいてみたが動かず。
多分作成したレーザービームのブループリントの配置方法が悪い気がする。
最初は何も考えずTickイベントを同じ宇宙船のブループリントに置いたりして「Tickイベントを複数置くな」みたいなエラーがでてたりしたので、UE4のブループリントに対する基礎的な知識が不足してるから起こった問題だと考える。
プロジェクトをパッケージングすると、ゲームクリアできなくなる。
原因は完全に謎。
パッケージングしたexeで遊んでいると、ゲームクリア処理が発火しない。
発火してないのか、処理に異常があってゲームクリア処理が止まってるのかすらもわからない。
ただ、パッケージングした状態でデバッグ作業を十分におこなっていないので、ゲームクリアの実装を見なおすことで回避できると考える。
UE4にかぎらず、Windowsアプリケーションではよくあること。
今後の方針
ひとまず裸でがっぷり4つに組んでUE4触ってうまくいくかとおもったが、そうではなかったのできちんと勉強しようと思います。
この本を買ってきたので、ひとまずこの本を一通り勉強してみるつもり。
ボーンデジタルってもうそれだけで安心感というか、心強さあるよね。
では、また。