ucスプリクトでKismetにイベントを送る

「ucスプリクトでKismetにイベントを送る」の編集履歴(バックアップ)一覧はこちら

ucスプリクトでKismetにイベントを送る」(2011/06/23 (木) 03:31:14) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*概要 シーケンスイベントの作例です。 今回は指定範囲にプレイヤーが入るシーケンスイベントが実行されるのを想定して作ってみます。 *ステップ1 まずSeqEvent_OpenDoor.ucを作成します。 #pre{{ class SeqEvent_OpenDoor extends SequenceEvent; defaultproperties { ObjName="OpenDoor" ObjCategory="Physics" bPlayerOnly=false OutputLinks(0)=(LinkDesc="Open") } }} OutputLinksは必要に応じでいくつでも増やせます。 *ステップ2 次にCalcZone.ucを作成します。 #pre{{ class CalcZone extends UTGameObjective placeable; var() Volume CalcZone; var() int InZonePawnNum; var() float CheckInterval; auto state Active { event BeginState(Name PreviousStateName) { SetTimer(CheckInterval, true, 'CheckZone'); super.BeginState(PreviousStateName); } function CheckZone() { local int i; i = NumPawnInZone(); if( InZonePawnNum <= i ) { gotostate('Complete'); } } function int NumPawnInZone() { local Pawn P; local int i; foreach CalcZone.TouchingActors(class'Pawn', P) { i++; } return i; } } state Complete { event BeginState(Name PreviousStateName) { TriggerEventClass( class'SeqEvent_OpenDoor', None, 0 ); //SeqEvent_OpenDoorのOutputLinks(0)を起動 super.BeginState(PreviousStateName); } } defaultproperties { bStatic=false bHidden=false bAlwaysRelevant=true Physics=PHYS_None bOrientOnSlope=true bReplicateMovement=true bIgnoreRigidBodyPawns=true InZonePawnNum=1 CheckInterval=0.1 SupportedEvents.Add(class'SeqEvent_OpenDoor') //Kismetの右クリリストに加える } }} &bold(){TriggerEventClass}と&bold(){SupportedEvents.Add}が重要です。 *ステップ3 マップに設置してKismetエディタでイベントを構築します。 まずマップにCalcZoneを設置して、 #image(http://www20.atwiki.jp/udk_tips?cmd=upload&act=open&pageid=84&file=ev02.jpg,http://www20.atwiki.jp/udk_tips?cmd=upload&act=open&pageid=84&file=ev02.jpg) CalcZoneを選択した状態でKismetエディタで右クリックしてOpenDoorを選択します。 #image(http://www20.atwiki.jp/udk_tips?cmd=upload&act=open&pageid=84&file=ev01.jpg,http://www20.atwiki.jp/udk_tips?cmd=upload&act=open&pageid=84&file=ev01.jpg) 以上で完了です。 *ダウンロード [[ダウンロード>http://www20.atwiki.jp/udk_tips/?cmd=upload&act=open&page=uc%E3%82%B9%E3%83%97%E3%83%AA%E3%82%AF%E3%83%88%E3%81%A7Kismet%E3%81%AB%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%92%E9%80%81%E3%82%8B&file=SendKismetEvent.zip]] 作例のマップではドアの前の台に乗るとドアが開きます。 ~
*概要 シーケンスイベントの作例です。 今回は指定範囲にプレイヤーが入るとシーケンスイベントが実行されるのを想定して作ってみます。 *ステップ1 まずSeqEvent_OpenDoor.ucを作成します。 #pre{{ class SeqEvent_OpenDoor extends SequenceEvent; defaultproperties { ObjName="OpenDoor" ObjCategory="Physics" bPlayerOnly=false OutputLinks(0)=(LinkDesc="Open") } }} OutputLinksは必要に応じでいくつでも増やせます。 *ステップ2 次にCalcZone.ucを作成します。 #pre{{ class CalcZone extends UTGameObjective placeable; var() Volume CalcZone; var() int InZonePawnNum; var() float CheckInterval; auto state Active { event BeginState(Name PreviousStateName) { SetTimer(CheckInterval, true, 'CheckZone'); super.BeginState(PreviousStateName); } function CheckZone() { local int i; i = NumPawnInZone(); if( InZonePawnNum <= i ) { gotostate('Complete'); } } function int NumPawnInZone() { local Pawn P; local int i; foreach CalcZone.TouchingActors(class'Pawn', P) { i++; } return i; } } state Complete { event BeginState(Name PreviousStateName) { TriggerEventClass( class'SeqEvent_OpenDoor', None, 0 ); //SeqEvent_OpenDoorのOutputLinks(0)を起動 super.BeginState(PreviousStateName); } } defaultproperties { bStatic=false bHidden=false bAlwaysRelevant=true Physics=PHYS_None bOrientOnSlope=true bReplicateMovement=true bIgnoreRigidBodyPawns=true InZonePawnNum=1 CheckInterval=0.1 SupportedEvents.Add(class'SeqEvent_OpenDoor') //Kismetの右クリリストに加える } }} &bold(){TriggerEventClass}と&bold(){SupportedEvents.Add}が重要です。 *ステップ3 マップに設置してKismetエディタでイベントを構築します。 まずマップにCalcZoneを設置して、 #image(http://www20.atwiki.jp/udk_tips?cmd=upload&act=open&pageid=84&file=ev02.jpg,http://www20.atwiki.jp/udk_tips?cmd=upload&act=open&pageid=84&file=ev02.jpg) CalcZoneを選択した状態でKismetエディタで右クリックしてOpenDoorを選択します。 #image(http://www20.atwiki.jp/udk_tips?cmd=upload&act=open&pageid=84&file=ev01.jpg,http://www20.atwiki.jp/udk_tips?cmd=upload&act=open&pageid=84&file=ev01.jpg) 以上で完了です。 *ダウンロード [[ダウンロード>http://www20.atwiki.jp/udk_tips/?cmd=upload&act=open&page=uc%E3%82%B9%E3%83%97%E3%83%AA%E3%82%AF%E3%83%88%E3%81%A7Kismet%E3%81%AB%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%92%E9%80%81%E3%82%8B&file=SendKismetEvent.zip]] 作例のマップではドアの前の台に乗るとドアが開きます。 ~

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

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