UDN
Search public documentation:

SettingUpWeaponsCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3主页 > 游戏性元素 > 设置武器

设置武器


武器建模 - 创建及骨架绑定


无论是在第一人称游戏中还是在第三人称游戏中,虚幻引擎3中的武器都是用静态网格物体来进行渲染。第一人称网格物体一般具有较高的多边形,因为通常在较近处看它。当以第一人称的方式使用武器时,根据武器的放置位置的不同,为了节约渲染时间将会忽略那些永远都不会被看到的多边形。当以第三人称的方式查看玩家时,通常使用第三人称网格物体,它作为拾取物网格物体。就这种方式而论,它有从所有角度查看武器的功能,并且不应该忽略任何多变形。但是,一般不会靠近地查看它,所以可以不必顾及小的细节,从而保持多边形数量尽可能地低。

firstpersonmesh.jpg thirdpersonmesh.jpg

您如何设置任何特定武器的第一人称网格物体的骨架是由设置期望的动画所需要的东西来决定的。一般,武器有一个跟骨骼,它位于玩家紧握武器的地方,还有一个小骨骼,它位于枪口火焰的地方。这个骨骼不直接用于附加枪口火焰及其它特效,而是使用基于这些骨骼的插槽来进行附加,把这些骨骼放到正确的位置上会使得设置插槽变得非常容易。

对于第三人称网格物体,骨架或许更加的简单,因为在第三人称方式中跳过了在第一人称中武器所使用的大部分动画,因为它不需要那些动画。根骨骼应该放在主要手紧握武器的地方。子骨骼可以放置在辅助手握住武器的地方,一般如果对特定的武器需要这样的设置或者在您的游戏中支持这样的设置时,那么可以这么做。对于第一人称方式,子骨骼可以放在枪口火焰的位置。

下面显示了一个有关武器骨架的示例:

firstpersonskeleton.jpg

或许应该提前确定一下您要为那些可以通过脚本中直接访问的任何骨骼或插槽所使用的命名机制,或确保您的程序员提供了指定使用特定骨骼名称的能力。

武器导出


导出武器骨架网格物体到引擎中的过程和导出标准的骨架网格物体是完全一样的。您可以或者选择使用ActorX来分别地把您的网格物体及动画导出到一个.PSK 和.PSA文件中;或者您可以通过使用您的3D应用程序的内置的导出工具把您的网格物体和动画导出到一个.FBX文件中,然后再使用Unreal的FBX 导入流程。您必须导出那个特定武器所需要的网格物体和每个动画。

武器导入及设置


武器的.PSK文件(或者.FBX文件,根据您偏爱的文件格式)应该导入到内容浏览器中作为骨架网格物体。

meshimportpsk.jpg meshimport_fbx.jpg

同时也要导入武器的贴图及材质,并设置它们把它们分配给那个静态网格物体。在AnimSet(动画集)编辑器中,您可以通过从File(文件)菜单中选择 New AnimSet(新建动画集)... ,然后提供包、组(可选)及名称,从而为武器创建一个新的动画集,

newanimset.jpg

然后,通过再次从动画集编辑器中的 File(文件)菜单中选择 Import PSA(导入PSA)... 来把包含那个武器的所有动画的.PSA文件导入到武器的动画集中。

newanimation.jpg

如果您使用的是 .FBX文件格式,那么这里您应该选择 Import FBX Animation(导入FBX 动画)... 来导入您的动画。

设置插槽

前面提到的插槽可以用作为枪口火焰以及武器所需要的任何其它特效的附加点。插槽从本质上讲连接特定骨骼的定位器,您可以命名它、偏移它并让它们自己旋转。这为在特定的位置处附加或产生武器项提供了一种简单的方式。

插槽是通过动画集编辑器来添加到虚幻编辑器中的骨架网格物体上的。请按下工具条上的 toolbar_socket.jpg 按钮来打开插槽管理器。

socketmanager.jpg

newsocket_button.jpg 将打开一个列出了网格物体中所有骨骼的新的对话框。

newsocket_bone.jpg

选中那个添加到枪管网格物体尖端的骨骼,然后按下 确定 。这��会弹出另一个对话框,那里您可以给插槽赋予一个名称,以便可以在代码中识别它。

newsocket_name.jpg

一旦您输入了名称,按下 OK 便可以添加新的插槽。它将出现在动画集编辑器的预览面板和插槽管理器的插槽列表中。

newsocket_complete.jpg

创建射弹

射弹是武器开火的物理呈现。Unreal中射弹的视觉效果组件是粒子系统。创建射弹的粒子系统是个非常简单的过程,和制作其它任何粒子系统类似。从本质上讲,您就是要创建一个您希望射弹在战斗中呈现的效果的粒子系统。这个粒子系统可由任意多个发射器做成,只要这些是获得理想的效果所需要的。

射弹粒子系统的一些示例如下所示:

projectile_link.jpg projectile_rocket.jpg projectile_shock.jpg

创建枪口火焰

枪口火焰用于模仿射弹射出武器的炮筒的效果,就像在现实生活当枪开火时你所看到的火焰那样。Unreal中的武器系统使用粒子系统作为枪口火焰的可视化组件。和射弹一样,只要可以满足获得期望效果的需要,枪口火焰的粒子系统可以有任意多个发射器组成。

枪口火焰粒子系统的一些示例如下所示:

mf_link.jpg mf_rocket.jpg mf_shock.jpg

写给程序员


一旦您正确地创建了所有这些资源,您需要向程序员提供一些信息,以便他们来进行实现。程序员所需要的信息如下所示:

  • 第一人称网格物体的名称。
  • 动画集的名称。
  • 拾取物网格物体的名称。
  • 拾取物、装备、放下物及开火声音的名称。
  • 射弹粒子系统的名称(如果开火发射射弹)。
  • 枪口火焰粒子系统的名称。
  • 瞄准线贴图和坐标的名称。

要想获得高效的迭代,最好给这些信息建立一个标准。

创建脚本文件

这里是如何把所有需要的信息输入到您的武器的非常基本的 UnrealScript .uc文件中的示例:

MyWeapon.uc

class MyWeapon extends UTWeapon;

defaultproperties
{
   Begin Object class=AnimNodeSequence Name=MeshSequenceA
      bCauseActorAnimEnd=true
   End Object

   // 武器骨架网格物体
   Begin Object Name=FirstPersonMesh
      SkeletalMesh=SkeletalMesh'WP_LinkGun.Mesh.SK_WP_Linkgun_1P'
      AnimSets(0)=AnimSet'WP_LinkGun.Anims.K_WP_LinkGun_1P_Base'
      Animations=MeshSequenceA
      Scale=0.9
      FOV=60.0
   End Object

   // 拾取物骨架网格物体
   Begin Object Name=PickupMesh
      SkeletalMesh=SkeletalMesh'WP_LinkGun.Mesh.SK_WP_LinkGun_3P'
   End Object

   WeaponFireTypes(0)=EWFT_Projectile
   WeaponProjectiles(0)=class'UTProj_LinkPlasma'

   WeaponEquipSnd=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_RaiseCue'
   WeaponPutDownSnd=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_LowerCue'
   WeaponFireSnd(0)=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_FireCue'
   WeaponFireSnd(1)=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_AltFireCue'
   PickupSound=SoundCue'A_Pickups.Weapons.Cue.A_Pickup_Weapons_Link_Cue'

   MuzzleFlashSocket=MuzzleFlashSocket
   MuzzleFlashPSCTemplate=ParticleSystem'WP_LinkGun.Effects.P_FX_LinkGun_MF_Primary'

   CrosshairImage=Texture2D'UI_HUD.HUD.UTCrossHairs'
   CrossHairCoordinates=(U=384,V=0,UL=64,VL=64)
}

调整武器

有很多可以控制武器功能的参数,可以在很多类中找到,其中包括武器类本身以及所以用的任何射弹。在武器技术指南页面提供了一些常用的参数的解释以及武器在代码侧是如何工作的介绍。

一些有用的控制台命令

其中对于调整武器来说非常有用的一个虚幻引擎的功能是 editactor 控制台命令。当使用武器是,您可以在控制台输入 editactor class=weapon ,然后将会弹出一个属性窗口。当使用武器时,这允许您几乎可以调整所有参数,从而使得迭代非常地快。