#第11~21回
- BlueprintImplementableEventは、cppに関数の実態を定義しなくても良い模様
- GetMaterialとGetMaterialsは別物
- ~GameModeのTickが呼ばれない
- ProjectSettings、WorldSettings共にGameModeの設定は合っている模様
- PrimaryActorTick.bCanEverTick = true; が要る模様(参考)
- GameModeもActorを継承しているので、PrimaryActorTick.bCanEverTickが使える
- 動画の~GameModeの親クラスはAGameModeだが、今はGameModeBaseになっている
- ゲームタイトルのヘッダーの#includeをEnginMinimal.h→Engin.hに変える
- BatteryCollectorGameMode.hでCurrentWidgetにUPROPERTY()を使うが、外部から操作しないのでキーワードの指定は不要とのこと
- UI配置時のAlignmentがUnityのpivotに当たるもの
- 純粋キャストに変換する
- 成功するのが確かなキャストなら純粋キャストの方が見やすい(参考)
- HUDを作ったらGameModeに登録することで表示する
- ~GameMode.hにenumを足すが、コンパイルが通らない
- これもAnswerhubで質問が上がっており、enumのクラス名の横に:unit8を付ける(参考)
- UMGのテキストはSizeToContentにチェックを入れると自動調整となる(参考)
- ゲームオーバー時にプレイヤーの入力を遮断する方法として、SetCinematicModeを使っている。これについてあまり情報がないが、HUDなども非表示にできる。
- ゲームオーバー時にキャラクターが崩れ落ちる(英語ではラグドールになると言う)のは、BatteryCollectorGameMode.cppに追加したmycharacter->getmesh()->setsimulatephysics(true)によるもの。
// ragdoll the character
ACharacter* MyCharacter = UGameplayStatics::GetPlayerCharacter(this, 0);
if (MyCharacter)
{
MyCharacter->GetMesh()->SetSimulatePhysics(true);
MyCharacter->GetMovementComponent()->MovementState.bCanJump = false;
}
- ラグドールになった際、床をすり抜けないようにするにはBPのMeshのCollisionを次のように変更する
- skeletal mesh(骨格メッシュ)には物理アセットを割り当てることができ、物理シミュレーション時にはこの設定が使用される。今使用しているキャラクターは物理アセットを持っていないので、それを持たせる。
- SK_Mannequinに物理アセットを新規作成する際、「作成」と「作成と割り当て」の2種類が表示される。今回は「作成と割り当て」を選ぶと良い。
0 件のコメント:
コメントを投稿