ユーセンブログ

ゲーム開発に関することをたまに書きます

【Lumberyard】箱に物理を導入する

Lumberyardアドカレの6日目です。 Lumberyardで箱を出して物理を導入するだけの簡単な記事です。 使用したエンジンは1.11.1です。

Lumberyardで箱を出す

Lumberyardで単純な箱などのオブジェクトをを出すのはちょっとわかりにくいので紹介します。 LumberyardではUnityやUE4のように箱やカプセルなどの単純なオブジェクトをEntityの作成時に作れません。 しかし、単純なメッシュ自体はデフォルトで存在しているのでそれをアサインしてやれば使えるようになります。 手順は以下の通りです。

  • エンティティを作成
  • MeshをAdd Component
  • MeshのMesh Assetの「…」をクリックしてGame/Objects/Primitives/Box1x1.cgfを選択

f:id:k_tachiban:20171205222847p:plain

箱が表示されるようになりました!

primitivesには箱以外にもいくつかあるのでそれらをアサインすればとりあえず表示するオブジェクトには困らずに済みます。

面白いところだと「egg_001.cgf」「egg_proxy_001.cgf」なるモデルがありました。

f:id:k_tachiban:20171205223217p:plain
マジタマゴ

箱に物理をつける

作成した箱が物理挙動をするように設定するやり方です。 なんとなくで結構進む気がしたんですがそんなことはなく。 作成した箱のエンティティに以下の操作をしてください。

  • RigidBodyPhysics をAdd Component
  • Mesh ColliderをAdd Component
    • この時、~Shapeとprimitive colliderを代わりにAddすることでシンプルなコリジョンで動かせるようになります・
  • (1.10以前)RigidBodyPhysicsの「at rest initially」のチェックを外す。

f:id:k_tachiban:20171205230908g:plain

物理で動いた!

はまりポイント

オブジェクトの表示から物理を入れるまでは比較的簡単にいくのですが一部のモデルはMeshColliderをつけて物理を効かせようとすると動きません。

Primitivesの中だとproxyと書かれているものセットのモデルはproxyと書かれているモデル以外は動かなくなります。

どうしても動かしたい場合はShape系とprimitive colliderでシンプルに動かす必要があります。

あと、検証はしてませんが自前のモデルもMesh Colliderを使いたい場合はMaya、blenderの専用プラグイン通さないとダメな気がします。

まとめ

Lumberyardで物理をやる場合、UnityやUE4と比較して若干制約があるっぽいので何も見ずやったら案外はまりました。 今回の記事がにぎやかしくらいにはなればと思います。