目的
アセットを実装してステージの構築
要件
・アセットの実装
・テスト関数の戻り値を作成する
・足場を回転させる
・操作キャラのモデルを変更する
手順
▼テスト関数に戻り値を設定する
void MyTestFunction(float MyFloatParam,FString MyStringParam)
{
UE_LOG(LogTemp, Display, TEXT("MyFloatParam is %f"),MyFloatParam);
UE_LOG(LogTemp, Display, TEXT("MyStringParam is %s"), *MyStringParam);
}
▼Fbekutoru を独自の関数にする
この呼び出しの結果を返す場所を関数化してみる
DistanceMoved = FVector::Dist(StartLocation, CurrentLocation);
//DistのアクセスにFベクトルクラスを使用
//クラス関数にアクセスしたい場合はスコープ解決演算子を使用
まずヘッダファイルで新しいメンバー関数を宣言する
void RotatePlatform(float DeltaTime);
float GetDistanceMoved();
//デルタタイムの下に関数宣言を追加
//パラメータは必要ないので()は空にしておく
alt + enterで関数定義を作成する
戻り値も自動的に指定したのでreturnステートメントも作成した
float AMovingPlatform::GetDistanceMoved()
{
return FVector::Dist(StartLocation, GetActorLocation());
//actorの位置を取得する
}
▼else文を追加
ベロシティの{}外でelse文を構築する
PlatformVelocity = -PlatformVelocity;
}
void AMovingPlatform::MovePlatform(float DeltaTime)
下のコードをelse内に切り取り
else
{
FVector CurrentLocation = GetActorLocation();
//現在地を呼び出す
CurrentLocation = CurrentLocation + (PlatformVelocity * DeltaTime);
//フレームレートに依存しないコードにする
SetActorLocation(CurrentLocation);
}
ここまでで保存、リビルド
▼足場を回転させる
実際にRotatePlatform関数内に回転するコードを書いていく
まずはヘッダーファイルで関数を宣言する以下のコードの間に記入する
float DistanceMoved = 0.0f;
UPROPERTY(EditAnywhere)
FRotator RotationVelocity;
FVector StartLocation;
CPPファイルに戻る
回転速度を使って呼び出す
void AMovingPlatform::RotatePlatform(float DeltaTime)
{
//Rotate the platform
AddActorLocalRotation(RotationVelocity);
}
各フレームで加減算を行う場合には、フレームレートに依存しないようにする必要がある。デルタタイムで解消する
読みやすくすると以下のコードになる
void AMovingPlatform::RotatePlatform(float DeltaTime)
{
//Rotate the platform
FRotator RotationToAdd = RotationVelocity * DeltaTime;
AddActorLocalRotation(RotationToAdd);
}
▼BPで足場の作成
MyStuffフォルダ>BP>MovingPlatform>BP_Rotating_Platformで作成
BP画面>追加>キューブ
キューブの形を整える>BP_Rotating_Platform>Rotation Velocity>Z:90
セーブしてコンパイル
▼アセットのインポート
使用アセット
・stylized eastern villege
・survival charactor
・construction sitevol1
Demoは×
ファイル>現在のレベルを保存>MainLevelと命名してMySuffフォルダに保存する
▼実装したマップをデフォルトに設定する
編集>プロジェクト設定>マップ&モード>エディタのスタートアップマップ>メインレベル(さっき保存したアセット)に変更する
▼キャラモデルの実装
キャラを選択>スケルタルメッシュ>Wクリック
▼デフォルトの3人称キャラのBPを変更する
Third Person>BPフォルダ>三人称キャラのBP>ビューポート>メッシュ>スケルタルメッシュのところを変更する>保存してコンパイル
※メッシュは基本3Dモデルの外形
感想
・C++の場合は関数の戻り値を出力したあとは{}内で完結して、{}外にその関数データは反映されずに終了する。関数の単一処理の原則か。
・RotatePlatform関数を使って足場を回転させる
・フレームレートごとに加減算を実行する際はフレームに依存しない形にする必要があるので、DeltaTime関数を活用する
・アセットの実装自体はもう慣れてるけど、関数とかの下準備したあとでの実装はなんか格別なものがある
・キャラモデルの移管手順知らなかったからようやくこれで理解した
・スケルタルメッシュでコリジョン範囲の設定はしたことあったけど、モデルの場合は外形の変更に関係していると知れてよかった。(このへんめちゃくちゃ楽しい)


