原題 : Animations
原文 : http://community.bistudio.com/wiki/Animations
翻訳時期 : 2009 Feb.
この項では、車のドアや戦車の砲塔のような軸回転するパーツのような簡単な単一のp3dアニメーションについて記していきます。
例えば兵士の動きのような複雑なアニメーションと、これとは一緒にはできませんが。。。
モデルのアニメーションの作成に必要なもの:
- 分解LODの中で、可動パーツに名称を付与します
- もしアニメーションを、ジオメトリLODやにも適用するのであれば、セレクションをコピーしてそれらのLODの中に入れてあげてください。
- MemoryLODの中に、回転する軸として2つの頂点を定義します。両方の頂点を選択し、名前を付与してください
- MemoryLODの中に、単一の頂点を作成(これは’action point’になります)し、名称を付与してください。
次にこのあなたのモデルのConfig.cppの中に、2つのクラス(Animations と UserActions)を定義してやる必要があります。Animationsクラスはオブジェクトをどんな稼働にするのかを定義し、 UserActionsクラスは稼働の契機を定義します。
次の事例は、”door”と名称づけられたオブジェクトのもので、”door axis”と名称づけた軸の周りを回転するようになっています。’action point’(アニメーション作動のスイッチを入れられるプレイヤーの接近範囲には、”doorbell”と名付けました)。
class Animations
{
class MoveDoor
{
type="rotation"; // 常に"rotation(回転)"
animPeriod=1; // 作動から終了までにかかる時間
selection="door"; // 可動するオブジェクトに付けた名称
axis="door axis"; // 軸に付けた名称
angle0=0 // 開始時の角度
angle1=-2.0; // 終了時の角度、ラジアン( = 度÷57.3 = 度 × 180 ÷ π)
};
};
class UserActions
{
class OpenDoor // ドアを開けるアクション
{
displayName="Open Door";// アクションメニュー上の表示名
position="doorbell"; // 'action point'の名称
radius=1.5; // プレイヤーがこのアクションを見えるようになる範囲
condition="this animationPhase ""MoveDoor"" < 0.5";// ドアが既に動いたかどうかを判定
statement="this animate[""MoveDoor"",1]"; // アニメの開始かそうでないか
onlyforplayer = true; // ArmAから必須。AIがこのアニメを使用できる、
// または使用できないをもっともらしく定義
};
class CloseDoor // ドアを閉めるアクション
{
displayName="Close Door";
position="doorbell";
radius=1.5;
condition="this animationPhase ""MoveDoor"" < 0.5";
statement="this animate[""MoveDoor"",0]";
onlyforplayer = true;
};
};
免責事項 : 個人的に訳した文書ですので、もし翻訳された文章により何らかの損害、不利益が発生したとしても、一切の責任は負いませんのでその点をご留意の上お読みください。また原文に記載されている権利に基づき、利用にあたっては非商用利用にのみに限定されていますのでご注意ください。