12月社内ゲームジャムの成果物「Maruta」/ BuoyancyEffector2D(浮力)の話
社内ゲームジャム成果物「Maruta」
- 12月の社内ゲームジャムで丸太を使って人を橋渡しするゲームを作った
- 年末で参加者も少なかったため、テーマは「フリー」とした
- 「Unity5.3の新機能である浮力で遊ぶ」というのを個人的なテーマとして作成した
- 雰囲気は気に入ったけど、ゲームとしてはもう少し頑張りましょうな感じ
- 人が落ちることによるデメリットがない
- 丸太の投げ方に工夫がいらない(ひたすら上から流すだけで橋が出来る)
- ワニ等、丸太を当てないと倒せない存在等を考えていた
BuoyancyEffector2D(浮力)で遊ぶ
- 簡単に丸太を浮かばせることが出来たので方法をメモする
BuoyancyEffector2Dとは
- Unity5.3にて追加された浮力エフェクターのこと
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 を付けて投げ込むだけ!
- IsTriggerをチェックしないとColliderと衝突して楽しいことになるので注意
お客様の中にBuoyancyEffector2Dに詳しい人はいらっしゃいますか!? SurfaceLevelに衝突後、沈んで浮かんで停滞して欲しいのだけど、物体側のmassとか影響してるのかな… https://t.co/OOwfyK2Mve
— 青木とと(ˊᗜˋ*) (@lycoris102) 2015年12月26日
BuoyancyEffector2Dのプロパティ
ColliderMask
- 特定のレイヤーとのみ接触判定を持ちたければ UseColliderMask チェックを入れ、レイヤーを指定する
SurfaceLevel
- 水位のこと
- Colliderの範囲内でのみ有効
- 真横から見るのではなく多少俯瞰する形式の見せ方をするときに少し下げてあげると良さそう
Density
- 密度のこと
- 物体の密度がDensity(指定した密度)より大きい場合は沈む
- 逆に物体の密度がDensityより小さい場合は浮く
- 物体の密度は Rigidbody2D.mass や scale を変更することで調整可能
- (Rigidbody には SetDensity という密度を指定出来るメソッドが存在するが Rigidbody2D のリファレンスには存在しない)
Flow
- 範囲内にいる物体に力を加える(水流表現などに使用する)
- FlowAngle: 力を加える方向(角度を入力する)
- FlowMagnitude: 力の量(マイナス指定も可能)
- FlowVariation: 力の量をランダムで変化させたい場合、ここに変化量を指定する