附加内容:
Controller,Pawn,Camera,HUD
Controller
Pawn,myCamera, myHUD,PlayerInput
Pawn
Controller,,PC
Camera
PCOwner
OutVT.POV.Location
OutVT.POV.Rotation
OutVT.POV.FOV
OutVT.Target
HUD
PlayerOwner
SizeX/SizeY
状态编程:
Controller或Pawn,GameInfo等都有可能存在状态代码,Controller和Pawn类用得最多。
注:状态函数都需要在类或父类中声明才有效,UDK自带的类中的函数,子类使用时有些也需要声明。
编译提示状态函数有错,可能是状态外的声明函数出错。
DefaultProperties原型变量附值
// Propertiesarchetype used by the player controller
varconstUDKMOBAPlayerPropertiesProperties;
defaultproperties
{
Properties=UDKMOBAPlayerProperties_PC'UDKMOBA_Game_Resources_PC.Properties.PlayerProperties'
}
“=”附值后面跟着类UC文件名,“ ‘’ ”代表UPK包名UDKMOBA_Game_Resources_PC下的文件路径。
使用骨架控制器
file:///E:/udn%20web/udn%20script/udn.epicgames.com/Three/UsingSkeletalControllersCH.html
Search: 斜坡
(地面贴合)是根据地面的倾斜调整人物和/或他的脚部的方向,以便使他的脚部和地面倾斜相平行。
E:\udn web\udnscript\udn.epicgames.com\Three\NavigationMeshTechnicalGuideCH.html(180):
</li> <li> <strong>WalkableFloorZ</strong> - 认为可以走动的斜坡的法线最大Z 值。(Pawn 将会在Z > 这个值的情况下从斜坡上滑下来)
Object 定义的部分默认常量
//=============================================================================
// Constants.
const MaxInt = 0x7fffffff; //十六进制转十进制:
const Pi = 3.1415926535897932;
const RadToDeg = 57.295779513082321600; // 180 / Pi
const DegToRad = 0.017453292519943296; // Pi / 180
const UnrRotToRad = 0.00009587379924285; // Pi / 32768
const RadToUnrRot = 10430.3783504704527; // 32768 / Pi(弧度到虚幻角度转换:一个圆周弧度是2Pi,65535是虚幻的360度)
const DegToUnrRot = 182.0444;
const UnrRotToDeg = 0.00549316540360483;
const INDEX_NONE = -1;
// Aspect ratio constants
const AspectRatio4x3 = 1.33333;
const AspectRatio5x4 = 1.25;
const AspectRatio16x9 = 1.77778;
const InvAspectRatio4x3 = 0.75;
const InvAspectRatio5x4 = 0.8;
const InvAspectRatio16x9 = 0.56249;
部分向量函数
// Vector functions.
//
native(225) static finalfunction float VSize (vectorA );
native static finalfunction float VSize2D (vectorA );
native static finalfunction float VSizeSq (vectorA );
native static finalfunction float VSizeSq2D (vector A);
native(226) static finalfunction vector Normal (vectorA );
native static finalfunction vector VLerp (vectorA, vector B,floatAlpha );
native static finalfunction vector VSmerp (vectorA, vector B,floatAlpha );
native(252) static finalfunction vector VRand ( );
native static finalfunction vector VRandCone (vectorDir, float ConeHalfAngleRadians );
native static finalfunction vector VRandCone2 (vectorDir, float HorizontalConeHalfAngleRadians,float VerticalConeHalfAngleRadians );
native(300) static finalfunction vector MirrorVectorByNormal(vector InVect,vectorInNormal );
native(1500) static finalfunction Vector ProjectOnTo(Vector x,Vectory );
native(1501) static finalfunction bool IsZero(Vector A );
atan2是正切函数的一个变种(维基百科,自由的百科全书)
在三角函数中,两个参数的函数atan2是正切函数的 一个变种。对于任意不同时等于0的实参数x和y,atan2(y,x)所表达的意思是坐标原点为起点,指向(x,y)的射线在坐标平面上与x轴正方向之间 的角的角度。当y>0时,射线与x轴正方向的所得的角的角度指的是x轴正方向绕逆时针方向到达射线旋转的角的角度;而当y<0时,射线与x轴 正方向所得的角的角度指的是x轴正方向绕顺时针方向达到射线旋转的角的角度。
在几何意义上,atan2(y, x) 等价于 atan(y/x),但 atan2 的最大优势是可以正确处理 x=0 而 y≠0 的情况,而不必进行会引发除零异常的 y/x操作。
部分函数:
第一人称视角Controller.GetPlayerViewPoint
鼠标操作
//输出光标位置和视窗大小
MousePosition2D =LocalPlayer.ViewportClient.GetMousePosition();
//将MouseX限定在视图宽度范围内
MousePosition2D.X =Clamp(MousePosition2D.X,0, SizeX);
//将MouseY限定在视图高度范围内
MousePosition2D.Y =Clamp(MousePosition2D.Y,0, SizeY);
LocalPlayer.ViewportClient.GetViewportSize(OutViewSize);
UDKMOBAGameInfo(WorldInfo.Game).Broadcast(self,MousePosition2D.X @ MousePosition2D.Y @OutViewSize.X @OutViewSize.Y);
//获取鼠标世界位置。
Canvas.DeProject(MousePosition2D,MouseWorldOrigin,MouseWorldDirection);
// 执行轨迹获取实际鼠标世界位置。
Trace(MouseHitLocation,HitNormal, MouseWorldOrigin +MouseWorldDirection *65536.f, MouseWorldOrigin ,true, vect(0,0,0));
CursorDeproLoc =MouseHitLocation;