CK TIPS オブジェクトを一定の速さで移動させる

オブジェクトを好きなところへ連続的に移動させたい場合は、TranslateTo関数が役立つ。

関数
TranslateTo:指定の座標までの一定の速さで移動
TranslateToRef:指定のオブジェクトの位置まで一定の速さで移動

StopTranslation():移動の停止

イベント
OnTranslationComplete:指定の位置に到着した(反応がやや遅い)
OnTranslationAlmostComplete:指定の位置にほぼ到着した(TranslateToを繰り返し使う場合にお勧め)
OnTranslationFailed:移動が中断、失敗した

使用例
水位の上昇・下降
動く床
船、ボート
空を飛ぶ敵(落下死することが多い)
高速移動する敵

補足
当たり判定について
Staticオブジェクト(岩や床、柱、家など)の場合
・オブジェクト、アクター、水面、攻撃をすり抜けて移動する。
・コリジョン自体は移動せず、元々の位置に留まる。

MovableStaticオブジェクトの場合(コリジョン設定が適切なとき)
・オブジェクトや水面をすり抜けて移動する。
・アクターとの当たり判定はあるが、軌道がずれる事は無い。
・Havokオブジェクトとの当たり判定がある。
・移動中も近接、魔法、射撃による攻撃の当たり判定があり、通常通りOnHitイベントが動く。

NPC(人、ネズミなど)の場合
・移動中はStaicオブジェクトとの当たり判定はないが、アクター同士では当たり判定がある。
・アクターとぶつかることで軌道がずれることがある。
・移動中にアクターが死んでも移動が中断されることはない。
・移動中も近接、魔法、射撃による攻撃の当たり判定があり、通常通りOnHitイベントが動く。
・高い場所から低い場所に移動させると落下死することがある(地面に当たらないように注意)

水面(Water Activator)の場合
・キーワードに「Movable」がない場合はStaicオブジェクトと同様。
・キーワードに「Movable」がある場合は水面の当たり判定も移動する。
・水面の上昇・下降速度が速い場合、NPCが水中や空中に取り残されることがある。

コリジョンを正しく移動させるためには?
1.モデルをMovable Static または、Activatorとして登録する。
2.NifSkopeでモデルの bhkCollisionObject -> bhkRigidBody の設定を次のように変更する。
 Layer:OL_ANIM_STATIC
 Layer Copy:OL_ANIM_STATIC
 Motion System:MO_SYS_BOX

参照
TranslateTo
Getting collisions to move with TranslateTo
bhkRigidBody Settings
関連記事

コメント

非公開コメント

プロフィール

vicn

Author:vicn
スクーマは一日三個まで。
リンクはお好きにどうぞ。

Twitter

検索フォーム