转自:http://www.unrealchina.org/forum.php?mod=viewthread&tid=672&extra=page%3D1
foreach [用来遍历游戏中的数据,使用方法如下]
local StaticMeshActor myActor; foreach AllActors(class'StaticMeshActor',myActor) { if(myActor.Tag == 'Box') { myActorSize.X = 1; myActorSize.Y = myActor.DrawScale3D.Y; myActorSize.Z = myActor.DrawScale3D.Z; myActor.SetDrawScale3D(myActorSize); } }
这样foreach就能获得场景中的所有静态模型,并把它赋值给myactor,我们操作myactor就是操作场景中的静态模型了,例如控制他的位置,控制他的大小,他的旋转等等.
在其中的if是判断这个获取到的myactor的tag标签是不是BOX,如果是就更改他的大小,简单说这样就是有针对性的更改,而不会把所有的静态模型更改了。
Spawn,实例化一个类,使用方法:Spawn(class'MyWeapon',,,Location,Rotation,,true);在主角的位置,主角的旋转的方向实例化一个我的武器类,简单说就是把不存在的物体放到场景中.
SpawnEmitter,实例化一个粒子,使用方法:
var ParticleSystem DamageParticle; worldinfo.MyEmitterPool.SpawnEmitter(DamageParticle,HitLocation);
默认属性中DamageParticle = ParticleSystem'WP_LinkGun.Effects.P_WP_Linkgun_Beam_Impact_HIT'[PS特效自己指定]这就是说在某些情况下触发一个粒子特效,当然不要指望他有伤害,他只是可以看见
VSize计算距离的函数,他能把两个vector值减掉后计算出他们的距离,使用方法:VSize(MyWea.Location - Location),例如用来判断敌我距离等等
附加说明: A坐标-B坐标,得出来的值,是从B坐标到A坐标的向量. 而VSize(向量),得出来的值,不一定就是正数,如果只是为了求距离的话,还是要Abs(VSize(坐标A-坐标B) ). 这样绝对值以后就是正数的距离了.
OnAnimEnd函数,用来检测一个动画是否播放完成,需要注意的是你的动画没有设置为循环播放,否则将不会触发,
simulated event OnAnimEnd(AnimNodeSequence SeqNode,float PlayedTime, float ExcessTime) { super.OnAnimEnd(SeqNode, PlayedTime, ExcessTime); worldinfo.Game.Broadcast(self,SeqNode.AnimSeqName); }
这样就会输出播放完成的动画的名字,用处很广
UTPawn类常用函数:
SetLocation(设置坐标)
SetRotation(设置朝向)
SetPhysics(设置物理类型,例如PHYS_Walking:走路 PHYS_Flying:飞行 PHYS_Falling:下落)
PostInitAnimTree(初始化动画树的事件,可以在里面添加自己需要的东西)
FellOutOfWorld(掉出世界的事件,一般就直接死亡,也可以自己重载)
PostBeginPlay(角色初始化完毕,进入游戏的事件)
Landed(角色落地事件)
TakeDamage(受到伤害事件)
TakeFallingDamage(落地受伤事件)
WeaponChanged(武器已经切换的事件)
SetCharacterClassFromInfo(使用FamilyInfo中的资源设置角色的函数)
SetMeshVisibility(开关角色是否显示)
UTPawn的Mesh组件常用函数:
GetSocketWorldLocationAndRotation(获取插槽世界坐标和朝向)
GetSocketByName(根据插槽名字获取插槽)
IsComponentAttached(返回参数中的组件是否已经附加)
AttachComponentToSocket(附加组件到插槽上)
AttachComponent(附加组件到(0,0,0)的相对坐标)
DetachComponent(取消组件的附加)
SetScale(设置模型等比缩放比例)
SetScale3D(设置模型不等比缩放比例)
SetMaterial(设置模型材质)
PlayAnim(播放动画包里对应名字的动画,不通过动画树)
StopAnim(停止播放动画)
//以下几个一般都配套使用,不然容易游戏崩溃
SetSkeletalMesh(设置骨骼模型,例如换人功能)
SetPhysicsAsset(设置物理资源)
SetAnimTreeTemplate(设置动画树)
Mesh的AnimSets变量数组存放了模型需要使用的动画包资源
UTPawn常用变量:
Health(生命值)
HealthMax(生命最大值)
Velocity(速度)
Acceleration(加速度)
JumpZ(跳跃高度)
GroundSpeed(地面移动速度)
AirSpeed(飞行速度)
WaterSpeed(游泳速度)
DodgeSpeed(双击方向键的跳跃回避速度)
DodgeSpeedZ(回避高度)
ViewPitchMin(低头的最小角度,为负数.)
ViewPitchMax(抬头的最大角度,这2个角度取值都是65535=360度,但是一般抬头看天是90度,所以最大顶多是设置65536(16进制10000)/4-1=16383,低头角度同理. 如果要做飞机,因为飞机是可以倒着飞的,那么可以加宽限制.或者修改PlayerController里的LimitViewRotation函数.)
bBlockActors(是否会阻挡其他Actor,如果你不想要2个Actor能互相阻挡,设置false后就可以互相穿过,要2边都设置才行)
不常用变量:
bReplicateHealthToAll(是否同步生命值给所有玩家)
bCanDoubleJump(是否可以2连跳)
MaxStepHeight(可以跨越的最大高度,设置大了可以直接从楼下走到楼顶_, 设置小了会被路边小石头挡住)
bCanJump(是否可跳跃. 从字面上和实际使用上的确是这样.但是这个变量还有隐藏功能: 设置为false后,你将不能从平台上走(掉)下去 )
bCanCrouch(是否可下蹲,隐藏功能:设置为false后,AI的寻路功能将会大幅度受到影响,本来能走过去的地方也走不过去)
CrouchHeight和CrouchRadius(下蹲后的碰撞盒大小,也和AI的寻路有关,设置小了,AI的寻路也将更灵活,但是如果比AI本身的碰撞盒小的话,有可能会被东西卡住)
bProjTarget(是否会被子弹打到,其实这个我也没用过啦)