目的
・Tick関数を使って足場を動かす
・デルタタイム変数を使ってゲームのフレームレートを独立させる
・速度と構造体に対する数値演算
手順
1.cppファイルを開く
Tick関数がどう呼び出されているか理解するためにログ・ステートメントを今回は配置する
2.ログの出力ができたらループ処理が確認できるのでTick関数に1FずつZ軸動くように記述する
MyVector.Z = MyVector.Z + 1;
SetActorLocation(MyVector);
3 アクターの現在地を取得する
FVector CurrentLocation = GetActorLocation();
//現在地を呼び出す
CurrentLocation.X = CurrentLocation.X + 1;
SetActorLocation(CurrentLocation);
ここまでで足場が動く&現在地をローカル変数に取得させることができた
次はDeltaTime変数を使ってフレームレートを独立させる
Tick関数内部で足し引きすると起こる問題。
PCのフレーム処理速度が違うと当然足場の動きも違ってくる
100fps = 1秒間に100ユニット(100CM)移動する
DeltaTime =CPUがゲームの最後のフレームを計算するのにかかった時間
つまり、フレームレートに依存しない形で加算する値に使用する
※個人的にきになるポイント
実機動作ではPCの処理負荷で遅くなっているとき、内部では加算や乗算が溜まり続けていてクラッシュする状況ってこういうのが原因、なのか?
遅いコンピュータほどデルタタイムが大きく
早いと逆になる。
CurrentLocation.X = CurrentLocation.X + (1 * DeltaTime);
//フレームレートに依存しないコードにする
SetActorLocation(CurrentLocation);
次に、ベロシティのファクターを作成する
CurrentLocation = CurrentLocation + (PlatformVelocity * DeltaTime);
//フレームレートに依存しないコードにする
SetActorLocation(CurrentLocation);
C++の関数(おさらい)
void MyTestFunction()
//関数のシグネチャーVoidは戻り値の型
//voidは何も返さない
//()が引数
{
int Myint = 10;
}
MyTestFunction();
▼メンバー関数とは
クラスを作成するためにそのクラスに属する関数のこと
実際のコード
class AMovingPlatform
{
void MemberFunction(float MyParam);
}
void AMovingPlatform::MemberFunction(float Myparam)
//::はスコープ解決演算子
{
FVector MyLocatiion = GetActorLocation();
SetActorLocation(MyLocation *2.0f);
}
感想
・メンバー関数の自動定義の作成(~~~でalt+enter)とかまでできた
・C++の関数系の呼び出しや定義については正直まだまだわからんので数をこなして復習する
・でも基本的な型、引数、クラス名、とかのコードの基本の型さえわかればあとはその値を変更する感じ、というイメージはできた。
・たぶんこれで内部処理ではIF文とかめちゃ使えそうな予感…
