U E D R , A S I H C RSS

UDK/2012년스터디/소스

Difference between r1.1 and the current

@@ -6,7 +6,7 @@
class ESGameInfo extends UTDeathmatch;

// definition of member variable, assigning value is done at defaultproperties function
var int a;
var int a;[[Media(Example.mp3)]]

// Its behavior is similarly to constructor.
DefaultProperties
@@ -47,5 +47,87 @@

}}}

= 2012.07.10 카메라 소스 =
{{{#!vim javascript
// ESPlayerPawn.uc
 
simulated function bool CalcCamera( float fDeltaTime, out vector out_CamLoc, out rotator out_CamRot, out float out_FOV )
{
local vector CamStart, HitLocation, HitNormal, CamDirX, CamDirY, CamDirZ, CurrentCamOffset;
local float DesiredCameraZOffset;
 
CamStart = self.Location;
CurrentCamOffset = self.CamOffset;
 
DesiredCameraZOffset = (Health > 0) ? - 1.2 * GetCollisionHeight() + Mesh.Translation.Z : 0.f;
CameraZOffset = (fDeltaTime < 0.2) ? - DesiredCameraZOffset * 5 * fDeltaTime + (1 - 5*fDeltaTime) * CameraZOffset : DesiredCameraZOffset;
if ( Health <= 0 )
{
CurrentCamOffset = vect(0,0,0);
CurrentCamOffset.X = GetCollisionRadius();
}
 
CamStart.Z += CameraZOffset;
GetAxes(out_CamRot, CamDirX, CamDirY, CamDirZ);
CamDirX *= CurrentCameraScale;
 
if ( (Health <= 0) || bFeigningDeath ) {
// Move camera to prevent pinning by world
// @todo fixmesteve. If FindSpot fails, then (rarely does) camera pinned continously.
FindSpot(GetCollisionExtent(), CamStart);
}
 
if (CurrentCameraScale < CameraScale) {
CurrentCameraScale = FMin(CameraScale, CurrentCameraScale + 5 * FMax(CameraScale - CurrentCameraScale, 0.3)*fDeltaTime);
}
else if (CurrentCameraScale > CameraScale) {
CurrentCameraScale = FMax(CameraScale, CurrentCameraScale - 5 * FMax(CameraScale - CurrentCameraScale, 0.3)*fDeltaTime);
}
 
if (CamDirX.Z > GetCollisionHeight()) {
CamDirX *= square(cos(out_CamRot.Pitch * 0.0000958738)); // 0.0000958738 = 2*PI/65536
}
 
out_CamLoc = CamStart - CamDirX*CurrentCamOffset.X + CurrentCamOffset.Y*CamDirY + CurrentCamOffset.Z*CamDirZ;
 
if (Trace(HitLocation, HitNormal, out_CamLoc, CamStart, false, vect(12,12,12)) != None) {
out_CamLoc = HitLocation;
}
 
return true;
}
}}}
 
= 2012.07.16 간단한 문자열 연결 kismet 소스 =
{{{#!vim javascript
class SeqAct_ConcatenateStrings extends SequenceAction;
 
var() String ValueA;
var() String ValueB;
var() bool ConcatenateWithSpace;
var string StringResult;
 
event Activated()
{
StringResult = (ConcatenateWithSpace) ? ValueA@ValueB : ValueA$ValueB;
ActivateOutputLink(0);
}
 
defaultproperties
{
ObjName="Concatenate Strings"
ObjCategory="Misc"
InputLinks(0)=(LinkDesc="In")
OutputLinks(0)=(LinkDesc="Out")
VariableLinks.Empty
VariableLinks(0)=(ExpectedType=class'SeqVar_String',LinkDesc="A",PropertyName=ValueA)
VariableLinks(1)=(ExpectedType=class'SeqVar_String',LinkDesc="B",PropertyName=ValueB)
VariableLinks(2)=(ExpectedType=class'SeqVar_String',LinkDesc="StringResult",bWriteable=true,PropertyName=StringResult)
}
}}}
 
이걸 컴파일하면 다음과 같은 키즈멧 노드를 생성할 수 있다.
[[Media(http://udn.epicgames.com/Three/rsrc/Three/DevelopmentKitGemsConcatenateStringsKismetNode/03_PopulatingConcatenateKismetNode.jpg)]]
----
[2012년활동지도], [UDK/2012년스터디]



1. 2012.07.04


// EmeraldStage/ESGameInfo.uc
class ESGameInfo extends UTDeathmatch;

// definition of member variable, assigning value is done at defaultproperties function
var int a;[[Media(Example.mp3)]]

// Its behavior is similarly to constructor.
DefaultProperties
{
        // Extend PlayerController class to custom class
        PlayerControllerClass = class'ESPlayerController';
}

// Event occured when character logged in(or creation). There are existing function PreLogin, PostLogin functions.
event PlayerController Login(string portal, string options, const UniqueNetId uniqueID, out string errorMsg)
{
        local PlayerController pc;
        pc = super.Login(portal, options, uniqueID, errorMsg);
        return pc;
}

event PostLogin(PlayerController pc)
{
        `log("Hello World!");
        `log(pc.Name@"logged in");
        super.PostLogin(pc);
}

// EmeraldStage/ESPlayerController.uc
class ESPlayerController extends UTPlayerController;

DefaultProperties
{
}

event Tick(float deltaTime)
{
        // called every update time
        `log("tick!");
}


2. 2012.07.10 카메라 소스

// ESPlayerPawn.uc

simulated function bool CalcCamera( float fDeltaTime, out vector out_CamLoc, out rotator out_CamRot, out float out_FOV )
{
        local vector CamStart, HitLocation, HitNormal, CamDirX, CamDirY, CamDirZ, CurrentCamOffset;
        local float DesiredCameraZOffset;

        CamStart = self.Location;
        CurrentCamOffset = self.CamOffset;

        DesiredCameraZOffset = (Health > 0) ? - 1.2 * GetCollisionHeight() + Mesh.Translation.Z : 0.f;
        CameraZOffset = (fDeltaTime < 0.2) ? - DesiredCameraZOffset * 5 * fDeltaTime + (1 - 5*fDeltaTime) * CameraZOffset : DesiredCameraZOffset;

        if ( Health <= 0 )
        {
                CurrentCamOffset = vect(0,0,0);
                CurrentCamOffset.X = GetCollisionRadius();
        }

        CamStart.Z += CameraZOffset;
        GetAxes(out_CamRot, CamDirX, CamDirY, CamDirZ);
        CamDirX *= CurrentCameraScale;

        if ( (Health <= 0) || bFeigningDeath ) {
                // Move camera to prevent pinning by world
                // @todo fixmesteve. If FindSpot fails, then (rarely does) camera pinned continously.
                FindSpot(GetCollisionExtent(), CamStart);
        }

        if (CurrentCameraScale < CameraScale) {
                CurrentCameraScale = FMin(CameraScale, CurrentCameraScale + 5 * FMax(CameraScale - CurrentCameraScale, 0.3)*fDeltaTime);
        }
        else if (CurrentCameraScale > CameraScale) {
                CurrentCameraScale = FMax(CameraScale, CurrentCameraScale - 5 * FMax(CameraScale - CurrentCameraScale, 0.3)*fDeltaTime);
        }

        if (CamDirX.Z > GetCollisionHeight()) {
                CamDirX *= square(cos(out_CamRot.Pitch * 0.0000958738)); // 0.0000958738 = 2*PI/65536
        }

        out_CamLoc = CamStart - CamDirX*CurrentCamOffset.X + CurrentCamOffset.Y*CamDirY + CurrentCamOffset.Z*CamDirZ;

        if (Trace(HitLocation, HitNormal, out_CamLoc, CamStart, false, vect(12,12,12)) != None) {
                out_CamLoc = HitLocation;
        }

        return true;
}

3. 2012.07.16 간단한 문자열 연결 kismet 소스

class SeqAct_ConcatenateStrings extends SequenceAction;

var() String ValueA;
var() String ValueB;
var() bool ConcatenateWithSpace;
var string StringResult;

event Activated()
{
  StringResult = (ConcatenateWithSpace) ? ValueA@ValueB : ValueA$ValueB;
  ActivateOutputLink(0);
}

defaultproperties
{
  ObjName="Concatenate Strings"
  ObjCategory="Misc"
  InputLinks(0)=(LinkDesc="In")
  OutputLinks(0)=(LinkDesc="Out")
  VariableLinks.Empty
  VariableLinks(0)=(ExpectedType=class'SeqVar_String',LinkDesc="A",PropertyName=ValueA)
  VariableLinks(1)=(ExpectedType=class'SeqVar_String',LinkDesc="B",PropertyName=ValueB)
  VariableLinks(2)=(ExpectedType=class'SeqVar_String',LinkDesc="StringResult",bWriteable=true,PropertyName=StringResult)
}

이걸 컴파일하면 다음과 같은 키즈멧 노드를 생성할 수 있다.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:18
Processing time 0.0561 sec