UDN
Search public documentation:

MOBAKitWeaponsCH
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 主页 > 虚幻开发工具包精华文章 > MOBA初学者工具包 > 武器系统

MOBA初学者工具包- 武器系统


上次对UDK测试时间为 2012 年 5 月

概述


在此初学者工具包的武器系统与UDK的标准武器系统不同。 这是因为武器的复杂性很大程序依赖于creep,英雄或塔的统计数据,而不是武器本身。 这样,大多数数据并不存储在武器代码本身,武器更像是通知系统,它们从统计系统中采集数据然后将这些数据负向运用于敌方的creep,英雄和塔上。

UDKMOBAWeaponFireMode


这是武器开火模式的抽象基类。 这样设置了子类使用的大多数函数和变量,从而让所有其他需要与武器互动的类都有了共同的界面。

函数

  • SetOwner() - 这个函数设置了开火模式的拥有者 开火模式需要此函数,因为作为一个对象,它并不存储任何关于位置,旋转和此类的信息。 因为为了让武器与世界互动,它们需要了解作为Actor的拥有者(更类似于Pawn)。
  • GetAttackingAngle() - 此函数返回武器的攻击角度 这使得武器能在Pawn不必精确瞄准其他Pawn就可开火,让它们拥有‘模糊’瞄准。
  • Destroy() -这个函数清理了开火模式的对象,这样可以由垃圾回收器移除 清理对象并无效化任何对于Acotr和对象的引用很重要。
  • StartFire() -这个函数初始化武器的发射。 这是通过由拥有者设置计时器(通过 SetOwner() ),然后计时器根据其由受 AttackSpeed 统计数据所影响的发射率来发射武器。
  • StopFire() - 如果目前是通过清理计时器而发射武器,此函数可以停止武器发射。
  • IsFiring() - 如果在 StartFire() 的计时器设置目前为激活或不激活则此值返回true. 如果返回true,则此武器在开火。
  • Fire() -此函数实际执行武器的开火。 这是由在 StartFire() 的计时器调用。
  • BeginFire() -这是受保护的函数让子类执行其特定武器开火方式。

变量

  • WeaponOwner - 这是对Actor的引用,会应用UDKMOBAAttackInterface, 而它是武器的拥有者。

UDKMOBAWeaponConeFireMode


函数

  • BeginFire() -这个函数覆盖在 UDKMOBAWeaponFireMode::BeginFire() 中声明的 BeginFire() 函数。 这个函数首先获取检测到的'锥体'内的所有actor。 这个锥体是通过使用 VisibleCollidingActors() 迭代器首先获得范围内所有Actor来定义。 在此周期内的每个Actor,会被查看他们是否在点积角度内。 这项检查创建了‘锥体’的边缘。 如果没有指定最大受击数量则所有检测到的Actor都受损。 否则,检测到的Actor被评级和分类,然后定为最高级的Actor受损。
  • CompareHitActors() - 这个函数是由动态数组来处理排序。

变量

  • Range - 这是武器的最大射程。
  • Extent - 此函数是由 VisibleCollidingActors() 迭代器使用的武器的粗细(线)追踪。
  • DotAngle - 撞击actor的点积角度应被计算在内作为射中。 这个值越是趋近于1.f,武器就越 ‘准确’。
  • HitCount -可用来射击的最大数量的actor。
  • MomentumTransfer - 传送给所有被射中的actor的动量。

UDKMOBAWeaponProjectileFireMode


函数

  • BeginFire() -这个函数覆盖在 UDKMOBAWeaponFireMode::BeginFire() 中声明的 BeginFire() 函数。 这个函数会基于 ProjectileArchetype 值生成射弹。 在设置射弹后,随后它会在射向敌人时初始化并启动。

变量

  • ProjectileArchetype - 当使用此武器开火时的射弹原型。

UDKMOBAProjectile


这是由 UDKMOBAWeaponProjectileFireMode 使用的专用射弹类。

函数

  • PostBeginPlay() -这个事件在射弹被Unrealscript实例化和初始化后被调用。
  • ReplicatedEvent() -这个事件在带变量标识的复制通知被复制到客户端时被调用。 这个事件在 Enemy 变量被复制时捕获。 当它到达客户端时,它开始其自导式计时器,这样射弹也会在客户端的对象上进行自导式
  • Init() - 这个函数设置了射弹的速度并启动自导式计时器。
  • HomingTimer() - 这个函数检查对敌方变量的攻击是否为无或无效,如果是的话则摧毁射弹。 否则,它会适应射弹的速度,这样它可以寻找到敌人。
  • Touch() - 这个函数确保了射弹仅响应涉及敌人的接触事件。
  • ProcessTouch() - 这个函数确保了射弹在接触敌人时仅处理伤害和爆炸。
  • HitWall() - 这个函数确保了射弹在接触敌人时仅处理伤害和爆炸。
  • DealEnemyDamage() -此函数可应用于对敌人的伤害
  • Explode() -此函数处理射弹何时爆炸 它会播放子弹撞击音效,生成粒子效果并实例化贴花。

变量

  • FlightParticleSystem -当射弹穿过空气时的粒子系统实例化 这经常被用来代表射弹本身。
  • ImpactTemplate -当射弹与其对象相碰撞时的用于实例的粒子系统。
  • ImpactDecalMaterialInstanceTimeVarying -对于贴花,撞击的材质实例时间不同。 这假设了线型标量数据被设置为淡出。
  • ImpactDecalOpacityScalarParameterName - 冲击的透明度标量参数名称 此参数名称应该存在于贴花材质,否则什么都不会发生。
  • ImpactDecalLifeSpan -撞击的贴花生命周期,以秒记。
  • ImpactDecalMinSize -撞击的贴花最小尺寸。
  • ImpactDecalMaxSize -撞击的贴花最大尺寸。
  • AlwaysUniformlySized - 如果此值为真,那么贴花的尺寸始终为均匀的(正方形)。
  • Speed -定义射弹的初始速度
  • MaxSpeed -射弹的速度的限制 (0表示无限制)。
  • SpawnSound -当射弹生成时的音效。
  • ImpactSound -当射弹撞击到一些东西时发出的声音。

UDKMOBAWeaponTraceFireMode


函数

  • BeginFire() -这个函数覆盖在 UDKMOBAWeaponFireMode::BeginFire() 中声明的 BeginFire() 函数。 此函数使用 Trace() 函数来寻找Actor撞击。

变量

  • TraceRange -这是武器的最大射程。
  • TraceExtent - 用于追溯的边框范围
  • MomentumTransfer - 射击actor所传达的动量数量。

我如何添加武器到我的英雄/creep?


MOBAKitWeapon_AddingWeapons.jpg

因为这个简化的武器系统,您仅需要在pawn原型内创建新的武器发射模式对象。 例如当您创建一个新的UDKMOBAHeroPawn原型时,您使用属性窗口来实例化一个您想要的新的武器发射模式类型并设置不同的属性。

我如何创建新的开火模式?


创建新的开火模式需要您创建UDKMOBAWeaponFireMode的新的子类。 大多数时间,您需要 BeginFire() 函数来作为子类插入您的开火逻辑中。

YourNewFireMode.uc
class YourNewFireMode extends UDKMOBAWeaponFireMode;

/**
 * Fires the weapon.
 *
 * @param      FireLocation      Where in the world the weapon should fire from
 * @param      FireRotation      Direction the weapon should fire in
 * @param      Enemy            Enemy to shoot at
 * @network                     Server
 */
protected function BeginFire(Vector FireLocation, Rotator FireRotation, Actor Enemy)
{
}

defaultproperties
{
}