概要
シークエンスアクションを作成するサンプルです。
これを利用する事により例えば自作カメラのアングルをKismetで動的に変更出来るようになります。
ここでは例としてシンプルにPawnのGroundSpeed(移動速度)を変更するKismetシークエンスアクションを作成してみます。
ステップ1
SequenceActionを継承したSeqAct_SetGroundSpeed.ucを作成し、変数にvar() float GroundSpeedを持たせます。
そしてデフォルトプロパティに必要な数のInputLinksを追加します。
今回はGroundSpeedを変更する用と元に戻す用のInputLinksを作成しておきます。
class SeqAct_SetGroundSpeed extends SequenceAction;
var() float GroundSpeed;
defaultproperties
{
ObjName="Change GroundSpeed"
ObjCategory="Pawn"
InputLinks(0)=(LinkDesc="ON")
InputLinks(1)=(LinkDesc="OFF")
VariableLinks.Empty
VariableLinks(0)=(ExpectedType=class'SeqVar_Object',LinkDesc="Target",PropertyName=Targets)
}
ステップ2
受け取る側のファイルに受け取るためのファンクションを追加します。
class MyPawn extends UTPawn;
simulated function OnSetGroundSpeed(SeqAct_SetGroundSpeed Action)
{
if (Action.InputLinks[0].bHasImpulse)
{
GroundSpeed=Action.GroundSpeed;
}
else
if (Action.InputLinks[1].bHasImpulse)
{
GroundSpeed=default.GroundSpeed;
}
}
DefaultProperties
{
GroundSpeed=300
}
各分を説明するとまず、if (Action.InputLinks[0].bHasImpulse)の部分でどのインプットから来たのかを分別して処理を実行します。
次にGroundSpeed=Action.GroundSpeed;でGroundSpeedをActionが持ってるGroundSpeedと置き換えます。
最後にInputLinks[1]だった場合、GroundSpeedをPawn自体のデフォルトプロパティで設定されている数値に戻します。
ステップ3
マップにトリガーを設置し、Kismetでトリガーからアクションが起動する用にします。
ちなみにトリガーを複数回起動出来るようにしたい場合はMax Trigger Countを増やせばOKです。
サンプル
マップとUCスプリクトが入っています。
トラブルシューティング
Q.ハンドルうんぬんのエラーが出る。
A.受け取る側.ucのファンクション名はOnシークエンス名(SeqAct_シークエンス名 Action)である必要があります。
~
最終更新:2011年12月28日 17:57