あさちゅんのゲームブログ

UnityやSiv3Dに関するゲーム開発メモを残していきます

10時間ハッカソンで3Dゲーム作りました!

今週の日曜日、6月28日に10時間ハッカソンに行ってきました!ちなみに10時間ハッカソンって言うのは、自分の所属サークルWCEのイベントでその会ごとのテーマに沿ってみんなゲームを一つ作ります。今回のテーマは「連鎖」でした。


作ったゲーム


テーマが「連鎖」ということで無難に落ち物パズルがやってみようかな、とか思ってたら食物連鎖なんて言葉もあったなと思い出して、ライフゲームみたいにしようってなって合体させました!ちなみに落ち物パズルライフゲームも作ったことないです笑
ハッカソンとかだとやったことないことに挑戦できるのがいいですね、つらいけど


遊び方は下に生き物ブロックがあって草はシマウマに、シマウマはライオンを食べて増えて行くので生態系を出来るだけ維持しようって感じです。プレイヤーは上の雀を操って雨を降らせて草を増やしたり腐らせたり、動物を溺死させて間引くことができます。


いい感じに行くとこれくらい育ちます。たまに草が大量繁殖してプレイヤーが動けなくなるのが味噌です笑

苦労したこと

何がやばいってやっぱ物理演算とプログラムの同期でした。ほんとは配列とかにブロックの状態を入れたかったんですけど、落下途中だったり消されかかってたりしたらどうしようってなってRaycastでごり押しする羽目に、、

あと、動物が草を食べるのに草の位置に移動するのですが、GameObject.Destroyは消えるのがフレームの最後なので、まず草を地下に追いやってから動物を草の位置に瞬間移動させていました。瞬時破棄する関数もあるのですが非推奨なんですよね。これはこれでKinematicではないコライダーのpositionをいじるのは再計算が発生するとかでよくないのですがうまいやり方が思いつかなかったです。

頑張ったこと

Rigidbodyの動ける軸を制限できるのを最近知って、これでy軸だけにしたら綺麗に落ちるんかなとか思ったら望み通り綺麗に落ちて良かったです!

Unity - スクリプトリファレンス
Rigidbody.constraints

ブロックが1mの立方体で、1mごとに並んでいるんですが、このままだと微妙に引っかかってしまうのでコライダーをx,z軸の方向だけ小さ目にしたらかなりいい感じになりました。xz平面方向は移動を制限しているので関係ないですしね

直したいこと

残り一時間でシーン遷移やら説明やらを突っ込んだのでもう少しちゃんとしたかったです。あとハイスコアの保存とか。

あと、なぜかゲームパッドの取得に失敗したのでそこもかな

今回初めてハッカソンで3Dに挑戦しましたがやっぱり大変ですね、もっと3Dに慣れなければ!

使用したソフト
Unity 5.1.1