愚弟ブログ

アウトプットすることで自分の知識を深めていく

Unity 1週間ゲームジャム(7月)に参加した話

ブログ書くまでがUnity1Weekだからね、しょうがないね。 

今回のお題は「夏」。

Unity 1週間ゲームジャム | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

 

 投稿した作品

f:id:kitti_gutti:20170801223746p:plain

イーサン兄さんの一人ぼっちの夏休み

 

スイカのような侵略者を孤独な戦士イーサンが迎え撃つゲーム(あとづけ

某ピンクの悪魔デラックスのメガトンミニゲームのような操作性なので、懐かしんでプレイしていただけると自負している。(クオリティが高いとは言っていない

 

テーマが動詞じゃなくて困惑したが、開発者の選択肢が広がって良かったと思う。

今回は企画を練るのを早々に放棄し、最初に浮かんだ スイカ割り一本で行こうと決めた。

目隠し要素をうまく表現できる自信がなかったので、ぼっち設定にして回避。

食べ物を粗末にするのは信念に反するので、スイカのような侵略者という設定で回避。

こいついっつも回避してんな。

 

 完走した感想

こんかいも たのしかったです(小並感

 

毎回、何か新しい技術を取り入れたものを作ることを目標に参加しているが、今回は最近勉強中の3Dモデリングを取り入れることに決めていた。

使っているソフトはBlender

無料だし、日本語化できるし、書籍やネット情報も多い。

Unityもそうだが、昨今は非常に良いものがたくさん提供されており、ゲーム開発への新規参入難易度が下がっていて非常にいいことだと思う。

ただ人が増えるということは並の技術では埋もれてしまうということを意味しており、私のような人生遠回り組は喰らいつくのに必死だろう。もっと頑張る。

話が逸れたが、今回はBlenderで作成したモデルや、モーションをUnityに取り入れることを目標とした。

 

折角なので作ったものを列挙してみる。クオリティなんて気にしたらいけない。みてもらうことが重要だ。

 

スイカのようなもの

黒い部分をどうにかグニャグニャにしたかったが今の知識じゃ分からなかったので断念。

f:id:kitti_gutti:20170801230441j:plain

 

スイカのようなもの破片

砕けた時のパーティクルで使用。上のモデルを分割して、面張って、を繰り返して作った。

ほんとは皮の部分もつけたかったが、テクスチャのエクスポートや、Unity内での複数マテリアル設定がわからなかったので断念。

f:id:kitti_gutti:20170801230450j:plain

 

なにもいうことはない

f:id:kitti_gutti:20170801230457j:plain

 

釘バット

バット、釘2種類はすぐできた。

釘を範囲指定でランダムに配置したかったが、わからなかったので断念。

結局手作業で配置。

f:id:kitti_gutti:20170801230506j:plain

 

北欧神話の神様が持ってそうなハンマー

作ってて一番楽しかった。

これもほんとはテクスチャつきでエクスポートしたかった。

あとは持ち手部分の巻き付きももっとうまい方法があったんだろうなあ。

f:id:kitti_gutti:20170801230514j:plain

 

モーションとかポーズとか

人生初のモーション作り。

こちらの記事を大いに参考にさせていただきました。

gametukurikata.com

gametukurikata.com

最初は叩くモーションだけだったが、色々寂しかったのでゲーム中のUIを指し示すメタいポーズを追加作成。

間抜けな感じが出せたので、追加して正解だったと思う。

最初のUnityインポート時は右腕が捻れたり複雑骨折しててまともにハンマー振れてなかった。

Blender側の問題だと思って色々試していたが、結局Unityのインポートセッティングのほうで解決。わからなかったなあ。

 

 こんな感じで今回はBlender9割、Unity1割といった感じの1週間になった。

Unityでのシステムは最終日の昼からやっと触ったが、なんとか形にできてよかった。

これもUnityに慣れてきている証拠になるだろうか。いい感じだ。このまま精進しよう。

Unity 1週間ゲームジャム(6月)に参加した話

 

先月は参加2週間後にブログ書いてみたら内容がスッカスカだったので、

記憶が新鮮なうちに書いてみる。

 

今回のお題は「積む」。

Unity 1週間ゲームジャム | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

 

 投稿した作品

 f:id:kitti_gutti:20170626231719p:plain

イーサン兄さんの天国への階段

なんらかの理由で前に進むしかなくなったイーサン。(あとづけ設定

階段を積んで天国へと導いていこう!って感じのゲーム。

のっけからエンドレスモード。ランキングもあるよ!

マウス操作のみで遊べるので是非プレイしていただきたい。

 

スタート時の落ちていく感じは映画マトリックスのジャンププログラムのロードシーンを意識した。

趣味で作ってたので流用した。 

 

BGMは禿山の一夜。

クラシックは著作権がガバガバだと思ってのチョイスだが…?

たまたまだが先に入れてた階段の接地音がシンバルっぽくてBGMに合ってた。

 

背景のグルグルは自分が以前撮影した星空を回した。

 

完走した感想

今回も楽しかったです(小並感

 

驚異の集中力だった。

飯もそこそこに土曜日12時間、日曜日10時間ぶっ続け。

それでも遅刻投稿&クオリティはあのザマですよ。凡人はつらいよ。

 

それでも使ったことのない技術に挑戦したあたりは自分を褒めたい。

今回はAnimatorのMatchTargetに挑戦した。

まあこれだけに3日分使ったわけだが(白目

docs.unity3d.com

 

MatchTargetについて

こちらの記事を大いに参考にしました!

gametukurikata.com

tsubakit1.hateblo.jp

 

詳しいことは上記記事で丁寧にわかりやすく解説されているので、そちらを御覧いただきたい。

以下は凡人によるMatchTargetを使ってみた感想などを書く

 

最初は高さのない階段を大きめのカプセルコライダーで無理矢理登らせてた。

 

でもこれじゃ全然高度を稼げないので、何かよじ登らせようと思ってたどりついたのが、

このMatchTarget。

 この赤い壁や、黄色い階段を登っていく動きはMatchTargetを使っている。

 

自分なりにMatchTargetをまとめてみると、

「指定した体のパーツ(手足など)を指定した期間中に指定した目標地点に到達するように動かす機能」

となる。(伝われ

 

 

例えば階段を登る動きでは以下のようなパラメータを設定したanimator.MatchTargetをコルーチンで回して実現。

  • 到達させたいパーツには左足を指定
  • 期間にはアニメの左足が離れた瞬間~左足が着地する瞬間を指定
  • 目標地点には階段真ん中より少し手前の上面を指定

 

今回大量のトライエラーをしたことで、animator、mecanim含めて長時間触れた。

せっかくの知識なので今後も要所で使っていきたい。

 

つまづいた所

アニメはするが目標地点に全くマッチしない→MatchTarget中はコライダをfalseにすることで解決した。

たまにマッチしたり、マッチしても変な位置だったりしていた。

今回のキャラが自動移動するという特性上、アニメの開始はキャラのコライダの接触時としていたんだが、これにより登るターゲットがかなり近い位置にある場合が多く、登る時にコライダが引っかかってマッチできずにいた。

何故かapplyRootMotionをコライダとかガン無視すると思い込んでいたための失敗。

 

MatchTarget終了時のコライダ復活時にイーサンが上にぶっ飛ぶ→MatchTarget終了時間を調整

見た目ではもう登りきってると思いきや、コライダは階段にめり込んだ状態だったので、階段に押し出されてぶっ飛んでた。

コライダの接触が終わりそうな部分までコライダの復活を待った。

 

MatchTarget連続使用時にテンポが悪い→アニメのインポート設定のloopTimeフラグをはずすことで解決

階段を連続でポンポン登りたいのに、登る→歩く→登るのように条件を満たしてそうなのに歩くアニメがはさまってしまていた。

対象アニメのインポート設定のloopTimeフラグがONになっており、これのせいなのか遷移後もisMatchingTargetがfalseにならなかった。

マッチで使ってたアニメを裏で再生しきったらisMatchingTargetがfalseになってた模様。

 

よじ登りアニメの時に空中を掴んでいる→コライダサイズを小さくするか、MatchTarget中にコライダ切る

見えない腹のせいで目標地点まで手が届いてない感じだった。

 

 

これらのつまづいた所は、スクリプトデバッグよりも、シーンビューでマッチ部分を拡大&コマ送りで眺めていて気づいたりした。 

こういうデバッグもありだなあ。

 

 

Unity 1週間ゲームジャム(6月)に参加した話はこれにて終了。

今回も全然まとまってないじゃないか(呆れ

 まるで成長していない…

(今更)5月のUnity 1週間ゲームジャムに参加した話

 

unityroomさんのUnity 1週間ゲームジャムに参加した話を今後のブログ練習用に書いてみる。

 Unity 1週間ゲームジャムの概要

1週間ゲームジャム

Unity 1週間ゲームジャム | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

流れはこんな感じ

  1. 月曜夜にお題が出る
  2. お題に沿ったゲームつくる
  3. 日曜夜までに投稿する
  4. 投稿作品が一斉公開されるので楽しむ

 

詳細は上記unityroomさんで確認していただきたい。

 

 投稿した作品

f:id:kitti_gutti:20170610084850p:plain

イーサン兄さんの成り上がり天国

 土地を転がすゲーム。

開発小話は下の方に書く

 

完走した感想

 すごく楽しかったです(小並感

 

エンドが決まっているのは良かった。

クオリティはともかく、完成させなきゃとの思いで集中してできた。

時間が限られているので、自分の技術力を考えて、実装機能の取捨選択をした。

自分の足りない技術が見えて、今後の課題になった。

 

個人開発なので孤独な戦いと思いきや、Twitter上では#unity1weekのハッシュタグで皆さんの進捗がバンバンあがってくる。

十人十色のお題の解釈に関心するし、ネタをパクれる

皆さん進捗早すぎて焦るけど、自分もやらなきゃとモチベーションになる。

自分の進捗ツイートも反応してもらえて嬉しかった。

いい時代。

 

この週は土日が使えないのがわかっていたので、平日の朝、夜をフルに使って開発した。

いつになく脳がフル稼働して集中できたんだが、かなりきつかった。

終わったあとは燃え尽き症候群で自宅での開発にやる気が出ない(言い訳

今月は土日も使ってもう少し凝ったものを投稿したい。

楽しみ。

 

イーサン兄さんの成り上がり天国」開発小話

全くまとまってないが色々書く。

今回のテーマは「転がる」。

 

ゲーム方向性決定まで

最初は投稿作品とは全く違うピエロが玉を転がすような移動系のものを作り始めた。

でも、思うように転がらないし、絵面がクッソ地味だったのですぐやめた。

 

そのあと、「おせんころがし」なるワードが浮かんだが、ダークすぎるゲームしか思いつかなかったのでやめた。

 

ツイートには転がる、転がすで連想されるようなワードを列挙している方がたくさんいて、

その中で「土地転がし」なるワードを見つけたので採用。

 

土地の売買や、土地を寝かして地価を上げていくようなシミュレーションゲームが作れればよかったんだが、1週間じゃ無理なので土地を物理的に転がすゲームに決定。

 

土地を物理で転がすゲームを考える

生えてくる土地をガンガン引っこ抜き転がすと、その土地の値段が上がっていくようなものを考えた。

現在の総資産から生える土地のランク・見た目がグレードアップしていき、

ド派手なエフェクトで億万長者感を演出!ってのが最初に考えてたものだが、

どうしてあんなにしょぼくなった…

とにかく、このゲームに必要なパーツを大きくわけて

  • 土地
  • 転がす人
  • UI

に分類した。

 

やっと開発開始

転がす人はUnityStandardAssetのEthanくんで決定。

f:id:kitti_gutti:20170610212303p:plain

グラサンが胡散臭くてゲームの雰囲気に合っててGOOD。

 

 土地は本当はマイクラの草ボックス

f:id:kitti_gutti:20170610211944p:plain←こんなの

みたいにしたかったが、キューブにテクスチャを貼る技術も、モデリングする技術も全然足りなかったので、

キューブに草テクスチャ貼って看板を立てたもので妥協。くっそCHEAP。

ここは今後の課題だなあ。

 

UIは金額表示などを適当に。

 

土地を転がしてみた

透明な球をプレイヤー前方下方向から真上に発射して、当たったら土地を転がすようにする。

妄想ではIQのキューブの早回しのようにゴロンゴロン転がるものだったが、

現実は非情である。全然転がらない。Y方向にぶっ飛んでいくだけ。

うーん、ステージを透明な天井のやたら低い部屋に変更して、飛んでかないように修正。

壁にバウンドするPhysicsMaterialをつけて、バウンド時に下方向に物理法則を無視した急激なトルクをかけてみた。

結果、転がるというよりは、土地がのたうち回ってるみたいになったが、これはこれで味がある。

このフェーズが今回の開発で一番時間かかったかな。 

 

壁のboundソースはこんな感じ。

rb.maxAngularVelocityをいじって、で現実的な物理挙動はガン無視する。派手ならいいんだよ!

        
    private void OnCollisionEnter(Collision collision)
    {
        if (LayerMask.LayerToName(collision.gameObject.layer) == "toti")
        {
            var rb = collision.gameObject.GetComponent();
            rb.AddForce(transform.up * 10 + Vector3.down, ForceMode.Impulse);
            StartCoroutine(DelayTorque(rb));
        }
    }
    
    private IEnumerator DelayTorque(Rigidbody rb)
    {
        yield return new WaitForSeconds(0.05f);
        rb.maxAngularVelocity = 20;
        rb.AddTorque(transform.right * UnityEngine.Random.Range(5,20) + transform.up * UnityEngine.Random.Range(5, 20), ForceMode.Impulse);
    }

 

イーサンのアニメ

転がす動作といえば、ボウリングを両手で放るときの動作や、ちゃぶ台返しのような動作を思い浮かべていた。

イーサンに用意されているアニメに、しゃがみとジャンプ中のバンザイしてるアニメがあったような気がしたので、組み合わせてそれらしく見せる。

 

これもうわかんねえな。Mecanimはまだまだ勉強せねば。

f:id:kitti_gutti:20170611021407p:plain

 

結果、しゃがみこんでからバンザイしているだけのアニメが完成した。

土地を転がしているとは思えない。

f:id:kitti_gutti:20170611022235g:plain

 

何回転がったか判定

angleとりゃいいかな?angleだと逆回転わからんかな?とか考えてた。

実際は土地の回転の影響を受けない透明な球を配置(Hierarchy上で親子関係を持たせずにスクリプトで相対位置をキープ)し、その球と回転した土地が接触することで回転を判定した。

いろんな方向の回転回数の取得はこんなのしか思いつかなかった。

しかし、こいついっつも透明な球使ってんな。

f:id:kitti_gutti:20170611020253p:plain←こんな感じ

 

 UIまわり

金額表示に3桁ごとのカンマをいれたぐらいか。

sb = new StringBuilder();

sb.Length = 0;
sb.AppendFormat("{0:#,0}", 10000);

 

ここでタイトルを考えはじめる

イーサンを採用した時点で「イーサン兄さん」ていう単語が浮かんだ。

リズムとしては「所さんのまもるもせめるも」(全クリしたことない)や、「のびたの日本誕生」みたいな感じに持って行きたかった。

イーサン兄さん…の…

  • 土地転がし?(直球)
  • 不動産王?(不動産感ない)
  • アメリカンドリーム?(アメリカン感ない)
  • 成り上がり?(資産が増えていくし、これかな)

成り上がりで終わると語呂が悪かったので、「天国」をつけて金儲けでウハウハ感を出したつもり。

おそらくボキャブラ天国のリズムをイメージ。

 

小話は以上。

 

初ブログ感想

知識・経験のアウトプットって難しい。

全然まとまらないし、時間もかかる。

2週間前の出来ごとを思い出して書いてるのがいけないのかもしれない。

更新頻度の高いブログ書いている方々はすごいなあ。