SpawnActor メソッド
アクタ の新インスタンスを作成するプロセスは スポーン として知られています。アクタのスポーンは UWorld::SpawnActor()
関数で実行します。この関数は指定されたクラスの新インスタンスを作成し、
新規に作成されたアクタへポインターを返します。UWorld::SpawnActor()
関数は、
階層にある Actor クラスから継承されるクラスのインスタンスの作成時のみに使用されます。
AActor* UWorld::SpawnActor
(
UClass* Class,
FName InName,
FVector const* Location,
FRotator const* Rotation,
AActor* Template,
bool bNoCollisionFail,
bool bRemoteOwned,
AActor* Owner,
APawn* Instigator,
bool bNoFail,
ULevel* OverrideLevel,
bool bDeferConstruction
)
パラメータ |
説明 |
|
---|---|---|
|
スポーンされるアクタのクラスを指定する UClass 。 |
|
|
(任意)スポーンされるアクタの |
|
|
(任意)アクタをスポーンする初期位置を設定する |
|
|
(任意)アクタと一緒にスポーンする初期回転を設定する |
|
|
(任意)新規アクタのスポーン時にテンプレートとして使用する |
|
|
(任意)アクタのスポーン時にコリジョンテストを実行するかどうかを決定する |
|
|
(任意) |
|
|
(任意)スポーンされたアクタを所有する |
|
|
(任意)スポーンされたアクタによって与えられたダメージの原因となる |
|
|
(任意)特定の条件に満たなかった場合にスポーンを成功させるか否かを決定する |
|
|
(任意)例えばアクタの Outer など、アクタをスポーンする |
|
|
(任意)コンストラクション スクリプトの実行を決定する |
|
戻り値 |
||
|
使用方法
AKAsset* SpawnedActor1 = (AKAsset*) GetWorld()->SpawnActor(AKAsset::StaticClass(), NAME_None, &Location);
Spawn 関数のテンプレート
スポーンされたアクタをより扱いやすくするために、最も一般的に使用されている関数のテンプレートをいくつか用意しました。これらのテンプレートは、パラメータのテンプレートのサブセットを最小限にとどめることにより容易にアクタを作成し、 返されるアクタのタイプの指定が可能となります。
Spawn T Instance, Return T Pointer
この関数テンプレートは、同位置に、同回転で、アクタのルートコンポーネントがスポーン操作を実行時に、テンプレートクラス T
のインスタンスをスポーンします。
そしてテンプレートクラスとして同タイプのインスタンスへポインターを返します。例えば T*
です。
所有するアクタ、駆動するポーン、またスポーンされたアクタが侵害されるかワールドに存在する別のアクタと衝突する場合スポーン操作を失敗させるかの指定をすることができます。
/** Spawns and returns class T, respects default rotation and translation of root component. */
template< class T >
T* SpawnActor
(
AActor* Owner=NULL,
APawn* Instigator=NULL,
bool bNoCollisionFail=false
)
{
return (T*)(GetWorld()->SpawnActor(T::StaticClass(), NAME_None, NULL, NULL, NULL, bNoCollisionFail, false, Owner, Instigator));
}
使用方法
MyHUD = SpawnActor<AHUD>(this, Instigator);
Spawn T Instance with Transform、 Return T Pointer
この関数テンプレートは、指定された Location
に指定された Rotation
でテンプレートクラス T
のインスタンスをスポーンします。そしてテンプレートクラスとして同タイプのインスタンスへポインターを返します。
例えば T*
です。位置と回転に加え、所有するアクタ、ポーンの扇動、またスポーンされたアクタが侵害された場合、スポーン操作を失敗させるかまたは衝突させるかの決定、
ワールドに存在する別のアクタの指定をすることができます。
/** Spawns and returns class T, forcibly sets world position. */
template< class T >
T* SpawnActor
(
FVector const& Location,
FRotator const& Rotation,
AActor* Owner=NULL,
APawn* Instigator=NULL,
bool bNoCollisionFail=false
)
{
return (T*)(GetWorld()->SpawnActor(T::StaticClass(), NAME_None, &Location, &Rotation, NULL, bNoCollisionFail, false, Owner, Instigator));
}
使用方法
Controller = SpawnActor<AController>(GetLocation(), GetRotation(), NULL, Instigator, true);
Spawn Class Instance, Return T Pointer
この関数テンプレートは、同位置に、同回転で、アクタのルートコンポーネントがスポーン操作を実行時に、指定されたクラスのインスタンスをスポーンします。
そしてテンプレートクラスとして同タイプのインスタンスへポインターを返します。例えば T*
です。指定した Class
は、テンプレートクラス T
の子でなくていはいけません。クラスに加え、
所有するアクタ、ポーンの扇動、またスポーンされたアクタが侵害された場合、スポーン操作を失敗させるかまたは
ワールドに存在する別アクタと衝突させるかを指定することができます。
/** Spawns given class and returns class T pointer, respects default rotation and translation of root component. */
template< class T >
T* SpawnActor
(
UClass* Class,
AActor* Owner=NULL,
APawn* Instigator=NULL,
bool bNoCollisionFail=false
)
{
return (Class != NULL) ?Cast<T>(GetWorld()->SpawnActor(Class, NAME_None, NULL, NULL, NULL, bNoCollisionFail, false, Owner, Instigator)) :NULL;
}
使用方法
MyHUD = SpawnActor<AHUD>(NewHUDClass, this, Instigator);
Spawn Class Instance with Transform, Return T Pointer
この関数テンプレートは、指定された Location
に指定された Rotation
で、指定された Class
のインスタンスをスポーンします。そしてテンプレートクラスとして同タイプのインスタンスへポインターを返します。
例えば T*
です。指定した Class
は、テンプレートクラス T
の子でなくていはいけません。クラス、位置、回転に加え、
所有するアクタ、ポーンの扇動、またスポーンされたアクタが侵害された場合、スポーン操作を失敗させるかまたはワールドに存在する別アクタと衝突させるかを指定することができます。
/** Spawns given class and returns class T pointer, forcibly sets world position. */
template< class T >
T* SpawnActor
(
UClass* Class,
FVector const& Location,
FRotator const& Rotation,
AActor* Owner=NULL,
APawn* Instigator=NULL,
bool bNoCollisionFail=false
)
{
return (Class != NULL) ?Cast<T>(GetWorld()->SpawnActor(Class, NAME_None, &Location, &Rotation, NULL, bNoCollisionFail, false, Owner, Instigator)) :NULL;
}
使用方法
APawn* ResultPawn = SpawnActor<APawn>(DefaultPawnClass, StartLocation, StartRotation, NULL, Instigator);