Kismetの変数をucスプリクトで受け取る

概要

シークエンスアクションを作成するサンプルです。
これを利用する事により例えば自作カメラのアングルを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)である必要があります。



~

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2011年12月28日 17:57
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。