「ucスプリクトでKismetにイベントを送る」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
*概要
シーケンスイベントの作例です。
今回は指定範囲にプレイヤーが入るシーケンスイベントが実行されるのを想定して作ってみます。
*ステップ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]]
作例のマップではドアの前の台に乗るとドアが開きます。
~