はじめに
概要
作品名 | Rolling Ball |
参考教材 | Unreal Engine 5で動かす C++ & Blueprint |
制作期間 | 2024.03.18~2024.04.06 (20日) |
制作形式 | 自主制作 |
リンク
プレイ動画
内容
出来るようになった事
- 「include」を使用した、ヘッダーファイルの参照
- 「UFUNCTION」を使用した、関数指定子の使用
- 「UPROPERTY」を使用した、変数指定子の使用
- 「BlueprintCallable」を使用した、ブループリントへの関数の公開
- 「meta」を使用した、メタデータ指定子の使用
- 「KeyWords」を使用した、ノード検索用キーワードの設定
- 「EditAnywhere」を使用した、エディタでのインスタンス編集の有効化
- 「*」を使用した、ポインタ変数の宣言
- 「TObjectPtr」を使用した、UObject のポインタ変数の宣言
- 「ClampMin」を使用した、変数の値の最小値の設定
- 「ClampMax」を使用した、変数の値の最大値の設定
- 「const」を使用した、定数の宣言
- 「BindWidget」を使用した、子クラスのブループリントのウィジェットへの変数の登録
- 「USceneComponent::GetComponentToWorld()」を使用した、コンポーネントのトランスフォームの取得
- 「USceneComponent::SetupAttachment()」を使用した、親コンポーネントの設定
- 「USceneComponent::GetForwardVector()」を使用した、ワールド空間におけるコンポーネントの前方向の単位ベクトルの取得
- 「FVector::GetSafeNormal()」を使用した、ベクトルの正規化
- 「FTransform::GetLocation()」を使用した、トランスフォームからの絶対座標の取得
- 「UPrimitiveComponent::SetCollisionProfileName()」を使用した、コリジョンのプロファイル名の設定
- 「UPrimitiveComponent::AddImpulse()」を使用した、物理的な衝撃の追加
- 「UPrimitiveComponent::AddTorqueInRadians()」を使用した、物理的な回転力の追加
- 「UGameplayStatics::GetGameMode()」を使用した、ゲームモードの取得
- 「UGameplayStatics::GetGameInstance()」を使用した、ゲームインスタンスの取得
- 「UGameplayStatics::GetActorOfClass()」を使用した、指定のクラスのアクタの取得
- 「UGameplayStatics::GetPlayerPawn()」を使用した、特定のプレイヤーコントローラーに関連付けられているプレイヤーポーンの取得
- 「UGameplayStatics::GetPlayerController()」を使用した、プレイヤーコントローラーの取得
- 「UGameplayStatics::GetCurrentLevelName()」を使用した、現在居るレベルの名前の取得
- 「UGameplayStatics::OpenLevel()」を使用した、レベルの表示
- 「UKismetSystemLibrary::QuitGame()」を使用した、ゲームの終了
- 「AActor::GetWorld()」を使用した、ワールドポインタの取得
- 「AActor::GetActorLocation()」を使用した、アクタの絶対座標の取得
- 「AActor::SetActorLocation()」を使用した、アクタの絶対座標の設定
- 「AActor::Destroy()」を使用した、アクタの削除
- 「APawn::AddControllerYawInput()」を使用した、コントローラーの回転へのヨーの追加
- 「APawn::AddControllerPitchInput()」を使用した、コントローラーの回転へのピッチの追加
- 「APawn::GetControlRotation()」を使用した、コントローラーの回転の取得
- 「AController::SetControlRotation」を使用した、コントローラーの回転の設定
- 「FMath::ClampAngle()」を使用した、値の範囲の制限
- 「UClass::StaticClass()」を使用した、UClass の生成
- 「UObject::CreateDefaultSubobject()」を使用した、コンポーネントの作成
- 「UUserWidget::AddToViewport()」を使用した、ウィジェットのビューポートへの追加
- 「UWidgetBlueprintLibrary::SetInputMode_GameAndUIEx()」を使用した、UI のみがユーザー入力に応答できるような入力モードの設定
- 「APlayerController::SetShowMouseCursor()」を使用した、マウスカーソル表示の設定
- 「ULocalPlayer::GetSubsystem()」を使用した、ローカルプレイヤーのサブシステムの取得
- 「ULocalPlayer::GetLocalPlayer()」を使用した、ローカルプレイヤーの取得
- 「IEnhancedInputSubsystemInterface::AddMappingContext()」を使用した、マッピングコンテキストの追加
- 「UEnhancedInputComponent::BindAction()」を使用した、インプットアクションへの関数の登録
- 「FInputActionValue::Get()」を使用した、指定の型での入力値の取得
- 「UMovementComponent::SetUpdatedComponent()」を使用した、移動と更新を行うコンポーネントの設定
- 「UTextBlock::TextDelegate」を使用した、テキスト更新用デリゲートの取得
- 「FScriptDelegate::BindUFunction()」を使用した、デリゲートへの関数の登録
- 「FText::FromString()」を使用した、FString から FText への変換
- 「FString::FromInt()」を使用した、int から FString への変換
- 「UPrimitiveComponent::SetSimulatePhysics()」を使用した、物理シミュレーションの設定
- 「UPrimitiveComponent::BodyInstance.bNotifyRigidBodyCollision」を使用した、コリジョンの衝突検知の設定と取得
- 「FPostProcessSettings::PostProcessSettings.MotionBlurAmount」を使用した、モーションブラーの値の設定と取得
- 「USpringArmComponent::bUsePawnControlRotation」を使用した、「コントローラーの角度を反映させるかどうか」の設定と取得
- 「USpringArmComponent::bInheritPitch」を使用した、「親コンポーネントからピッチを継承するかどうか」の設定と取得
- 「USpringArmComponent::bInheritRoll」を使用した、「親コンポーネントからロールを継承するかどうか」の設定と取得
- 「USpringArmComponent::bInheritYaw」を使用した、「親コンポーネントからヨーを継承するかどうか」の設定と取得
- 「UButton::OnClicked」を使用した、ボタンクリック時のデリゲートの取得
- 「GetDefault()」を使用した、クラスの初期値の取得
- 「AddUniqueDynamic()」を使用した、デリゲートへの関数の登録
- 「Cast()」を使用した、型変換
- 「Equal()」を使用した、「2つの値が等しいかどうか」の取得
- 「Super」を使用した、親クラスへのアクセス
- 「NAME_None」を使用した、FName が空である事の明示
工夫した点
- コンポーネントの追加やコンポーネントのプロパティの編集を C++ のコードで行うのではなく、C++ クラスを継承したブループリントクラスのブループリントエディタでコンポーネントを追加し、そのコンポーネントの情報を C++ の親クラスに渡す事で効率的にコンポーネントの編集を行えるようにした
- C++ のコードでアセットを参照する際、そのアセットのパスを指定してロードするのではなく、「UPROPERTY(EditAnywhere)」を使用してエディタからアサインする事でアセットの場所が変わっても対応できるようにしたり、参照関係を明確にしたりした