タイトル: SpawnActorでSpawn Transform Rotationが反映されない理由
SEOタイトル: 【UE5】SpawnActorでSpawn Transform Rotationが反映されない理由
Unreal Engine 5(UE5)において、SpawnActorノードを使用してアクターをスポーンする際に、指定したRotationが反映されないケースがあります。これは初心者だけでなく、経験者でもハマることのある問題です。本記事では、その理由と解決策について詳しく解説します。
考えられる原因
スポーン時にRotationが適用されない原因はいくつか考えられます。主な理由として以下の3つが挙げられます。
1. アクターのコンポーネントが親のTransformを無視している
UE5では、アクターのルートコンポーネントがワールド座標を基準にしている場合、スポーン時の回転が適用されないことがあります。特に、StaticMeshComponentをルートとして持つアクターではこの現象がよく発生します。
この問題を解決するには、以下のようにアクターのルートを適切に設定する必要があります。
- SceneComponentをルートにする
- スポーン後に手動で回転を適用する
2. Spawn Actorノードの「Always Spawn, Ignore Collisions」設定
SpawnActorノードの「Spawn Collision Handling Method」が「Try To Adjust Location, But Always Spawn」などに設定されている場合、コリジョンによってTransformの一部が書き換えられることがあります。
これを防ぐには、「Always Spawn, Ignore Collisions」に設定し、意図したRotationが適用されるようにするのが有効です。
3. スケルタルメッシュを使用している場合の影響
スケルタルメッシュを含むアクターは、アニメーションの初期化によってスポーン時の回転が上書きされることがあります。これは、ブループリントでアニメーションが設定されていると特に起こりやすい現象です。
この場合、スポーン後に手動で回転を再設定するか、アニメーションの初期化処理を調整する必要があります。
解決策
以上の問題に対する解決策を以下にまとめます。
- アクターのルートをSceneComponentにする
- SpawnActorノードの「Spawn Collision Handling Method」を「Always Spawn, Ignore Collisions」にする
- スポーン後に明示的にSetActorRotationを呼び出す
- アニメーションの初期化設定を確認し、回転を変更しないようにする
まとめ
Unreal Engine 5のSpawnActorでRotationが適用されない原因は、アクターのルートコンポーネントの設定やコリジョンの影響、アニメーションの処理など様々な要因が考えられます。正しい設定を行い、必要に応じて手動で回転を適用することで、意図した挙動を実現できます。
この記事を参考に、思い通りの回転でアクターをスポーンさせてみてください!