UDN
Search public documentation:

WeaponsTechnicalGuideJP
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 ホーム > ゲームプレイプログラミング > 武器システムのテクニカルガイド

武器システムのテクニカルガイド


概要


「Unreal」の武器は、プレイヤーが(通常はある種の発射物を発砲するために)使用することができるインベントリのアイテムです。デフォルトの武器システムは、「Unreal Engine 3」で見られる通り、一人称のシューティングゲームに典型的な、さまざまなガンを作成するためのシステムのように思われます。しかし実際は、それとは異なるタイプのゲームで見られるような他のタイプの武器や便利なアイテムを非常に容易に作成することができます。たとえば、仲間を回復させる魔法や生物を捕獲する網、敵を倒すブーメランなどが考えられます。この武器システムは、スポーツ系ゲームのような異種ゲームで使えるように改造することさえ考えられるのです。たとえば、ゴルフゲームでプレイヤーがバッグの中に入れて使用できる各種クラブなどを作成することが考えられます。ちょっとした創造性と自由な心があれば、「Unreal Engine 3」の武器システムは、ほとんどあらゆるタイプのゲームのニーズと制約に簡単に対応できるのです。

このドキュメントの目的は、武器システムの機能と新たな武器の簡単な作成方法について概説することにあります。まず、武器とポーン間の相互作用のプロセスを、インベントリ制御という観点から、武器のポーンへの受け渡し、武器の破棄などに分割して考えます。次に、武器を発砲するときに実行するシーケンスについて解説します。ここでは、どのような関数およびステートが一連のプロセスに不可欠であるかということを正確に示します。最後に、さまざまな武器クラスに所属している重要な関数とプレイヤーの多くについて、それぞれに解説をつけて、リストアップします。このような情報をすべて利用することによって、どのように武器システムを作成するゲームに生かすかということ、また、どのような部分を調整または改造、放置すべきかということについて、よいアイデアを練り始める必要があるでしょう。

武器セットアップのコンテンツ面に関する詳細は、 Setting Up Weapons を参照してください。

インベントリ


「Unreal」のインベントリシステムによって、ゲーム内で各プレイヤーに属するアイテムはすべてを把握することができます。各プレイヤーは自身の InventoryManager をもっています。これは、インベントリアイテムを取る、破棄する、装備する、使用するなどの処理を行います。プレイヤーのインベントリ内に配置することができるアイテムは、すべてインベントリ基本クラスを継承します。このクラスは、インベントリシステムで使用されるとともに、InventoryManager によって管理されるのに必要な関数およびプロパティの固有なサブセットを提供するものです。

武器に関するインベントリ管理

Weapon は Inventory (インベントリ) の子であることから、2 通りの方法でポーンのインベントリに追加できます。つまり、Pawn.GiveWeapon() 関数を使用してポーンに直接与えるか、DroppedPickup または PickupFactory アクタによりポーンに割り当てます。DroppedPickups とは、武器がワールドに配置されると作成されるアクタで、Weapon の物理的な存在を表し、プレーヤーがアイテムを (意図的またはデスと同時に) 放棄したときに DropFrom() によって作成されます。PickupFactory アクタは、通常デザイナーによりマップに配置されたアクタを表します。これらのアクタが、供出するインベントリアイテムがあるかどうかの判定タスクを処理し、ワールドにおけるアイテムの状態を管理します

DroppedPickup と PickupFactory はどちらも既存のインベントリアイテムを受け取り取り、ポーンに渡します。これは GiveTo() 関数により実行されます。この関数は InventoryManager に対して、InventoryManager.AddInventory() 関数を使ってこのアイテムをポーンのインベントリに追加するよう指示します。

ポーンに武器を与える 2 つ目の方法は、Pawn.GiveWeapon() の使用です。これは、非物理的アクタ (GameInfo や Mutator など) が、簡単に (それ自体をスポーンせずに) ポーンに武器を簡単に提供できるようにするためのヘルパー関数です。InventoryManager.CreateInventory() を呼び出し、作成する武器クラスを渡してこれを行います。

ポーンに与えられた武器は、使用される前にアクティブにする必要があります。通常、このアクティブ化はユーザー入力 (NextWeapon() または PrevWeapon() のいずれか) と SwitchToWeaponClass() 実行関数を用いて行います。これらの関数がロジックを実行し、新しい武器が決まると SetCurrentWeapon() を呼び出します。

SetCurrentWeapon() は、武器のアクティブ化の主要な起点です。1 つのパラメータ DesiredWeapon (アクティブにする武器への参照) を取り、常にローカル クライアントから呼び出されます。関数を呼び出すとコードチェーンを開始し、現在の武器を「収納」 (インベントリに返して非アクティブ状態すること) します。図 1 は、システムの動作の概略図を示しています。

figure1.jpg

InventoryManager は PendingWeapon プロパティを用いて、武器収納シーケンスが終了したときに次に切り替える武器を決定します。SetCurrentWeapon() はこのプロパティを設定してから TryPutDown() を呼び出します。この関数は武器の非アクティブ化を開始します。

Weapon.TryPutDown() は WeaponPuttingDown へのステート移行を試み、タイミングが良くない場合には bWeaponPutDown フラグプロパティを設定します。ほとんどのステート移行中には、このプロパティを用いて武器収納が要求されたかどうかの確認が行われます。TryPutDown() が WeaponPuttingDown ステートへの移行または bWeaponPutDown フラグの設定に成功した場合は true を返し、その他の場合は false を返します

武器の収納に成功すると、SetCurrentWeapon() は ServerSetCurrentWeapon() を呼び出してサーバー上でプロセスを開始します。このプロセスは SetCurrentWeapon() とほぼ同じですが、注意すべき点が 2 点あります。ひとつは、ServerSetCurrentWeapon() はクライアント上で TryPutDown() に成功したことを前提としている点、もうひとつは、この InventoryManager がローカルで制御されている場合は、リッスンサーバーの存在に配慮し、サーバー側の TryPutDown() 呼び出しを制限する必要がある点です。

上記の 2 点は、いずれも既存の武器が存在することを前提としています。この条件を満たさない場合、TryPutDown() はスキップされ、制御は ChangedWeapon() に直接渡されます。ChangedWeapon() の説明に進む前に、WeaponPutingDown と武器のその他のステートに目を通しておく必要があります。

武器には、以下に示す 6 つの重要なステートがあります。

  1. Inactive (インアクティブ) - 武器が使用されていないときは、通常非アクティブステートに入ります。デフォルトでは、これは武器が画面に見えず、StartFire()/EndFire() イベントを取得できないことを意味します。
  2. Active (アクティブ) - 武器を手に持っているが、発射していないときはアクティブステートになります。このステートから StartFire() を呼び出すと発射シーケンスが開始します。
  3. WeaponEquipping (武器を装備) - 最初に武器をアクティブにすると (Activate() 関数を呼び出して)、WeaponEquipping ステートに移行します。このステートでは、任意の "bring up" (登場) アニメーションとエフェクトを再生します。アクティブに移行するのに要する時間は、TimeWeaponEquipping() で制御します。
  4. WeaponPuttingDown (武器の収納) - このステートは、武器をインベントリに納めて非アクティブにする状態を指します。このステートは、通常は TryPutDown() 関数を呼び出したときか、bWeaponPuttingDown のチェックが遅れたときに開始します。WeaponEquipping と同様に、必要なアニメーションやエフェクトを再生し、TimeWeaponPutDown() を使って収納アクションにかかる時間を調整します。
  5. PendingClientWeaponSet (クライアントの武器設定待ち) - これはクライアント上でのみ発生する特別なステートです。武器がアクティブになっていても、まだ初期状態で重要な情報 (扇動者 (instigator) やオーナーなど) が複製されていないときはこの状態に入ります。このステートに移行した武器は、これらの値の到着を確認する間隔チェックを設定し、その時点で WeaponEquipping ステートに移行します。
  6. Firing(発砲) - 大変な仕事を行うステートです。StartFire によってトリガーされます。通常は、FiringStatesArray 内で Firing として指定されます。

PendingClientWeaponSet を除き、武器はクライアントとサーバーの両方で並行して異なるステートに移行し、必要に応じて分岐しますが、これについては後ほど詳細に説明します。

武器を収納すると、InventoryManager.ChangedWeapon() が呼び出されます (武器の WeaponPuttingDown ステートの WeaponIsDown() 関数から)。ChangedWeapon の役割は、ポーン内の武器プロパティを実際に変更し、通知を行い、最後に新しい武器をアクティブにします。

この場合も同様に、ステート移行はクライアントとサーバーで同時に発生しますが、これはサーバーが追いかけることより発生する視覚的な遅延を避けるためです。武器のコードでは、後述する PendingFire システムを使ってこれを正常に処理します。

Weapon.Activate() が呼び出されると、武器は WeaponEquipping ステートに移行します。上記のリストから、このステートでは武器を使用するための初期化が行われ、「構えの」アニメーションまたはエフェクトが再生されることがわかります。武器の「装備」は TimeWeaponEquipping() 関数の制御を受けます。この関数の内部から武器のメッシュが関連付けられ、アニメーションが再生されます。最後に、EquipTime のタイマーがセットされ、これが終了すると WeaponEquipped() 関数が呼び出されます。装備が完了した武器は Active ステートに移行し、使用できるようになります。

武器


Weapon クラスは、当然のことながら、「Unreal」において武器システムの主眼となるものです。このクラスには、武器の機能および動作を規定するロジックが含まれています。これは大抵の場合、発砲ショットという概念が中心になります。しかし、この「発砲」という概念を、武器が「使用される」という、より一般的な観点で捉えてみることが有益なこともあります。こうすることによって、「Unreal」における武器の概念は、銃の狭い定義から離れて抽象化されます。同時に、ゲームである種のアクションを実行するために使用するアイテムとしての方向性を武器にもたせることができるのです。もちろん、シューティングゲームの場合には、「発砲」という用語がゲームのコンセプトに合致するため問題はないでしょう。武器のあり方や使用方法について異なる考え方をするゲームの場合には、このような抽象化した捉え方をすることで、武器システムの利用が容易になります。

武器の発砲モード

「Unreal」における武器には、複数のモードがあります。デフォルトでは、Fire (発砲)とAlt Fire (もう一方の発砲)があります。これはそれぞれ左マウスボタンと右マウスボタンを押すと実行されます。それぞれの発砲モードは全く異なる動作をします。例としては Link Gun が挙げられます。メインの Fire モードはプラズマの発射物を射出しますが、Alt Fire モードは一定ビームを射出します。これらは全く異なるものであり、それぞれのモードを実行するためのコードにおいても異なるものとして扱われる必要があります。武器は 3 つ以上の発砲モードをもつことができます。ただし、異なる発砲モードそれぞれを発砲させるための仕組みが必要となります。これはデフォルトのシステムには組み込まれていません。入力システムの中で新たなバインディングが作成される必要があり、また、そのような機能を追加するための新たなメソッドも必要となるでしょう。

武器の発砲タイプ

武器がどのように射出するのかということ、また、ヒットする (影響を与える)対象は何かということを決定するのは、現在の発砲モードにおける発砲タイプです。「Unreal」ではデフォルトで 2 つの発砲タイプが定義されています。Instant Fire (即射)と Projectile Fire (発射体の発砲)です。Instant Fire は、その名が示すとおりです。このタイプは、発砲すると同時にトレースを実行し、即座にヒットされる対象を決定するとともに、ダメージまたは他の望ましい結果を与えます。Projectile Fire も名前どおりです。発射物 (projectile)の発砲モードで発砲された場合、新たな発射物がスポーンされて、その武器が狙っている方向に発射されます。次に発射物がプロセスを引き継いで、ヒット対象を決定するとともに、ダメージまたは他の結果を与えます。

これらの定義済みの発砲タイプは、両方とも必要な場合は改変することが可能ですが、さらに Custom Fire(カスタムの発砲)も用意されています。このタイプの動作は定義されていないため、各自のニーズに合わせて完全にカスタマイズすることができます。このタイプのおかげで、武器システムは極めて柔軟なものとなります。新たに武器のエフェクト考え出して実装することができるからです。

発砲シーケンス

アクティブステートに入った武器は、プレーヤーのコントローラーから発射イベントの受け取りを開始することができます。発射のコードパスを調べてみる前に、Weapon.uc の変数宣言と HasAmmo() などのインベントリ関数に目を通しておきましょう。デフォルトでは、UE3 の武器システムには弾薬の取り扱いに関する stub 関数のみが含まれ、本当の実装はゲーム側に任されています。

以下は、発射シーケンスの簡単な概要を記した Weapon.uc からのコメントブロックです。

武器の発射ロジック

ここでは、武器システムは権威サーバーとローカルクライアントの両方で同じ流れに従う 1 つのコードパスとして設計されています。リモートクライアントは武器について意識することなく、WeaponAttachment システムを使用して最終的な結果を得ることができます。

  1. ローカル クライアントの InventoryManager (IM) は StartFire の呼び出しを受け取り、StartFire() を呼び出します。
  2. ローカルクライアントに権威がない場合、ServerStartFire() を介してサーバに通知します。
  3. StartFire() と ServerStartFire() が BeginFire() の呼び出しにより同時に起動されます。
  4. BeginFire() は、敵襲モードの PendingFire フラグを設定します。
  5. BeginFire() は現在のステートを調べて、Active ステートであれば、FiringStatesArray 配列に定義されている新規発射ステートに移行し、発射シーケンスを開始します。これは SendToFiringState の呼び出しにより実行されます。
  6. 発射ロジックはさまざまなステートで処理され、以下の役割を担当します。
    1. 関連する PendingFire が hot (発射可能)である間は発射を続ける。
    2. 弾薬が切れると新しい武器に移る。
    3. 発射しなくなったら、Active ステートに移行する。

武器システムは、IM から StopFire() イベントも受信します。これが発生すると、以下のロジックが実行されます。

  1. ローカルクライアント上の IM は StopFire() を呼び出します。
  2. 武器の StopFire が Authoritive プロセス上にない場合、ServerStopFire() イベントを介してサーバに通知します。
  3. EndFire() を呼び出して StopFire() と ServerStopFire() を同時に起動します。
  4. EndFire() は、この攻撃モードの PendingFire フラグをクリアします。

発射開始/中止の実行における発射ステートは同じで、必要に応じて外側に分岐していきます。例えば、デフォルトの発射ステート ('WeaponFiring') では、該当するすべてのプロセスで関数 FireAmmunition() が発生します。

一度に理解するには多すぎるるので、シーケンス全体について詳しい考察を加えていきます。PlayerController から始めましょう。PlayerController が StartFire() 実行コマンドを受け取ると、ポーンに通知します。ポーンは InventoryManager に通知し、InventoryManager は Owner.Weapon.Start() を呼び出して完全シーケンスを開始します。playerController は、エンドユーザーが使おうとしている発射モードを認識し、それを渡します。それに合わせてプロパティ CurrentFireMode が設定されます。

StartFire() が呼び出されると、武器は簡単な Ammo (弾薬) チェックを実行し、これが失敗に終わった場合は有効な武器への切り替えを試みます。チェックに失敗しなければ、BeginFire() を呼び出します。加えて、StartFire() がリモート クライアント上で呼び出された場合は、要求された関数は ServerStartFire() を介してサーバーに複製され、この関数が次に BeginFire() を呼び出します。Weapon.BeginFire() から、クライアントとサーバーの両方で並行して武器の実行が開始されます。これ以降はコード パスはエフェクトなどの処理が必要な場合のみ分岐します。ほとんどのステートで BeginFire() が実行するのは、選択されている発射モードの PendingFire バイト フラグを確認するだけです。

武器の発射シーケンスが始まるのは Active ステートからだけで、Weapon.SendToFiringState() を呼び出して起動します。この関数は武器を WeaponFiring ステートに移行し、新しいステートに入った武器は、直ちに FireAmmunition() 関数を呼び出して攻撃を試みます。次に TimeWeaponFiring() を呼び出して、発射シーケンスのタイミングを設定します。

デフォルトでは、FireAmmunition() 関数は以下に示すように非常に単純です。

/**
 * FireAmmunition: 発砲に関連するすべてのロジックを実行する
 * - 弾薬を発射する (instant hit (即射) または projectile (投射物) を発射)
 * - 弾薬を消費する
 * - 関連エフェクト (発砲サウンドなど) を再生する
 *
 * ネットワーク: ローカルプレーヤーとサーバー
 */

simulated function FireAmmunition()
{
   // 弾薬を使い発射する
   ConsumeAmmo( CurrentFireMode );

   // これがローカルプレーヤーの場合、発射エフェクトを再生する
   PlayFiringSound();

   // 異なる発射タイプを処理する
   switch( WeaponFireTypes[CurrentFireMode] )
   {
      case EWFT_InstantHit:
         InstantFire();
         break;

      case EWFT_Projectile:
         ProjectileFire();
         break;

      case EWFT_Custom:
         CustomFire();
         break;
   }
}

FireAmmunition() 関数の役割は、"発砲" を実際に開始し、現在の発射モードの WeaponFireTypes エントリを参照することです。即射砲の場合 (EWFT_InstantHit)、TraceFire() を呼び出します。TraceFire() は、弾丸を追跡し、命中した数を管理します。発射物を飛ばす武器 (EWFT_Projectile) の場合は、ProjectileFire() 関数が呼び出されます。この関数は発射物のスポーンと初期化を行います。最後に、カスタムの発射タイプ (EWFT_Custom) の場合は CustomFire() 関数 が呼び出されます。

TimeWeaponFiring() はタイマーを設定し、現在の発射モードで指定発射間隔ごとに RefireCheckTimer() 関数をトリガします。RefireCheckTimer() は、ステートを移行する必要があるか、または追加の発砲を行うかどうかを調べます。ステートの移行が必要なのは、武器の弾薬がなくなった場合、または現在の発射モードの PendingFire バイト フラグ設定がクリアされた場合です。関数 ShouldRefire() は、武器の発射を続けるか、または中止して Active ステートに戻るべきかどうかを判定するロジックを処理します。

発射シーケンスの開始と同様に、シーケンスの中止も PlayerController で開始し、同じパスをたどります。PlayerController からポーン、ポーンから InventoryManager 、IM から現在の武器、という順序で通知されます。次に武器の StopFire() は、ServerStopFire() への分岐が必要な場合はこれを行い、最後に EndFire() を実行して PendingFire バイト フラグをクリアします。

武器のプロパティ

武器のプロパティは、基本武器クラスの中にあります。これらのプロパティは、「Unreal」のすべての武器に共通のものであり、基本的で汎用的な武器の機能に付属しているものです。

AI

  • ShouldFireOnRelease - 各発砲モードについて、武器を発砲するには発砲ボタンがリリースされる必要があるか否かに関して AI に対して伝えます。値が 0 の場合は、押下で発砲します。他の値の場合は、リリース時に発砲します。
  • bInstantHit - true の場合、この武器が即射型の武器であることを AI に対して伝えます。
  • bMeleeWeapon - true の場合、この武器が近接武器であることを AI に対して伝えます。
  • AIRating - インベントリの中のどの武器を使用すべきか、あるいは、どの武器を取るべきかをボットが決定する際に、その武器がどの程度望ましいのか明確にします。

発砲とタイミング

  • FiringStatesArray - 各 発砲モード のために使用する発砲ステートのリストです。デフォルトのシステムでは、 WeaponFiring ステートが使用されます。
  • WeaponFireTypes - 各発砲モードのために使用する 発砲タイプ のリストです。 EWFT_InstantHit - 武器がショットをトレースして、ヒットを決定するとともに即座にエフェクトを引き起こします。 EWFT_Projectile - 照準が定まった新たな発射物を、武器がスポーンします。 EWFT_Custom - カスタマイズされた発砲シーケンスの実装が必要とします。 EWFT_None - 武器は発砲しません。
  • WeaponProjectiles - 各発砲モードの発射物のために使用するクラスのリストです。発砲モードが EWFT_Projectile 発砲タイプを使用することが前提となっています。
  • FireInterval - 武器が 1 回の発砲で要する時間を設定します。
  • Spread - 各発砲モードで使用するショット間の広がりの量を設定します。
  • InstantHitDamage - 各発砲モードについて、この武器の即射ショットによるダメージの量を設定します。
  • InstantHitMomentum - 各発砲モードについて、この武器の即射ショットによるモメンタム量を設定します。
  • InstanthitDamageTypes - 各発砲モードについて、この武器の即射ショットのために使用されるダメージタイプを設定します。
  • FireOffset - この武器のための発射物をスポーンしているときに使用するオフセットを設定します。
  • WeaponRange - この武器を発砲できる最大距離です。これは、InstantFire() 、ProjectileFire() 、AdjustAim() などといった関数の中で実行されるトレースのために使用されます。

インベントリ

  • EquipTime - この武器を装備するのに要する時間です。
  • PutDownTime - この武器をしまうのに要する時間です。
  • bWeaponPutDown - true の場合、この武器は現在のステートの最後でしまわれます。
  • bCanThrow - true の場合、プレイヤーがこの武器を捨てることができます。通常、デフォルトのインベントリにある武器は false に設定されています。

メッシュとアニメーション

  • Mesh - 武器に使用するメッシュを設定します。(メッシュのタイプはここでは制限されませんが、「Unreal」では骨格メッシュを想定しています)。これは一人称メッシュです。
  • DefaultAnimSpeed - 時間が指定されていない場合に、この武器上でアニメーションを再生する際の速度です。

武器の関数

弾薬

  • GetProjectileClass - 現在の発砲モードに対応する発射物のクラスを返します。
  • FireAmmunition - 現在の発砲モードの発砲に関係するすべてのロジックを実行します。たとえば、InstantFire() 、ProjectileFire() 、CustomFire() などを呼び出します。
  • ConsumeAmmo [FireModeNum] - 武器を発砲するとき、それに応じて弾薬のカウントを調整するために呼び出される関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • FireModeNum - 弾薬を消費する現在の発砲モードを保持します。
  • AddAmmo [Amount] - この武器のための弾薬を補充するために呼び出される関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • Amount - 補充する弾薬の量を保持します。
  • HasAmmo [FireModeNum] [Amount] - 所定の発砲モードのための弾薬を武器がもっているか否かを返します。デフォルトでは常にtrue が返されるように設定されているため、サブクラスによってオーバーライドされる必要があります。
    • FireModeNum - 弾薬をチェックする発砲モードを保持します。
    • Amount - オプション項目です。チェックする弾薬の量を保持します。指定されていない場合は、あらゆる弾薬をチェックします。
  • HasAnyAmmo - 発砲モードに関わらず、武器が少しでも弾薬をもっているか否かを返します。デフォルトでは常に true が返されるように設定されているため、サブクラスによってオーバーライドされる必要があります。
  • WeaponEmpty - 発砲中に武器の弾薬が切れた場合に呼び出される関数スタブです。サブクラスによってオーバーライドされる必要があります。

AI

  • IsFiring - 武器が現在発砲中か否かを返します。
  • GetAIRating - この武器のための AIRating を返します。
  • GetWeaponRating - 武器が使用されるのにどのくらい好ましいものかを表す重み付けを返します。
  • CanAttack [Other] - 所定の Actor を攻撃できる範囲に武器が位置しているか否かを返します。デフォルトでは常に true が返されるように設定されているため、サブクラスによってオーバーライドされる必要があります。
    • Other - 攻撃対象の Actor を参照します。
  • FireOnRelease - リリース時に武器が発砲するか否かを返します。
  • NotifyWeaponFired [FireMode] - 武器が発砲されたことを AI に対して伝えます。
    • FireMode - 発砲に使用された発砲モードを保持します。
  • NotifyWeaponFinishedFiring [FireMode] - 武器の発砲が停止したことを AI に対して伝えます。
    • FireMode - 停止した発砲の発砲モードを保持します。
  • RecommendLongRangedAttack - 長距離攻撃のためにこの武器をボットが使うべきか否かを返します。

照準

  • GetViewAxes [XAxis] [YAxis] [ZAxis] - 武器の所有者がもっている基本となる視界照準の回転軸を出力します。
    • XAxis - 出力。X 軸の成分を出力します。
    • YAxis - 出力。Y 軸の成分を出力します。
    • ZAxis - 出力。Z 軸の成分を出力します。
  • GetAdjustedAim [StartFireLoc] - 武器ならびにポーン、コントローラーによって、武器の向いている位置の調整が即座になされるようにします。
    • StartFireLoc - 発砲元の初期の位置を保持します。
  • AddSpread [BaseAim] - 発砲の広がりのオフセットを、基本となる照準のローテータに加え、さらに、調整された照準の回転を返します。
    • BaseAim - 基本となる照準の回転を保持します。
  • GetTargetDistance - カメラからビューポートの中心にあるもの(あらゆるものが該当)までの、およその Screen 距離を計算します。目の疲れを減らすために、照準をステレオ化するのに役立ちます。
  • AdjustFOVAngle [FOVAngle] - プレイヤーの FOV (視野角)を武器が修正し、調整されたその FOV の角度を返す関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • FOVAngle - FOV の角度を保持します。
  • GetPhysicalFireStartLoc [AimDir] - 発射物をスポーンするためのワールドの位置を返します。これは、AimDir 方向の Pawn のコリジョンに取り込まれます。
    • AimDir - オプション項目です。武器が狙いを定めている方向を保持します。

ダメージ

  • GetDamageRadius - 現在の発砲モードについて、発射物のもつダメージ半径を返します。即射の場合は 0 になります。
  • PassThroughDamage [HitActor] - 武器からの即射ショットが所定のアクタを撃つべきか無視するべきかを返します。
    • HitActor - テスト対象の Actor を参照します。
  • ProcessInstantHit [FiringMode] [Impact] [NumHits] - 即射ショットによる成功したヒットを処理します。ヒットされた Actorに対してダメージを与え、必要なエフェクトをスポーンします。
    • FirignMode - ショットを放った発砲モードを保持します。
    • ImpactInfo - 撃たれた Actor に関する情報を保持します。
    • NumHits - オプション項目です。ダメージを適用するヒットの数を保持します。ショットガンなどのようなマルチヒット武器の場合に役立ちます。

エフェクト

  • PlayFireEffects [FireModeNum] [HitLocation] - 武器を発砲しているときにエフェクト(銃口フラッシュなどあらゆるもの)を再生するための関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • FireModeNum - エフェクトを再生する発砲モードを保持します。
    • HitLocation - オプション項目です。エフェクトを再生するときに使用する位置を保持します。
  • StopFireEffects [FireModeNum] - あらゆるアクティブなエフェクトを停止するための関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • FireModeNum - エフェクトを停止する発砲モードを保持します。
  • IncrementFlashCount - リモートクライアント上で武器発砲エフェクトを再生するために使用される、Pawn の FlashCount 変数を増加します。
  • ClearFlashCount - Pawn の FlashCount 変数をクリアします。
  • SetFlashLocation [HitLocation] - 武器の発砲によってヒットされる位置を設定します。これは、発砲エフェクトの再生のためにすべてのクライアントに複製されるものです。
    • HitLocation - 武器の発砲によってヒットされる位置です。
  • ClearFlashLocation - フラッシュの位置をクリアして、武器の発砲エフェクトを停止します。
  • GetMuzzleLoc - 視覚エフェクトをスポーンするためのワールド位置を返します。

発砲とタイミング

  • StartFire [FireModeNum] - 発砲プロセスを開始するローカルのプレイヤー上で呼び出されます。呼び出しをサーバーに渡し、ローカルで発砲エフェクトをシミュレートします。
    • FireModeNum - 使用された発砲モードを保持します。
  • ServerStartFire [FireModeNum] - サーバー上で呼び出されて、発砲プロセスを開始し、すべてのクライアントに複製します。
    • FireModeNum - 使用された発砲モードを保持します。
  • BeginFire [FireModeNum] - 所定の発砲モードをペンディングしているモードとして設定します。ローカルプレイヤーとサーバーによって呼び出されて、発砲プロセスの同期をとります。
    • FireModeNum - 使用された発砲モードを保持します。
  • StopFire [FireModeNum] - ローカルプレイヤーによって呼び出されて、発砲中の武器を停止します。
    • FireModeNum - 発砲を停止する発砲モードを保持します。
  • ServerStopFire [FireModeNum] - サーバー上で呼び出されて発砲中の武器を停止し、すべてのクライアントに複製します。
    • FireModeNum - 発砲を停止する発砲モードを保持します。
  • EndFire [FireModeNum] - 所定の発砲モードをもはやペンディングしていないモードとして設定します。すべてのクライアント上で呼び出されて、シャットダウンプロセスの同期をとります。
    • FireModeNum - 発砲を停止する発砲モードを保持します。
  • ForceEndFire - 発砲モードがローカルクライアント上で発砲しているのを停止させます。複製されません。
  • SendToFiringState [FireModeNum] - 武器を所定の発砲モードのための発砲ステートにするとともに、この発砲モードを現在のモードとして設定します。
    • FireModeNum - 現在のモードとして設定する発砲モードを保持します。
  • SetCurrentFireMode [FiringModeNum] - 所定の発砲モードを現在のモードとして設定します。
    • FiringModeNum - 現在のモードとして設定する発砲モードを保持します。
  • FireModeUpdated [FiringMode] [bViaReplication] - 武器の所有者の FiringMode が変化した場合に呼び出されます。
    • FiringMode - 新たな発砲モードを保持します。
  • CalcWeaponFire [StartTrace] [EndTrace] [Impactlist] [Extent] - 即射ショットをシミュレートするとともに、最初のジオメトリのヒットを戻り値として返します。この関数からダメージは与えられません。ショットによってヒットされたもののリストを得るためだけのものです。
    • StarTrace - トレースを開始する位置を保持します。
    • EndTrace - トレースを終了する位置を保持します。
    • ImpactList - オプション項目です。出力。発砲のシミュレーションの間に発生したすべての衝撃のリストを出力します。
    • Extent - オプション項目です。実行するトレースの範囲を保持します。
  • InstantFire - 即射ショットを実行します。CalcWeaponFire() を使用して、Actor をヒットさせます。また、ProcessInstantHit() を使用してそのヒットを処理します。
  • ProjectileFire - 発射物の発射表示を実行します。武器が照準を合わせている方向に発射物を発射するとともに、武器が発射を実行したことをクライアントに通知します。
  • CustomFire - カスタマイズされた発砲モードを実装するための関数スタブです。発射物または即射発砲モードを使用しないサブクラスは、この関数をオーバーライドすることによって、カスタマイズされた発砲機能を追加する必要があります。
  • GetPendingFireLength - この武器のためのすべての発砲モードについて、ペンディングしている発砲を保持する配列の長さを返します。
  • PendingFire [FireMode] - 所定の発砲モードに、この武器のためのペンディングしている発砲があるか否かを返します。
    • FireMode - ペンディングしている発砲があるかどうかを調べるとき、その対象となる発砲モードを保持します。
  • SetPendingFire [FireMode] - 所定の発砲モードをペンディングとして設定します。
    • FireMode - 設定する発砲モードを保持します。
  • ClearPendingFire [FireMode] - この武器のために、もはやペンディングしていないモードとして、所定の発砲モードを設定します。
    • FireMode - 設定する発砲モードを保持します。
  • MaxRange - 発砲時にこの武器が届く最大距離を返します。
  • GetFireInterval [FireModeNum] - この武器の所定の発砲モードについて、ショット間の秒数を返します。
    • FireModeNum - インターバルをとる発砲モードを保持します。
  • TimeWeaponFiring [FireModeNum] - 発砲ステートのためのタイマーを設定します。これは、RefireCheckTimer() 関数を実行するとともに、所定の発砲モードのための発砲インターバルと等しいインターバルでループするものです。
    • FireModeNum - タイマーを設定する発砲モードを保持します。
  • RefireCheckTimer - 発砲ステートにおいて、もう 1 回ショットを発するべきか否かを確認し、そうであれば発砲します。
  • GetTraceRange - トレースで使用する場合の武器の範囲を返します。これは、CalcWeaponFire() 、InstantFire() 、 ProjectileFire() 、AdjustAim() において実行されるものです。なお、サブクラスは、適切なステートにおいてこの関数をオーバーライドする必要があります。
  • GetTraceOwner - この武器のトレースをもっているActorを返します。トレースによって Actor が無視されるようにするために使用されます。
  • GetPhsyicalFireStartLoc [AimDir] -
  • HandleFinishedFiring - 発砲が終了したときに、武器を 'Active' ステートに戻します。
  • ShouldRefire - 武器が発砲を継続すべきか否かを返します。ショットが行われるたびに発砲ステートから呼び出されます。デフォルトの動作では、プレイヤーが発砲ボタンを押している間発砲が継続します。サブクラスは、発砲ステートにおいてこの関数をオーバーライドして動作を変更することができます。
  • StillFiring [FireMode] - 武器がまだ所定の発砲モードで発砲しているか否かを返します。
    • FireMode - チェックする発砲モードを保持します。

インベントリ

  • ItemRemovedFromInvManager - InventoryManager から呼び出され、プレイヤーのインベントリから武器が取り除かれたことを通知します。デフォルトでは、発砲を強制停止し、武器をデタッチします。
  • IsActiveWeapon - この武器が現在アクティブか否かを返します。
  • HolderDied - 武器を所有している Pawn から呼び出され、武器に対して Pawn が死んだことを通知します。デフォルトでは、武器の発砲を停止します。
  • DoOverrideNextWeapon - 武器が、次の武器へスイッチ(変更)する機能をオーバーライドできるようになります。基本的には、発砲中の武器において、マウスホイール(次の武器へスイッチできるようにバインディングされているものであれば何でも可)を使用することができるようになります。たとえば、物理ガンでは、これを使用して保持されるオブジェクトの距離を変更することができるようになります。武器の発砲ステートでのみ使用しなければ、現在の武器にかかわる切り替え機能に支障が生じます。
  • DoOverridePrevWeapon - 武器が、前の武器へスイッチする機能をオーバーライドできるようになります。武器の発砲ステートでのみ使用しなければ、現在の武器にかかわる切り替え機能に支障が生じます。
  • DropFrom [StartLocation] [StartVelocity] - Inventory から継承されます。ワールド内に武器をドロップします。デフォルトでは、発砲を停止して、武器をデタッチし、親クラスの DropFrom() 関数を呼び出すことによって、武器をドロップしてプレイヤーのインベントリから削除します。
    • StartLocation - 武器のドロップ元の位置を保持します。
    • StartVelocity - ドロップしたときに武器に与える速度を保持します。
  • CanThrow - この武器がプレイヤーによって廃棄することができるか否かを返します。
  • DenyClientWeaponSet - スイッチされることを武器が拒否すべきか否かを返します。デフォルトでは、常に false を返すように設定されています。したがって、武器はスイッチすることができます。
  • TimeWeaponPutDown - 武器をかたづけるためのタイマーを設定します。タイマーが完了すると、WeaponIsDown() 関数が実行されます。
  • TimeWeaponEquipping - 武器を装備するためのタイマーを設定します。タイマーが完了すると、WeaponEquipped() 関数が実行されます。
  • Activate - Inventory から継承されます。武器を 'WeaponEquipping' ステートに送ることによって装備プロセスを開始します。
  • PutDownWeapon - 武器を 'WeaponPuttingDown' ステートに送ることによって武器をかたづけるプロセスを開始します。
  • DenyPickupQuery [ItemClass] [Pickup] -
  • TryPutDown - 武器をかたづけようとします。武器をかたづけることができる場合は、true を返します。
  • WeaponIsDown - 武器をかたづけたときに呼び出される関数スタブです。好みのアクションを実現するには、サブクラスがこの関数をオーバーライドする必要があります。
  • ClientWeaponThrown - クライアント上で呼び出されて、クライアントに武器を捨てさせるように通知します。発砲を停止し、武器をデタッチします。
  • ClientGivenTo [NewOwner] [bDoNotActivate] - 武器が新たな Pawn に与えられるときサーバーによって呼び出されます。
    • NewOwner - 武器が与えられた Pawn を参照します。
    • bDoNotActivate - true の場合、この武器を自動的にアクティベートしません。
  • ClientWeaponSet [bOptionalSet] [bDoNotActivate] - サーバーによって呼び出され、新たな武器が Inventory に入ったことを通知するとともに、その新たな武器にスイッチするか否かを決定します。
    • bOptionalSet - true の場合、Inventorymanager が、Pawn のインベントリの中にある全武器の重み付けを比較することによって、この新たな武器にスイッチすべきか否かを決定します。true ではない場合は、スイッチが必須となり、武器の重み付けに関わらずスイッチされます。
    • bDoNotActivate - オプション項目です。true の場合、この武器を自動的にアクティベートしません。

メッシュとアニメーション

  • GetWeaponAnimNodeSeq - 武器がアニメーションを再生するために使用する AnimNodeSequence への参照を返します。
  • PlayWeaponAnimation [Sequence] [fDesiredDuration] [bLoop] [SkelMesh] - 武器のメッシュで所定のアニメーションを再生します。
    • Sequence - 再生すべきアニメーションシーケンスの名前を保持します。
    • fDesiredDuration - アニメーションを再生する時間量を保持します。
    • bLoop - オプション項目です。true の場合、アニメーションが再生中にループします。
    • SkelMesh - オプション項目です。アニメーションを再生する骨格メッシュのコンポーネントを参照します。設定されていない場合は、武器の基本メッシュが使用されます。
  • StopWeaponAnimation - 武器で再生しているあらゆるアニメーションを停止します。
  • AttachWeaponTo [MeshCpnt] [SocketName] - 武器のメッシュを固有の位置にアタッチします。
    • MeshCpnt - アタッチする骨格メッシュのコンポーネントを保持する関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • SocketName - アタッチするメッシュ上にあるソケット名を保持します。
  • DetachWeapon - 武器のメッシュを Instigator からデタッチする関数スタブです。サブクラスによってオーバーライドされる必要があります。

サウンド

  • WeaponPlaySound [Sound] [NoiseLoudness] - 武器のための所定のサウンドを再生します。
    • Sound - 再生すべき SoundCue を保持します。
    • NoiseLoudness - オプション項目です。サウンドを再生するときのボリュームを保持します。この実装では使用されません。

UDKWeapon のプロパティ

UDKWeapon クラスが独自に持っているプロパティは、ほんの数種類です。

AI

  • bLeadTarget - true の場合(デフォルト)、武器が標的になっているアクタを狙い撃ちます。即射武器の場合は、無視されます。
  • bConsiderProjectileAcceleration - true の場合、ターゲットを狙う際に、発射物の加速を考慮に入れます。

発砲とタイミング

  • AmmoCount - この武器のためにプレイヤーがもっている現在の弾薬の量を保持します。

メッシュとアニメーション

  • OverlayMesh - オーバーレイエフェクトのために使用するメッシュを設定します。

UDKWeapon の関数

AI

  • BestMode - ボットが使用するのに最善の発砲モードを返す関数スタブです。サブクラスによってオーバーライドされる必要があります。

メッシュとアニメーション

  • SetPosition [Holder] - ワールド内のガンモデルを並べるための関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • Holder - 武器を保持している Pawn を参照します。

UTWeapon のプロパティ

UTWeapon クラスにあるプロパティの大多数は、ガン系の武器を志向しています。このクラスは、個々の武器の機能を固有のものに変更していく際に、武器システムの出発点となるものです。

AI

  • bFastRepeater - true の場合、AI がこの武器を、噴射型武器または即射武器とみなします。
  • AimError - AI による各ショットに加える誤差の最大量です。
  • AimingHelpRadius - ニアミスを実際のヒットととらえる範囲です。
  • bUseAimingHelp - true の場合、 AimingHelpRadius を使用して実際のヒットを決定します。

ディスプレイ

  • FireCameraAnim - 武器が発砲した場合にプレイヤーのカメラで再生するカメラアニメーションです。たとえば、反動によるカメラの揺れなどがこれに該当します。
  • WeaponColor - インゲームの HUD 上で武器名を表示する際に使用するカラーです。
  • WeaponCanvasXPct - X 軸方向で武器によって占められるスクリーンの割合です。
  • WeaponCanvasYPct - Y 軸方向で武器によって占められるスクリーンの割合です。
  • PlayerViewOffset - 武器を配置するために使用される、プレイヤーからのオフセットです。右手に武器を所持していると想定しています。左手に武器を配置するにはこの値に -1 を乗じます。武器を中央に配置するには 0 とします。
  • SmallWeaponOffset - 小型の武器を使用する場合に適用する追加オフセットです。
  • WideScreenOffsetScaling - ワイドスクリーンのフォーマットでゲームを表示する際の、ViewOffset のための乗算子です。
  • WideScreenRotationOffset - ワイドスクリーンのフォーマットでゲームを表示する際に適用する回転のオフセットです。
  • HiddenWeaponOffset - 非表示の武器を使用する際にのみ利用される特別なオフセットです。ビームのアタッチなどのような、ある特定のエフェクトのために武器を配置するために必要となります。
  • IconCoordinates - HUD 上でこの武器のアイコンを描画するために使用される、HUD の IconHUDTexture における座標です。
  • CrossHairCoordinates - HUD 上で通常の照準を描画するために使用される、この武器の CrosshairImage における座標です。
  • SimpleCrossHairCoordinates - HUD 上で簡単な照準を描画するために使用される、この武器の CrosshairImage における座標です。
  • LockedCrossHairCoordinates - HUD 上でロックオンされた照準を描画するために使用される、この武器の CrosshairImage における座標です。
  • CustomCrosshairCoordinates - HUD 上でカスタマイズされた照準を描画するために使用される、この武器の CrosshairImage における座標です。
  • CrosshairImage - この武器のための照準を含んでいるテクスチャです。
  • StartLockedScale - ロックされた照準の最小スケールです。
  • FinalLocakedScale - ロックされた照準の最大スケールです。
  • CrosshairColor - この武器の照準を描画するときに使用するカラーです。
  • CrosshairScaling - この武器のための照準をスケーリングするときに使用される乗算子です。
  • bUseCustomCoordinates - true の場合、SimpleCrossHairCoordinates にかわって、CustomCrosshairCoordinates が使用されます。
  • AmmoDisplayType - HUD 上でどのように弾薬カウントを表示するかを決定します。
    • EAWDS_Numeric - テキスト値として弾薬カウントを表示します。
    • EAWDS_BarGraph - 棒グラフとして弾薬カウントを表示します。
    • EAWDS_Both - テキスト値と棒グラフの両方として弾薬カウントを表示します。
    • EAWDS_None - HUD 上の弾薬カウント表示を無効にします。

エフェクト

  • MuzzleFlashSocket - この武器に銃口フラッシュのエフェクトをアタッチするときに使用されるソケットの名前です。
  • MuzzleFlashPSC - 銃口フラッシュエフェクトのためのパーティクルシステムのコンポーネントです。
  • MuzzleFlashPSCTemplate - メインの発砲モードのための銃口フラッシュエフェクトとして使用する ParticleSystem です。
  • MuzzleFlashAltPSCTemplate - 全発砲モードのための銃口フラッシュエフェクトとして使用する ParticleSystem です。
  • MuzzleFlashColor - 銃口フラッシュの ParticleSystem にある MuzzleFlashColor パラメータに渡すカラーです。ただし、存在する場合です。
  • bMuzzleFlashPSCLoops - true の場合、銃口フラッシュエフェクトが、非アクティブになるかわりに、ループします。ミニガンのような即射武器に役立ちます。
  • MuzzleFlashLight - 武器が発砲したときにフラッシュするライトです。
  • MuzzleFlashLightClass - 銃口フラッシュ来とのために使用されるクラスです。
  • MuzzleFlashDuration - 銃口フラッシュがとどまる時間です。

発砲とタイミング

  • AmmoPickupClass - 弾薬をこの武器に供給する弾薬取り出しのクラスです。
  • LockerAmmoCount - 武器庫から取り出したときの、この武器のための、初期弾薬カウントです。
  • MaxAmmoCount - この武器が保持できる最大弾薬量です。
  • ShotCost - この武器が 1 回のショットで使用する弾薬量です。
  • MinReloadPct - 武器のスイッチが可能になるまでに、この武器の各発砲モードで発砲した後で経過しなければならない最小時間量です。
  • bZoomedFireMode - 発砲モードによってビューがズームするか否かを決定します。値が 0 の場合は、ズームを行いません。他の値の場合は、ズームします。
  • ZoomedTargetFOV - ズームインするときに使用される FOV (視野角)の角度です。
  • ZoomedRate - 非ズーム状態からズーム状態に (あるいはその逆に)推移する際にズームする毎秒ごとの角度数です。
  • ProjectileSpawnOffset - 発射開始位置から発射物のスポーンをオフセットするための、Unreal 単位の距離です。
  • ZoomedTurnSpeedScalePct - ズームされた武器を使用する際の、プレイヤーの回転率を調整するのに使用される乗算子です。

インベントリ

  • InventoryGroup - この武器が属しているインベントリのグループです。これは、0 から 9 までの値からなり、対応する数字キーを押すと、その武器が装備されます。
  • GroupWeight - インベントリグループ内のこの武器の地位です。同一グループの武器は、この値が高いほど優先されます。
  • InventoryWeight - インベントリ内にあるこの武器の全体的な優先度です。武器のスイッチに使用されます。
  • bNeverForwardPendingFire - true の場合、武器は、転送されたペンディング発砲を決して受け入れません。

メッシュとアニメーション

  • AttachmentClass - この武器のためのアタッチメントクラスです。
  • WeaponFireAnim - 各発砲モードで武器が発砲されるときに武器上で再生するアニメーションです。
  • ArmFireAnim - 各発砲モードで武器が発砲されるときに、(もしゲームに存在しているならば)プレイヤーのキャラクターの腕メッシュ上で再生するアニメーションです。
  • ArmsAnimSet - プレイヤーのキャラクターの腕メッシュ上でアニメーションを再生するために使用するアニメーションのセットです。
  • WeaponPutDownAnim - 武器をかたづけるときに武器上で再生するアニメーションです。
  • ArmsPutDownAnim - 武器をかたづけるときに、プレイヤーのキャラクターの腕メッシュ上で再生するアニメーションです。
  • WeaponEquipAnim - 武器を装備するときに武器上で再生するアニメーションです。
  • ArmEquipAnim - 武器を装備するときに腕メッシュ上で再生するアニメーションです。
  • WeaponIdleAnims - 武器を待機状態にしているときに、武器上で再生するアニメーションです。
  • ArmIdleAnims - 武器を待機状態にしているときに、腕メッシュ上で再生するアニメーションです。
  • PivotTranslation - この武器のための回転ピックアップメッシュの中心軸をオフセットするベクターです。
  • LockerRotation - 武器庫内にピックアップメッシュを配置するときに使用する回転です。
  • LockerOffset - 武器庫内にピックアップメッシュを配置するときに使用するオフセットです。

サウンド

  • WeaponFireSnd - 各発砲モードで武器が発砲されるときに再生される SoundCue です。
  • WeaponPutDownSound - 武器がかたづけられるときに再生される SoundCue です。
  • WeaponEquipSound - 武器が装備されたときに再生する SoundCue です。
  • ZoomInSound - 武器がズームインされたときに再生する SoundCue です。
  • ZoomOutSound - 武器がズームアウトされたときに再生する SoundCue です。

UTWeapon の関数

以下の関数は、UTWeapon クラスで初めて定義されています。このクラスに含まれている多くの関数が、他の武器クラスから継承されています。それらの関数は、他のセクションで説明されています。

AI

  • RelativeStrengthVersus [P] [Dist] - 所定の Pawn に対して使用された場合にこの武器が発揮する強さを返します。
    • P - 照合相手の Pawn を参照します。
    • Dist - 武器からターゲットの Pawn までの距離を保持します。
  • BotDesireability [PickupHolder] [P] [C] - 静的です。武器が AI にとってどのくらい望ましいものであるかを返します。次にどのピックアップを取るか AI が決定しようとするときに呼び出されます。
    • PickupHolder - 武器のためのピックアップを参照します。
    • P - AI の Pawn を参照します。
    • C - AI の Controller を参照します。
  • CanHeal [Other] - この武器が所定の Actor を回復させることができるか否かを返します。
    • Other - 回復させる対象の Actor を参照します。
  • GetOptimalRangeFor [Target] - 所定のターゲットに向かって発砲する場合の最適な距離を返します。
    • Target - 発砲の的となる Actor を参照します。
  • SuggestAttackStyle - この武器を使って攻撃する場合、AI が突撃すべきか後退すべきかを返します。常に 0 を返します。動作を変えるには、サブクラスがこの関数をオーバーライドする必要があります。
  • SuggestDefenseStyle - この武器に対して防御する場合、AI が突撃すべきか後退すべきかを返します。常に 0 を返します。動作を変えるには、サブクラスがこの関数をオーバーライドする必要があります。
  • RecommendRangedAttack - この武器が遠隔攻撃に使用されるべきか否かを返します。常に false を返します。動作を変えるには、サブクラスがこの関数をオーバーライドする必要があります。
  • RangedAttackTime - この武器を使用した遠隔攻撃の期間を返します。常に 0 を返します。動作を変えるには、サブクラスがこの関数をオーバーライドする必要があります。
  • SplashJump - 飛散ダメージ(splash damage)の効果を上げるために AI が発砲しながらジャンプすべきか否かを返します。常にfalse を返します。動作を変えるには、サブクラスがこの関数をオーバーライドする必要があります。
  • ShouldFireWithoutTarget - AI がターゲットをもっていなくてもこの武器が発砲させられるべきか否かを返します。常に false を返します。動作を変えるにはサブクラスがこの関数をオーバーライドする必要があります。たとえば、地雷を発射する武器などです。

照準

  • InstantFireTraceStart - この即射ショットのトレースを開始する位置を返します。
  • InstantFireTraceEnd [StartTrace] - この即射ショットの終点を返します。
  • InstantAimHelp [StartTrace] [EndTrace] [RealImpact] - 狙撃補助を使用している場合にニアミスかどうかを調べて、ニアミスをヒットとして返します。
    • StartTrace - ショットが行われた位置を保持します。
    • EndTrace - ショットトレースの終点を保持します。
    • RealImpact - CalcWeaponFire() 関数から返される衝撃情報を保持します。
  • GetZoomedState - 現在の、武器のズームステートを返します。
  • CheckZoom [FireModeNum] - BeginFire() から呼び出されて、ズームステートをチェックします。ズームされている場合は、発砲を終了し、true を返します。
    • FireModeNum - ズームステートをチェックする発砲モードを保持します。
  • StartZoom [PC] - ズームが始まったときに呼び出されます。ズームインサウンドを再生します。
    • PC - プレイヤーの Controller を参照します。
  • EndZoom [PC] - ズームが終了したときに呼び出されます。ズームアウトサウンドを再生します。
    • PC - プレイヤーの Controller を参照します。
  • ThrottleLook [aTurn] [aLookup] - 武器によって Pawn の回転速度が調整可能になるようにする関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • aTurn - 出力。調整された水平方向の回転を出力します。
    • aLookup - 出力。調整された垂直方向の回転を出力します。
  • CanViewAccelerationWhenFiring - 武器が発砲中にビューの加速をもつことができるか否かを返します。常に false を返します。 動作を変えるには、サブクラスがこの関数をオーバーライドする必要があります。

弾薬

  • GetAmmoCount - 武器がもつ現在の弾薬量です。
  • AmmoMaxed [mode] - 武器の弾薬が限度量に達しているか否かを返します。
  • DesireAmmo [bDetour] - この武器の、空になった「弾倉」のパーセンテージを返します。
    • bDetour - 使用されていません。
  • NeedAmmo - 武器の現在の弾薬量がデフォルトの弾薬カウントよりも少ないか否かを返します。

ダメージ

  • AdjustPlayerDamage [Damage] [InstigatedBy] [HitLocation] [Momentum] [DamageType] - 受けた Damage をこの武器を使用して調整するときに、武器の所有者がダメージを引き受けるために呼び出される関数スタブです。たとえば盾などのためには、サブクラスがこの関数をオーバーライドする必要があります。
    • Damage - 出力。元のダメージ量を保持するとともに、調整された量を出力します。
    • InstigatedBy - このダメージを与える Controller を参照します。
    • HitLocation - 加えられているダメージの位置を保持します。
    • Momentum - 出力。元のモメンタムを保持するとともに、調整されたモメンタムを出力します。
    • DamageType - 加えられているダメージのダメージタイプを保持します。

ディスプレイ

  • ActiveRenderOverlays [H] - この武器がアクティブなときに InventoryMangaer によって呼び出され、照準などの要素を HUD 上に描画します。
    • H - 描画に使われる現在の Canvas への入り口となる HUD を参照します。
  • DrawWeaponCrosshair [HUD] - HUD 上に武器の照準を描画します。ActiveRenderOverlays() から呼び出されます。
    • HUD - 描画に使われる現在の Canvas への入り口となる HUD を参照します。
  • DrawLockedOn [H] - 武器がターゲットをロックしている場合に、ロックオンのマークを描画します。
    • H - 描画に使われる現在の Canvas への入り口となる HUD を参照します。
  • ShakeView - ショットが発せられたときに、その武器の持ち主であるクライアント上で、ビューの揺れをともなうカメラアニメーションを再生します。
  • WeaponCalcCamera [fDeltaTime] [out_CamLoc] [out_CamRot] - 武器によってその所有者のカメラが調整できるようになる関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • fDeltaTime - 最後のフレームから経過した時間を保持します。
    • out_CamLoc - 現在のカメラの位置を保持するとともに、調整された位置を出力します。
    • out_CamRot - 現在のカメラの回転を保持するとともに、調整された回転を出力します。
  • CoversScreenSpace [ScreenLoc] [Canvas] - 武器が、所定のスクリーン位置を含んでいるか否かを返します。
    • ScreenLoc - チェックするスクリーン上の位置を保持します。
    • Canvas - 現在の Canvas を参照します。
  • DrawKillIcon [Canvas] [ScreenX] [ScreenY] [HUDScaleX] [HUDScaleY] - 静的です。この武器によって何かが殺されたときに HUD 上で武器のアイコンを描画します。
    • Canvas - 描画のための現在の Canvas を参照します。
    • ScreenX - 描画する位置の X 座標を保持します。
    • ScreenY - 描画する位置の Y 座標を保持します。
    • HUDScaleX - HUD の水平方向のスケールを保持します。(1024 に対応します。)
    • HUDScaleY - HUD の垂直方向のスケールを保持します。(768 に対応します。)
  • EnableFriendlyWarningCrosshair - 味方に関わる警告を出す照準を武器が表示するか否かを返します。常に true を返します。 味方を撃ったり、味方に使用したりできる武器については、サブクラスがこの関数をオーバーライドして動作を変更する必要があります。

エフェクト

  • MuzzleFlashTimer - 銃口フラッシュのタイマーの時間が経過したときに、銃口フラッシュのパーティクルシステムを非アクティブにします。
  • CauseMuzzleFlash - 銃口フラッシュのパーティクルシステムをアクティブにするとともに、それを非アクティブにするためのタイマーをセットします。
  • CauseMuzzleFlashLight - 銃口フラッシュのライトを on にします。
  • StopMuzzleFlash - 銃口フラッシュのタイマーをクリアするとともに、銃口フラッシュのパーティクルシステムを非アクティブにします。
  • SetMuzzleFlashparams [PSC] - 銃口フラッシュのパーティクルシステムにあるあらゆるカスタムパラメータをセットアップします。
    • PSC - 銃口フラッシュパーティクルシステムのコンポーネントを参照します。
  • AttachMuzzleFlash - 銃口フラッシュコンポーネントを作成し、アタッチします。武器がアタッチされるときに呼び出されます。
  • DetachMuzzleFlash - 銃口フラッシュコンポーネントを取り除き、デタッチします。武器がデタッチされるときに呼び出されます。
  • GetEffectLocation - トレーサーのような発砲エフェクトをスポーンする起点を返します。

発砲とタイミング

  • bReadyToFire - 武器に発砲の準備ができているか否かを返します。
  • ClientEndFire [FireModeNum] - クライアント上で呼び出されて、所定の発砲モードによる発砲を停止します。
    • FireModeNum - 発砲を停止する発砲モードを保持します。
  • GetPowerPerc - 武器の現在のパワーを、割合(値は 0.0 から 1.0)として返します。常に 0.0 を返します。動作を変更するには、サブクラスがこの関数をオーバーライドする必要があります。たとえば、充電したりパワーアップして、リリース時に発砲するような武器などが該当します。
  • IsFullyCharged - 武器が完全に充電されているか否かを返します。たとえば、発砲ボタンを押しているプレイヤーまたは AI からの充電です。

インベントリ

  • CalcInventoryWeight - 武器のスイッチのために使用する、武器に関するユニークなインベントリの重みを計算します。
  • ShouldSwitchTo [InWeapon] - この武器が所定の武器よりも低い優先度をもつか否かを返します。
    • InWeapon - 照合相手の武器を参照します。
  • GetEquipTime - 武器を装備するのに要する時間を返します。
  • PerformWeaponChange - この武器を所有する Pawn が武器を変更する場合に呼び出されます。
  • ServerReselectWeapon - プレイヤーが現在アクティブな武器を再選択する際にサーバー上で呼び出される関数スタブです。
  • AllowSwitchTo [NewWeapon] - この武器の所有者が、この武器をやめて所定の武器に変更することが可能か否かを返します。常に true を返します。動作を変えるには、サブクラスがこの関数をオーバーライドする必要があります。
    • NewWeapon - 変更して新たに装備する武器を参照します。
  • DetourWeight [Other] [PathWeight] - 所定のパスの重みを使用して、所定の Pawn にとってこの武器がピックアップとしてどのくらい望ましいものであるかを返します。
    • Other - 調べる対象の Pawn(AI)を参照します。
    • PathWeight - Pawn からこの武器ピックアップまでのパスを保持します。

メッシュとアニメーション

  • CreateOverlayMesh - オーバーレイメッシュのためのコンポーネントをセットアップしようとします。
  • SetSkin [NewMaterial] - 武器メッシュに新たなマテリアルを適用します。新たなマテリアルがない場合は、マテリアルがクリアされます。
    • NewMaterial - 使用する新たなマテリアルを参照します。
  • PlayArmAnimation [Sequence] [fDesiredDuration] [OffHand] [bLoop] [SkelMesh] -
  • PlayWeaponPutDown - 武器がかたづけられるときのアニメーション(複数可)を再生します。
  • PlayWeaponEquip - 武器が装備されるときのアニメーション(複数可)を再生します。
  • ChangeVisibility [bIsVisible] - 武器のビジビリティが変更されるべきときに、武器を所持している Pawn によって呼び出されて、それに応じてビジビリティを設定します。
    • bIsVisible - true の場合、武器をビジブルに設定します。true ではない場合は、武器を非ビジブルに設定します。
  • PreloadTextures [bForcePreload] - ストリームテクスチャを強制的にロードすることによって、武器が装備される前に、MIPS をストリームインします。
    • bForcePreload - true の場合、テクスチャをストリームインします。true ではない場合は、強制されたロードをクリアします。
  • SetupArmsAnim - AnimSet が特定されている場合は、アニメーションをもった腕メッシュをセットアップします。そうでない場合は、腕メッシュを非表示にします。
  • GetHand - 武器の所有者が、武器をもつのに使用している現在の手を返します。

サウンド

  • PlayFiringSound - 現在の発砲モードのための武器発砲サウンドを再生します。

付属

三人称視点もしくはプレイヤーのメッシュが見える他の視点でプレイヤーを見るとき、武器は、ビジュアル面で全く異なるプロパティ群を使用します。これは、 Attachment (付属)クラスを使用して行われます。武器はそれぞれ Attachment クラスをもっています。このクラスが保持しているものには、三人称メッシュへの参照、そのメッシュのためのアニメーション、銃口フラッシュなど他エフェクト、さらに、多数の他プロパティがあります。これらは、一人称と異なる視点から武器を見る場合にのみ使用されるものです。発砲や用法といった武器の機能を制御するプロパティはすべて、他のものと同じままです。すなわち、メインの武器クラスからもってきたものです。このようにして、三人称武器のビジュアル面に関するあらゆることがらを、自分自身のクラスに組み込むことができるので、両方の視点に共通のプロパティを複製しなくても済むのです。

attachment.jpg

UTWeaponAttachment のプロパティ

以下は、三人称視点で武器を見るときに使用される、武器のビジュアル面に関するプロパティです。

エフェクト

  • SplashEffect - この武器からのショットが水のボリュームをヒットした場合にスポーンさせるアクタです。
  • bMakeSplash - true の場合、ローカルのプロパティのための飛散エフェクトを表示します。
  • MuzzleFlashSocket - この武器に銃口フラッシュのエフェクトをアタッチするときに使用されるソケットの名前です。
  • MuzzleFlashPSC - 銃口フラッシュエフェクトのためのパーティクルシステムのコンポーネントです。
  • MuzzleFlashPSCTemplate - メインの発砲モードのための銃口フラッシュエフェクトとして使用する ParticleSystem です。
  • MuzzleFlashAltPSCTemplate - 全発砲モードのための銃口フラッシュエフェクトとして使用する ParticleSystem です。
  • MuzzleFlashColor - 銃口フラッシュの ParticleSystem にある MuzzleFlashColor パラメータに渡すカラーです。ただし、存在する場合です。
  • bMuzzleFlashPSCLoops - true の場合、銃口フラッシュエフェクトが、非アクティブになるかわりに、ループします。ミニガンのような即射武器に役立ちます。
  • MuzzleFlashLight - 武器が発砲したときにフラッシュするライトです。
  • MuzzleFlashLightClass - 銃口フラッシュ来とのために使用されるクラスです。
  • MuzzleFlashDuration - 銃口フラッシュがとどまる時間です。
  • MaxFireEffectDistance - 銃口フラッシュエフェクトが表示されるために、カメラがこの武器アタッチメントから離れていられる最大距離です。
  • ImpactEffects - さまざまなタイプのサーファスにおいてメインの Fire (発砲)モードによって生じる衝撃に使用する、マテリアルの衝撃エフェクトです。
  • AltImpactEffects - さまざまなタイプのサーファスにおいてメインの Alt Fire (もう一方の発砲)モードによって生じる衝撃に使用する、マテリアルの衝撃エフェクトです。
  • DefaultImpactEffect - マテリアル固有の適合するエフェクトをもたないサーファスにおいてメインの Fire モードによって生じる衝撃に使用する、デフォルトのマテリアルの衝撃エフェクトです。
  • DefaultAltImpactEffect - マテリアル固有の適合するエフェクトをもたないサーファスにおいてメインの Alt Fire モードによって生じる衝撃に使用する、デフォルトのマテリアルの衝撃エフェクトです。
  • MaxImpactEffectDistance - 衝撃エフェクトを表示するために、カメラがこの武器の衝撃から離れていられる最大距離です。
  • bAlignToSurfaceNormal - true の場合、この武器のために表示される衝撃エフェクトは、ヒットされたサーファスにそろえて配置されます。デカールを使用する衝撃エフェクトに役立ちます。

発砲とタイミング

  • WeaponClass - このアタッチメントを使用する武器クラスです。

メッシュとアニメーション

  • Mesh - 武器に使用するメッシュを設定します。(メッシュのタイプはここでは制限されませんが、「Unreal」では骨格メッシュを想定しています)。これは一人称メッシュです。
  • OverlayMesh - オーバーレイエフェクトのために使用するメッシュを設定します。
  • FireAnim - メインの Fire モードで発砲しているときに武器上で再生するアニメーションです。
  • AltFireAnim - Alt Fire モードで発砲しているときに武器上で再生するアニメーションです。
  • WeaponAnimType - この武器によって使用されるアニメーションのタイプです。この武器を使っている Pawn のための Animtree において、目的ノードがどのプロファイルを使うかということを決定するために使用されます。
    • EWAT_Default - Default (デフォルト)の目的プロファイルが武器によって使用されるようになります。
    • EWAT_Pistol - SinglePistol という目的プロファイルが武器によって使用されるようになります。
    • EWAT_DualPistols - DualPistols という目的プロファイルが武器によって使用されるようになります。
    • EWAT_ShoulderRocket - ShoulderRocket という目的プロファイルが武器によって使用されるようになります。
    • EWAT_Stinger - Stinger という目的プロファイルが武器によって使用されるようになります。
  • DistFactorForRefPose - 武器上でアニメーションが依然として再生されているスクリーンスペースにおいて、武器メッシュがもつ最小のサイズです。メッシュがこれよりも小さい場合は、最適化としてアニメーションが無効になります。

サウンド

  • BulletWhip - この武器からショットされた「弾丸」によって生じるサウンドです。
  • bSuppressSounds - true の場合、この武器によって生じるサウンドは再生しません。

UTWeaponAttachment の関数

以下の関数は、UTWeaponAttachment にユニークなものです。このクラスにある関数の多くには、他の武器クラスの中に対応する関数があります。それらの関数については、他のセクションで説明されています。

エフェクト

  • FirstPersonFireEffects [PawnWeapon] [HitLocation] - 必要な、一人称視点の発砲エフェクトを再生します。(銃口フラッシュなどが該当します)。
    • PawnWeapon - エフェクトを再生する武器を参照します。
    • HitLocation - エフェクトを再生する位置を保持します。
  • StopFirstPersonFireEffects [PawnWeapon] - 再生中の、一人称視点の発砲エフェクトを停止します。
    • PawnWeapon - エフェクトを停止する武器を参照します。
  • ThirdPersonFireEffects [HitLocation] - 三人称視点の発砲エフェクトを再生します。(銃口フラッシュ、アニメーションなどが該当します)。
    • HitLocation - エフェクトを再生する位置を保持します。
  • StopThirdPersonFireEffects - 再生中の、三人称視点の発砲エフェクトを停止します。
  • GetImpactEffect [HitMaterial] - 所定の物理マテリアル上のヒットのために使用する、マテリアル衝撃エフェクトを返します。
    • HitMaterial - 撃たれた物理マテリアルを保持します。
  • AllowImpactEffects [HitActor] [HitLocation] [HitNormal] - 所定のアクタに対してなされたヒットが衝撃エフェクトをスポーンすべきか否かを返します。
    • HitActor - ヒットされた Actor を参照します。
    • HitLocation - 衝撃の位置を保持します。
    • HitNormal - 衝撃が発生したサーファスの法線を保持します。
  • SetImpactedActor [HitActor] [HitLocation] [HitNormal] [HitInfo] - ショットによって衝撃を受けるアクタを設定するための関数スタブです。サブクラスによってオーバーライドされる必要があります。
    • HitActor - ヒットされた Actor を参照します。
    • HitLocation - 衝撃の位置を保持します。
    • HitNormal - 衝撃が発生したサーファスの法線を保持します。
    • HitInfo - 衝撃に関する情報をもつ TraceHitInfo 構造体を保持します。
  • PlayImpactEffects [HitLocation] - 衝撃地点で発生すべきエフェクトをスポーンします。
    • HitLocation - 衝撃の位置を保持します。

サウンド

  • CheckBulletWhip [FireDir] [HitLocation] - バレットホイップ(弾丸の鞭: プレイヤーの頭をかすめる銃弾)の有無をチェックして、その結果に応じて該当するサウンドを再生します。
    • FireDir - 「弾丸」が飛んでいた方向を保持します。
    • HitLocation - 衝撃の位置を保持します。

発射物


発射物(Projectile)とは、発射物発砲モードを使用する武器によって発射された物理的なオブジェクトのことです。武器は発射物をスポーンして、発射される方向を発射物に伝えます。残りのプロセスは完全に発射物に任されます。これらのオブジェクトは、通常、物理に基づいて自らの動きを計算し、コリジョンイベントを使用することによって、何がヒットされたのかということと、ヒットされた Actor にダメージまたはその他のエフェクトをどのように加えるのかということを決定します。

Projectile (発射物) のプロパティ

発射物のプロパティは、基本となる発射物クラスに置かれています。これらは、すべての発射物に共通のものであって、本質的に一般的なものです。

コリジョン

  • bSwitchToZeroCollision - この値が true で、さらに、この発射物が非ゼロのコリジョン範囲をもっている場合は、 bBlockNonZeroExtents=false に設定されているアクタとぶつかると、ゼロのコリジョン範囲にスイッチします。
  • ZeroCollider - ヒットされてゼロコリジョン範囲へのスイッチの原因となった Actor を保持します。
  • ZeroColliderComponent - ヒットされてゼロコリジョン範囲へのスイッチの原因となった Actor のコンポーネントへの参照を保持します。
  • bBlockedByInstigator - true の場合、発射物の Instigator が発射物とコリジョンします。
  • CylinderComponent - 発射物のためのコリジョンコンポーネントです。

ダメージ

  • Damage - 発射物がヒットした Actor(複数可)に対して、発射物が加えたダメージの量です。
  • DamageRadius - この発射物が飛散ダメージを与える衝撃地点を中心とする範囲です。
  • MomemtumTransfer - ダメージが及ぶ Actor (複数可)に対して、発射物が与えるモメンタムです。
  • MyDamageType - ダメージを与えるためにこの発射物が使用するダメージクラスです。
  • InstigatorController - この発射物がもつ Instigator の Controller への参照を保持します。
  • ImpactedActor - この発射物が衝撃を与える Actor への参照を保持します。発射物が半径によるダメージを実行していても、この Actor は常に最大ダメージを受けます。また、この Actor は HurtRadius() 関数から無視されます。

移動(movement)

  • Speed - 発射時における発射物の初期速度です。
  • MaxSpeed - 発射物が達する最大速度です。値が 0 の場合は、無制限を意味します。
  • bRotationFollowsVelocity - true の場合、発射物の回転が毎フレームごとに更新されることによって、移動しようとしている方向に発射物が常に向くようにします。
  • NetCullDistanceSquared - クライアント上で関連性があると見なされるために、発射物がカメラから離れていられる最大距離です。

サウンド

  • SpawnSound - 発射物がスポーンされたときに(すなわち発射されるときに)再生される SoundCue です。
  • ImpactSound - 発射物がワールド内で何かにヒットしたときに再生される SoundCue です。

Projectile (発射物)の関数

コリジョン

  • Touch [Other] [OtherComp] [HitLocation] [HitNormal] - Actor から継承されます。発射物が何かとコリジョンしたときに実行されます。
    • Other - 発射物とコリジョンした Actor を参照します。
    • OtherComp - 発射物とコリジョンした Actor のコンポーネントを参照します。
    • HitLocation - コリジョンが発生した位置を保持します。
    • HitNormal - コリジョンが発生したサーファスの法線を保持します。
  • ProcessTouch [Other] [HitLocation] [HitNormal] - 発射物が Instigator 以外のものとコリジョンした場合に、(Explode() 関数によって)発射物を爆発させる Touch イベントを処理します。
    • Other - 発射物とコリジョンした Actor を参照します。
    • HitLocation - コリジョンが発生した位置を保持します。
    • HitNormal - コリジョンが発生したサーファスの法線を保持します。
  • HitWall [HitNormal] [Wall] [WallComp] - Actor から継承されます。発射物が壁にヒットしたときに実行されます。デフォルトでは、(静的でない限り)衝撃を受けた壁にダメージを与え、(Explode() 関数によって)発射物を爆発させます。
    • HitNormal - コリジョンが発生したサーファスの法線です。
    • Wall - 発射物がコリジョンした壁 Actor を参照します。ただし、Actor であった場合に限ります。
    • WallComponent - 発射物がコリジョンしたコンポーネントを参照します。
  • Explode [HitLocation] [HitNormal] - 半径によるダメージを適用(ProjectileHurtRadius() 関数による)するとともに、発射物を破壊(Destroy()関数による)します。
    • HitLocation - 爆発を引き起こしたコリジョンが発生した位置を保持します。
    • HitNormal - 爆発を引き起こしたコリジョンが発生したサーファスの法線を保持します。

ダメージと衝撃

  • ProjectileHurtRadius [HurtOrigin] [HitNormal] - 衝撃の地点を上方に修正することによってワールドジオメトリを避けます。これによって、周辺の Actor へのトレースがより多く成功することになります。また、この新たな衝撃地点を使って HurtRadius() 関数を呼び出します。
    • HurtOrigin - 発射物が衝撃を与えた位置です。
    • HitNormal - 発射物が衝撃を与えたサーファスの法線です。
  • HurtRadius [DamageAmount] [inDamageRadius] [DamageType] [Momentum] [HurtOrigin] [IgnoredActor] [InstigatorController] [bDoFullDamage] - 指定された半径内に存在する Actor すべてに対してダメージを与えます。ImpactedActor に対して最大ダメージを与えるとともに、ImpactedActor を IgnoredActor として渡して HurtRadius() 関数を親クラスから呼び出します。
    • DamageAmount - 最大ダメージが適用された場合に与えるダメージ量です。
    • InDamageRadius - Actor にダメージが適用される半径(範囲)です。
    • DamageType - ダメージを与える場合に使用するダメージタイプです。
    • Momentum - ダメージを適用する際に Actor に与えるモメンタムです。
    • HurtOrigin - 半径によるダメージを適用する場合にそのダメージの元となるものです。
    • IgnoredActor - オプション項目です。発射物によって衝撃を受ける Actor です。最大ダメージが適用されます。
    • InstigatorController - オプション項目です。この発射物がもつ Instigator の Controller です。ただし、それが存在する場合です。
    • bDoFullDamage - オプション項目です。true の場合、半径内に存在するすべての Actor に対して、最大量のダメージを適用します。true ではない場合は、半径に渡ってダメージが減じます。
  • ApplyFluidSurfaceImpact [Fluid] [HitLocation] - Actor から継承されます。親クラスから ApplyFluidSurfaceImpact() 関数を呼び出して、流体サーファスアクタの ProjectileEntryEffect パーティクルエフェクトを再生します。
    • Fluid - ヒットされた流体サーファスアクタを参照します。
    • HitLocation - 発射物が流体サーファスアクタをコリジョンした位置を保持します。

移動(movement)

  • Init [Direction] - 回転と速度を設定することによって、発射物を初期化します。
    • Direction - 発射物が発射された方向です。回転を設定するために使用されるとともに、速度 (velocity)を設定するために速さ (speed)によって乗じられます。
  • RandSpin [SpinRate] - 発射物がもつ回転速度 (ピッチ、ヨー、ロール)の成分を、ランダムな値で満たします。
    • SpinRate - 各成分に入るランダムな速度がとる最大値 (正または負)です。
  • GetTimeToLocation [TargetLoc] - 発射物が現在の速さで特定の位置に到達するのに要する時間を返します。
    • TargetLoc - 目的地を保持します。
  • StaticGetTimeToLocation [TargetLoc] [StartLoc] [RequestedBy] - 発射物がデフォルトの速さである位置から他の位置に到達するのに要する時間を返す、GetTimeToLocation() の静的バージョンです。
    • TargetLoc - 目的地を保持します。
    • StartLoc - 開始位置を保持します。
    • RequestedBy - この関数を呼び出した Controller を参照します。
  • GetRange - 発射物がライフタイムの期間で移動できる最大距離を返します。

UTProjectile のプロパティ

エフェクト

  • ProjEffects - 飛行中に再生されるパーティクルシステムのコンポーネントです。
  • ProjFlightTemplate - 発射物を視覚的に表示するために使用されるパーティクルシステムです。
  • ProjExplosionTemplate - 発射物が爆発するときに再生されるパーティクルシステムです。
  • bAdvancedExplosionEffect - true の場合、ProjExplosionTemplate パーティクルシステムは、移動の方向と衝撃地点における発射物のヒット法線を、それぞれ Velocity および HitNormal パラメータに渡します。このプロパティを設定する場合、爆発パーティクルシステムがこれらのパラメータでセットアップされるようにします。
  • MaxEffectDistance - 爆発エフェクトを表示するために、衝撃がカメラから離れることができる最大距離です。
  • ExplosionDecal - 発射物が爆発する際、衝撃を与えるサーファスに対して適用するデカールです。
  • DecalWidth - 爆発デカールの幅です。
  • DecalHeight - 爆発デカールの高さです。
  • DurationOfDecal - フェードアウトするまでに爆発でカールが表示される時間量です。
  • DecalDissolveParamName - デカールをフェードアウトさせるために使用するデカールマテリアルにおけるパラメータ名です。
  • bSurppressExplosionFX - true の場合、発射物が破壊されるときに爆発エフェクトが再生されません。これが役立つのは、LimitationVolumes を使用するか、あるいは、発射物の破壊によって視覚的な爆発が生じない他の方法を使用して、発射物を破壊する場合です。
  • bWaitForEffects - true の場合、飛行が完了するまで、発射物は生き続けますが非表示になります。
  • bAttachExplosionToVehicles - true の場合、発射物がビークル(乗り物)に衝撃を与えると、爆発エフェクトが衝撃を与えられたビークルにアタッチされます。
  • ProjectileLight - この発射物のライトコンポーネントです。これがスポーンされるのは、発射物がローカルプレイヤーによって発射された場合のみです。
  • ProjectileLightClass - 発射物のライトのクラスです。
  • ExplosionLightClass - 発射物が爆発する際に使用されるライトのクラスです。
  • MaxExplosionLightDistance - 爆発ライトを表示するために、衝撃がカメラから離れていられる最大距離です。

サウンド

  • bSuppressSounds - true の場合、この発射物上でサウンドが無効になります。
  • AmbientSound - この発射物が飛行中にループ再生する SoundCue です。
  • ExplosionSound - この発射物が爆発したときに再生する SoundCue です。
  • bImportantAmbientSound - true の場合、この発射物の環境音がパフォーマンス上の理由でカットされることがなくなります。

UTProjectile の関数

コリジョン

  • Landed [HitNormal] [FloorActor] - Actor から継承されます。発射物がフロアまたはグラウンドとコリジョンしたときに実行されます。
    • HitNormal - 発射物がフロアとコリジョンしたときのサーファス法線を保持します。
    • FloorActor - 発射物がコリジョンした Actor を参照します。
  • Destroyed - Actor から継承されます。発射物が破壊されるときに実行されます。デフォルトでは、 SpawnExplosionEffects() を呼び出して、爆発をスポーンすると共に飛行エフェクトを終了させます。

エフェクト

  • SpawnFlightEffects - 発射物の飛行中に使用されるエフェクトを、スポーンおよびセットアップします。
  • SpawnExplosionEffects [HitLocation] [HitNormal] - 発射物が爆発したときに、爆発エフェクトおよびデカール、ライトを、スポーンするとともにセットアップします。
    • HitLocation - 発射物を爆発させた衝撃の位置を保持します。
    • HitNormal - 発射物を爆発させる衝撃が起きた地点のサーファス法線を保持します。
  • SetExplosionEffectParameters [ProjExplosion] - 必要に応じて、爆発パーティクルシステムに追加のパラメータをセットアップするためにサブクラスによって使用される関数スタブです。SpawnExplosionEffects() 関数によって呼び出されます。
    • ProjExplosion - 爆発エフェクトパーティクルシステムのコンポーネントを参照します。
  • ShouldSpawnExplosionLight [HitLocation] [HitNormal] - 爆発ライトがスポーンされるべきか、それとも、爆発の位置に基づかせるべきではないかを決めるブール値を返します。
    • HitLocation - 爆発の位置を保持します。
    • HitNormal - 爆発地点のサーファス法線を保持します。
  • MyOnParticleSystemFinished [PSC] - 飛行パーティクルシステムが完了したとき、そのコンポーネントによって呼び出されます。 bWaitForEffects が true の場合に、飛行エフェクトを終了させるために使用されます。
    • PSC - この関数を呼び出すパーティクルシステムのコンポーネントを参照します。
  • Shutdown - あらゆるエフェクトを終了するとともに、物理をシャットダウンし、発射物を破壊します。

移動(movement)

  • CalculateTravelTime [Dist] [MoveSpeed] [MaxMoveSpeed] [AccelMag] - 所定の移動プロパティを使用して所定の距離を発射物が移動するのに要する時間量を返す静的関数です。GetTimeToLocation() および StaticGetTimeToLocation() によって呼び出されます。
    • Dist - 移動する距離を保持します。
    • MoveSpeed - 発射物の初速を保持します。
    • MaxMoveSpeed - 発射物の最大速度を保持します。
    • AccelMag - 発射物の加速度を保持します。

ピックアップ


ピックアップとは、ワールドのいたるところに置かれているアイテムのことで、そこに行き当たったプレイヤーに対して、何らかのインベントリ関連アイテムを提供するものです。武器システムでは、武器工場 (Weapon Factories)および 武器庫 (Weapon Lockers)、弾薬工場 (Ammo Factories)といったピックアップがあります。

武器ファクトリー

武器ファクトリーでは、単一特定タイプの武器がプレイヤーに与えられます。武器ファクトリーが唯一行うことは、そのタイプの武器とデフォルトの弾薬量を、プレイヤーが行き当たったときに、プレイヤーのインベントリに入れるということだけです。ただし、武器それぞれに、それ自身のファクトリー(工場)があるわけではありません。単一のクラスが使用され、設計者が設定できるプロパティによって、どのタイプの武器がプレイヤーに渡されるべきかが決定されるのです。

weaponfactory.jpg

武器庫

武器庫は、一度にさまざまなタイプの武器をプレイヤーに渡すことができるピックアップです。武器庫が渡すことができる武器のタイプは、武器庫がワールドに配置されるときに、設計者によって配列の中に設定されます。各武器には、武器庫固有のデフォルトの弾薬量があります。これは、武器が武器庫から渡されたときに使用されるものです。

weaponlocker.jpg

弾薬ファクトリー

弾薬ファクトリーは、特定のタイプの弾薬をプレイヤーに単に渡すピックアップです。弾薬ファクトリーは、特定の武器タイプにしか弾薬を供給しません。また、プレイヤーがこの種のピックアップを使用するには、そのタイプの武器がインベントリに持っている必要があります。各タイプの武器には、独自の弾薬ファクトリークラスがあります。

ammofactory.jpg