ぷらこあ

雑記/ゲームアイデア帳/成果物ぺろり

12月社内ゲームジャムの成果物「Maruta」/ BuoyancyEffector2D(浮力)の話

社内ゲームジャム成果物「Maruta

  • 12月の社内ゲームジャムで丸太を使って人を橋渡しするゲームを作った

f:id:lycoris102:20151228004930g:plain

  • 年末で参加者も少なかったため、テーマは「フリー」とした
  • 「Unity5.3の新機能である浮力で遊ぶ」というのを個人的なテーマとして作成した
  • 雰囲気は気に入ったけど、ゲームとしてはもう少し頑張りましょうな感じ
    • 人が落ちることによるデメリットがない
    • 丸太の投げ方に工夫がいらない(ひたすら上から流すだけで橋が出来る)
      • ワニ等、丸太を当てないと倒せない存在等を考えていた

BuoyancyEffector2D(浮力)で遊ぶ

  • 簡単に丸太を浮かばせることが出来たので方法をメモする

BuoyancyEffector2Dとは

blogs.unity3d.com docs.unity3d.com

BuoyancyEffector2Dの使用方法

  • (1) 力場となるオブジェクトを設置する(e.g:水のSprite/空のGameObject)
  • (2) オブジェクトに対して、Componentより Rigidbody2D および任意の Collider を設置する
  • (3) オブジェクトに対して、Componentより BuoyancyEffector2D を設置する
  • (4) Rigidbody2Dに対して isKinematic のチェックを入れる
  • (5) Colliderの範囲を浮力の効果を与えたい範囲に設定する
  • (6) Colliderの IsTrigger / UsedByEffector のチェックを入れる
  • (7) 後は浮かべたい(沈ませたい)物体に Rigidbody2D と collider を付けて投げ込むだけ!

f:id:lycoris102:20151228005131p:plain f:id:lycoris102:20151228005158p:plain

  • IsTriggerをチェックしないとColliderと衝突して楽しいことになるので注意

f:id:lycoris102:20151228005807g:plain

BuoyancyEffector2Dのプロパティ

ColliderMask

  • 特定のレイヤーとのみ接触判定を持ちたければ UseColliderMask チェックを入れ、レイヤーを指定する

f:id:lycoris102:20151228005231g:plain

SurfaceLevel

  • 水位のこと
  • Colliderの範囲内でのみ有効
  • 真横から見るのではなく多少俯瞰する形式の見せ方をするときに少し下げてあげると良さそう

f:id:lycoris102:20151228005312g:plain

Density

  • 密度のこと
    • 物体の密度がDensity(指定した密度)より大きい場合は沈む
    • 逆に物体の密度がDensityより小さい場合は浮く
  • 物体の密度は Rigidbody2D.mass や scale を変更することで調整可能
  • (Rigidbody には SetDensity という密度を指定出来るメソッドが存在するが Rigidbody2D のリファレンスには存在しない)

f:id:lycoris102:20151228005433g:plain

Flow

  • 範囲内にいる物体に力を加える(水流表現などに使用する)
  • FlowAngle: 力を加える方向(角度を入力する)
  • FlowMagnitude: 力の量(マイナス指定も可能)
  • FlowVariation: 力の量をランダムで変化させたい場合、ここに変化量を指定する

f:id:lycoris102:20151228005527g:plain f:id:lycoris102:20151228005612g:plain