2012/8/18 土曜日

建物を作ろう 上級者編 その? ガラスのダメージ表現

Filed under: Armaアドオン製作支援,  ─house編 — gachopin @ 10:56:41

今回のファイルはこちら

今回はガラスのダメージ表現を考えます。
前回まで使っていた青いドアをガラス製にします。

作業手順は以下のようになります。
?fireジオメトリのrvmatをガラス用に変更
?モデルにHitpointLODを追加
?ドアにガラスのテクスチャ、rvmatを貼る
?model.cfgのsectionsにドア名を追加、model.cfgとconfig.cppの追記

以下詳細

?
Fire geometry LODで青いドアの当たり判定モデルを選択しEボタンでFace propatiesを選択し、Materialで前回選択したironplateからca\data\penetration\glassplate.rvmatに変更します。
これで弾丸が貫通し、撃つとガラスの割れる音がします。

?
d3
HitPointsLODを追加します。
新しいLODを作り(右クリック->new)、右クリックでHitPointsを選びましょう。
0LODから青いドアのモデルをコピペし、shift+Dで1つの点に変換します。(点はドアモデルの中央に位置します)
door_bというセレクション名をglass1に変更します。

?
0LODの青いドアにca.pboの壊れたガラスのテクスチャを貼ってみます。
d1
front viewにてaボタンを押してテクスチャ編集モードになり、右クリック→Load textureでCA\data\Destruct\destr_glass_buildings_full_ca.paaを選び、ドアの大きさにドラッグします。
再びaボタンでテクスチャ編集モードを抜け、ドアを選択した状態でBボタンを押し、テクスチャを適用します。
d2
ブルドーザで見るとこんな感じ。

貼り終わったら再びドアを選択し、EボタンでFace propatiesを選択し、Textureで#(argb,8,8,3)color(0.4,0.4,0.4,0.3,CO)と書きます。
Materialにはtest_building\glass.rvmatを指定しておいてください。壊れる前のガラスのrvmatです。
Applyを押すと先ほど貼ったガラスが割れたから、ただの半透明な見た目に変わります。
これで、「ガラスが割れたテクスチャのマッピング(テクスチャの位置情報)を持っているドア」が出来ました。

?
configでモデルの一部をガラスとして扱う関係で、model.cfgのsectionsにdoor_bを追加する必要があります。
sections[]={“door_b”,”door_r”}; ← 一応赤いドアも追記

ガラスは割れたら当たり判定ごと消えるようにします。
ダメージを負ったら消えるようにする」には、config.cppmodel.cfgの連携が必要です。

まずはmodel.cfg内にclass glass_destruct、class door_b_destructを定義しました。
source=“Hit_door_b”;はこれからconfigで追記する定義になります。

次にconfig
class Damageでダメージテクスチャのrvmatを定義。(割れる前、半壊、全壊の3つのファイルが1セットになります)

class HitPointsにclass Hit_door_bを追記。
Hit_door_bのarmor = 0.0001;はこのクラスのarmor値に0.0001を掛けたものを表します。つまり500×0.0001で0.05です。
銃弾が数発当たったらダメージテクスチャに切り替わるように調整してみました。
建物によって異なる値になると思いますので、トライアンドエラーしましょう。

class AnimationSourcesにclass Hit_door_bを追記。
これで「消えるアニメ」がhitpointsに関連付けられます。

ガラスのダメージ表現は複雑なので、model.cfgとconfig.cppの関係を図にしておきます。
d4

追記:UserActionsのOpenDoorのpositionはdoor_bにしました。これでdoor_bがダメージを受けて消えた後、アクションメニューも一緒に消えてくれます。

ガラスのダメージは少し手間ですが、一度自分の建物を作ってしまえばあとは継承だけで楽になりますので、頑張りましょう。

HTML convert time: 0.161 sec. Powered by WordPress ME