初めに
CYBIRD Advent Calendar 2022
15日担当の@kanachaです
女性向け恋愛シミュレーションゲームのアプリ開発・保守をしております。アドベントカレンダーには久々の参加です
14日は(@cy-naull)さんの面倒な手作業をシェルスクリプトに任せるでした
unity1weekとは
https://unityroom.com/unity1weeks
Unityを使って1週間でゲームを作るイベントです
・ゲームを期間内に投稿(遅刻可)
・投稿者同士で作品に点数を付けたりコメントを記入できる仕組み有り
今回、私が参加したイベントのお題は「そろえる」でした
unity1weekに参加するのは3回目なのですが
今回は3Dでゲームを作ってみました
普段の業務で扱うのは2D、uGUIなので
ほぼ知識ゼロからUnity3Dについて調べることになりましたが
なんとかやりたかったことが実現でき、良い経験になりました
完成したゲーム
【操作方法】
[マウス]
カーソル操作: 照準の移動(投げる向き)
クリック長押し: 投げる強さを決める(投げる距離)
クリック離す: 浮き輪を投げる
【紹介文】
浮き輪を投げて「アヒルちゃん」をキャッチしろ!
・マウスカーソルを動かして狙いを定めます
・マウスクリック長押しで投げる距離を決めます
・マウスクリックを離せば浮き輪が飛んでいきます
・浮き輪の穴にアヒルちゃんがハマれば得点です
アヒルちゃんと浮き輪には
赤、黄、緑の色が付いています
・アヒルちゃんと浮き輪の色が同じだったら300点です
・アヒルちゃんと浮き輪の色が違っていたら100点です
「アヒルちゃんフロート」
↓作ったゲームはこちら
https://unityroom.com/games/ahiruchanfloat
学んだこと
・Unityくさい画面にしないテクニック
https://qiita.com/ruccho_vector/items/014d9751e0e63c11db39
https://kurokumasoft.com/2022/01/05/unity-lighting-tips/
全部を実践するのは正直無理そうなので
スカイボックスの変更、ライティングの調整など
自分でも簡単にできそうなところから見た目を改善
・〇〇との当たり判定は欲しいけど××とぶつかった時のみすり抜けて欲しい的な処理
https://kan-kikuchi.hatenablog.com/entry/ChangeLayer
Layer Collision Matrixを利用する
スクリプトからレイヤーを変えてしまえば動的に当たり判定を操作できる
・オブジェクトを透明にしようとすると描画順が崩壊する
https://freesoft-48784.hatenablog.com/entry/2017/10/08/234049
オブジェクトを透過するには
マテリアルのRendering Modeを“Fade”にしてMeshのアルファを変更する
しかし“Fade”になっていると描画順がおかしくなるという問題が起こるため
透過したい時だけRendering Modeをスクリプトで制御する必要がある
・ベクトルの向きをそのままに長さ(magnitude)を変えたい
https://docs.unity3d.com/jp/current/ScriptReference/Vector3.Normalize.html
ベクトルの正規化(Normalize)を行うことで
方向を維持したまま、長さ(magunitude)が 1.0のベクトルが生成される
あとはこの値に任意のスケールを乗算する
・水面でプカプカさせたい
https://hk-ryukyu.club/hideto/archives/27
Unity-WaterBuoyancyを使った
・弾道予測演出を作るのに参考にした記事
https://qiita.com/_udonba/items/860041daa27e0b7ffa6c
https://lightgive.hatenadiary.jp/entry/2017/10/28/113948
おわりに
こういうゲームを作りたい!と頭に思い描いたものが形にできるとやっぱり嬉しいです
イベント参加のたびに新しい学びがあって無駄なことは一つもないなぁと感じました
普段の仕事はチーム開発ですが
こうやって一人で全部やると見えてくることもありますよね
少ない手間でゲームをちょっとリッチな感じにしてくれるフリー素材さんは神だと思います
CYBIRD Advent Calendar 2022 (https://qiita.com/advent-calendar/2022/cybird)
明日は、(@utamakura)さんの
「MySQLデータを復旧させる方法」です
お楽しみに!