投稿記事

Unityの記事 (25)

WL 2021/09/13 00:04

9/12更新分

こんばんは。先週に比べて暖かくなったので食べ残したガリガリ君を食べてます。
以下進捗報告です。


今週分の年貢です。

実装

今週は以下のような変更があります。

  • 初期デッキを選択できるようになった
  • 様々な手段でカメラを荒ぶらせることができたのを修正
  • マスの見た目を変更
  • すごろく中の画面にボタンを追加(追加しただけ)

先週同様WebGLビルドをアップロードしてwebから遊べるようにしたかったんですが、UI Toolkitをアップデートしようとしたときにぶっ壊れたらしく、なんかビルドできなくなったので申し訳ないのですがなしです。
ビルドターゲットが違うと思うのでエディタでプレイボタンを押したときは動くのにいざビルドしたらうまく行かないというのはまあ許すとして、エラーメッセージを読んでもほぼなんの手がかりもないのはやめてほしい.....

今の所Unityはコオロギよりは好きです。


日付が変わってしまうので少ないですが終わりたいと思います。
先週目標だった分が全然できてないのでちょっと一週間の量を減らそうと思います、が、このペースだと絶対二年では終わらないので悲しいですね。
とりあえず来週には

  • マスを踏んだときにカードを取得する
  • 自分のデッキの状態を見られるボタンを作る
  • カード用のアセットを用意

くらいができたらいいなと思ってます。

では来週もよろしくお願いします。お元気で。

WL 2021/09/05 23:24

9/5更新分(追記あり)

こんばんは。急に涼しくなりましたね。まだガリガリ君が8本くらい残ってて処遇に困ってます。
以下進捗報告です。


なんか色がどうやってもしっくり来なくてモノクロです。すみません。
キャラクターデザイン自体を変える必要がありそうな気がしてるので多分変えると思います。

全般

この主人公のお姉さんの名前はミレーさんにしました。

実装

今週はマジで進捗が悪く、全然進んでません。ごめんなさい。

WebGL build

これにかなりの時間を費やしたんですがなんか全然できなくて発狂しそうになってました。
私のUnityプロジェクトはUniversal Render Pipelineテンプレートから作ってるんですが、このテンプレートはwebGLビルドを簡単にpublishするプラグインみたいなやつが使えないらしく、ゆとり世代には厳しいものがあります。じゃあ普通にビルドしたやつをアップロードしたろ^^と思ってもなんかプログレスバーが半分で止まるという謎の現象に見舞われ、ググってもよくわかんなくて泣きそうになってます。

代わりと言ってはなんですが私がチュートリアルを見ながら作ったクソのカーティングゲームでも遊んでいってください。誤解のないように申し上げておくとこれはほとんどテンプレートで、私がやったのはスタートしてすぐ置いてあるアホみたいなジャンプ台を置いたことくらいです。
これでコースの外に出られるので実質オープンワールドゲームと言っても過言ではないでしょう。

追記
その後ガチャガチャやってたらできました!!
問題はzipに不要なファイルが含まれていた事っぽかったです。吐き出したフォルダに前にビルドしたwindows向けビルドのファイルが残っていて、それを消し忘れていたのが良くなかったんでしょう。
ご覧の通り現状クソのカーティングゲーム以下ですががんばって面白いゲームにしていきたいと思います。
追記の追記
すごろくの操作方法はクリックでマスに移動、右クリックしながらドラッグで視点移動です。移動できるマス(行ったことのあるマスにつながっているマス)はマウスオーバーするとあらぬ方向に回転するので判別できます。

UI Toolkit

すごろくにUIをつけようと思いました。思ったんですが、


こんなかんじに右上にボタンを出そうとすると画面全体を覆うコンテナを作って、flexで中のボタンの位置を調整する感じが普通な気がします。
しかしこれをやると、画面全体を覆っているコンテナが Physic Raycasterのrayをブロックしてしまい、すごろくがマウスポインタに反応しなくなってしまいます。
これも多分Unityを知らないがゆえに相当アホなことをやってると思うんでそのうち解決することでしょう。多分...

webGLなんもわかんなくて泣きそうになってたら一週間終わりました。本当に何もなくて申し訳ないです。
来週は今週の目標だったところまでできたら言うことないですが無理そうな気がします。しかし最低でもwebGLをwebから遊べるところまでやりたいと思います。
webGLビルドはできたんでとりあえずデッキを構築する仕組みからやっていこうと思います。

では来週もよろしくお願いします。お元気で。

WL 2021/08/29 17:55

8/29更新分

こんばんは。クーラーをずっとつけてるので室外機のところが海みたいになってました。機械がこんなビショビショになってると心配になりますが大丈夫なので面白いですね。
以下進捗報告です。


記事の最初に入れた画像がサムネになるのでえっちなやつを上に持ってきました。

実装と完全に独立して描いてるので、Unityに虐○されればされるほど相対的に絵の進捗がよくなり、CG枚数の多いリッチなゲームになります。

念の為申し上げておくとこれは未完成品で、ゲームに入る絵はもっと気合入ったやつなのでご安心ください。
今後週一枚くらいで似たようなやつを掲載できたらいいなと思ってます。

全般

ゲームシステムを思いついたので備忘録的に書き留めておきます。

  • Slay the Spire 風にデッキを作る
  • ボス以外の戦闘マスでは 自分が作ったデッキとお姉さんのデッキを戦わせる
  • お姉さんのデッキは自分が作ったデッキとの対戦成績によって強化される
  • ボスマスではお姉さんのデッキとボスのデッキを戦わせる
  • 勝利条件:お姉さんがボスに勝つ
  • 敗北条件:自分またはボスのデッキがお姉さんを倒してしまう
  • 自分のデッキを育ててお姉さんをいい感じに痛めつけることによって間接的にお姉さんのデッキを育て、ボスを倒す

改めて書き出すとクッソ複雑なゲームですね。このどうしようもない複雑さによって以下のような問題を解決することが期待されています:

  • この手のゲームでよくあるわざと負けたほうがえっちな展開になりやすい問題(ゲームクリアのための方針とすけべぴくちゃを見るための方針が同じでない)
  • 操作キャラクターが女性で陵○ものなのにシチュの内容を選択できることには説得力がない問題
  • グッドエンドでは最終的にお姉さんに幸せになってほしい

「いいじゃん、パクったろ^^」と思っていただいた方は私の代わりに作っといてください。多分あなたのほうが私より作るの早いので...

実装

Unity Learnというサイトを見つけました。Unityに関する体系的な知識を手取り足取り教えてくれるコースがUnity公式によって用意されており、かなり有用です。
今までAPIリファレンスと首っ引きでやってたんですが、Unityとしてはそういうことではなくこっちを見て学習することを想定してたように思えます。問題はほぼ英語なことで、日本語のコースもあるにはあるのですが非常に数が少ないです。もしこれをご覧の中高生の方がいらっしゃいましたら、英語の勉強を真面目にやっておくことを強くおすすめします。英語に対する抵抗感がないというただそれだけで得られる情報が何十倍にも増えます。あとこんなもん見てんじゃねえ。

Input system

前回3Dオブジェクトへのマウスオーバーを検出するのができなくて詰まってたんですが、結論から言うとColliderをオブジェクトにつけていなかったのが原因でした。この記事にあるやり方を使っていたのですが、Physic Raycasterからキャストされたやつ(?)(これなんて言えばいいんだ...)がColliderを持っているオブジェクトにしかぶつからないというわけですね。多少Unityわかってる人なら当たり前じゃんって言いそうなことですが、マジで右も左も分からないのでこういうところで初狩られてしまいます。ちゃんと問題を切り分けて別のオブジェクトで試すとかしてればもっと早く解決できたと思うので次回に活かしたいと思います。

その他

他の前回の目標だった部分はなんかすんなりいきました。スクショを貼っても何が起きてるか分かりづらいのと、録画が超めんどくさかったのでビジュアルがなにもないんですが許してください。UnityからWebGLでビルドしてアップロードできるらしいので、現時点での状態をwebから遊べるようにしてもいいかなと思ってます。


今週はおおまかなゲームシステムを思いつけたのでよかったです。これが面白ければ言うことないんですが、まあどうでしょうね。祈りましょう。

来週は

  • webGLビルド(できたら)
  • デッキを構築する仕組み
  • 対戦マスのかんたんな実装
  • お姉さんの名前を考える

くらいまでできたらいいかなと思ってます。Unity Learnも引き続きやっていくので、もしかしたら全然時間なくてカスみたいな進捗になるかもしれません。

では来週もまたよろしくお願いします。お元気で。

WL 2021/08/22 13:03

8/22更新分

こんにちは。蒸し暑すぎるせいか今横を見たらいつの間にかカーテンがカビてました。
以下進捗報告です。

実装

先週どこまでやったかな~と思って見返したら実質的にマジで何もやってないという感じでした。今週はすごろくを自動的に生成するやつをやる予定でしたね。

すごろく

ここですごろくと呼んでいるものはいわゆるローグライクゲームのマップっぽいやつです。戦闘マスがあったりショップマスがあったりして、たいてい最後にボスマスがあるやつですね。Slay the Spire、One step from eden、アークナイツの統合戦略などをイメージしていただくとわかりやすいかもしれません。
今回は超適当に以下のようなロジックで生成することにします。

  1. マップの長さを決める
  2. マップの幅を決める
  3. それぞれの深さの地点に対して、1~幅の深さまでのランダムな数マスを置く
  4. マス同士をつなぐ

ではやってみましょう。
モデルを作って...


Unityでシーンを作ってぶち込みます

あとはスクリプトを書いてランダムにマスを生成するようにします

思ったよりうまく行ってビビりました。これは深さ8、幅3で作ってます。

困ったこと:エラーメッセージの読み方

次のようなコードを見てみましょう。

public class Node {
	List<GameObject> next;
	void Start()
    {
    	next = new List<GameObject>();
    }
    public void AddNext(GameObject o)
    {
    	next.Add(o);
    }
}

Start より先に AddNext を呼んだ場合、 next が未初期化なのでエラーが出ます。問題はUnity上でのエラーメッセージの内容で、

NullReferenceException: Object reference not set to an instance of an object
Node.AddNext (UnityEngine.GameObject o) (at Assets/Scripts/Sugoroku/Node.cs:47)
MapManager.Generate () (at Assets/Scripts/Sugoroku/MapManager.cs:35)
MapManager.Start () (at Assets/Scripts/Sugoroku/MapManager.cs:10)

こんな感じになっています。私がC#に慣れていないのが悪いのかもしれませんが、こう言われるとただのリストである next ではなくゲームオブジェクトの o が疑わしいように読めませんか??これは最初全然わからなくてかなり時間と体力を吸われました。

InputSystem

カメラをぐりぐり動かしたりマスをクリックで選択したりできるようにしたいという問題があります。この目的を達成するためにInputSystemというのを使うことにします。

今3Dオブジェクトをマウスオーバーするのが検出できなくて苦戦してるんですが、これは私がUnityを知らなすぎるだけなので明日にはできてることでしょう。多分...


今週はそこそこ進んだと思うんですが、今の所エロさのエの字もないので折角見ていただいた方をがっかりさせてしまっていないか心配です。並行してイベントスチルを描いたりしてますので来週はそのラフでもアップできたらいいなと思ってます。
実装の方は

  • カメラで見回す
  • 主人公のアイコンをマスに沿って動かす
  • 前回と同じ流れで タイトル画面->すごろくスタート->すごろくの最後のマスに行くとゲームクリア みたいな感じにする

とかができたらいいなと思います。

それではまた来週もお願いします。お元気で

WL 2021/08/15 11:10

8/15更新分

こんにちは。今日は雨が降っていて嬉しいです。
一人でやってるんでめちゃくちゃ遅いと思いますが暖かく見守ってやってください。100週(≒2年)以内に終わればいいな、くらいの感じでやっていきたいと思います。
以下進捗報告です。

全般

今回作るゲームはざっくり次のような感じにしたいと思います

  • 楽しい
  • ゲームプレイ中にシコれる
  • しばらく(6ヶ月後とか...)後に思い出してやりたくなる

などと言うのは簡単で、じゃあどうすんだよって話なんですが、某お船のゲームや某ウマのゲームのようにメインのゲームシーンではプレイヤーが介入しないようにすればゲームプレイ中に右手を特定の作業に集中させることができていいんじゃないかな〜とか、いま大はやりの広義におけるローグライクでリプレイ性を担保できるんじゃないかな〜とか考えてます。
とはいえこんなのどうせ作ってるうちに変わるのでゲーム内容を保証するものではありません。ゲームジャンルとかに対する言及が一切ないのは単に決まってないからです。どんなに頭の中でこねても面白くなかったら意味ないしな…

実装

昔の偉い人は言いました。「完璧を目指すよりまず終わらせろ」と。昔の人じゃなかった気もしますがまあそれはよくて、今回は私もまず終わらせるところから始めたいと思います。
具体的には、タイトル画面でゲームスタートをクリックした瞬間ゲームクリア画面が表示されるものを作ります。これでもうゲーム一本完成ってワケ。チョロいですね。

UI Toolkit

UnityでUIを作るのは非常にしんどかった思い出がありますが、今どきのやつにはUI Toolkitというやつがあるらしいのでこれを使っていきます。

実際に触ってみたところCSSでスタイリングするっぽいんですが、CSSには個人的な恨みがあるので最終的には3Dオブジェクトを置いてUIを作るかもしれません。でもそれはそれでしんどいからこういう機能が作られてるんだろうな...

今回は普通にUI Toolkitを使ってボタンを設置しました。次に、ボタンをクリックしたときに他のシーン(今回はエンディング)を読み込むコードを書きます。恥ずかしながらC#のイベントというものを知らなかったのですが、ラムダ式を使うと

    startButton.clicked += () =>
    {
        SceneManager.LoadScene("Ending", LoadSceneMode.Single);
    };

このようになって見た目が可愛いですね。初見だと絶対意味不明なので読む前に書けてよかったです。
話は変わりますがUnityの公式ドキュメントはこのようなガチ虚無のページがそこそこあってつらいです。2行くらいでいいから使用例みたいなの書いてくれ...

シーン遷移

なんとUnityでシーン遷移する方法を知らない(もしくは忘れた)ので調べながらやりました。Build Settingsでロード対象のシーンを入れなければならない点などに初狩られましたが、無事
このボタンをクリックすると...


エンディングが表示されるものができました!!!!!!!!!!!

なんかアスペクト比がイカれてたりするんですがよくわかんなかったので放置してます。というかこれCanvasで背景画像を出してるんですが、UI ToolkitとCanvasが混在してるのは良くない気がします。ググっても古い情報がいっぱいあってよくわからんしUnityの本とか買ったほうがいい気がしてきました。

これで一週間かかっているようでは一生終わらないので、来週はもっと頑張りたいと思います。先にゲームメカニクスを作りたいので、○verdungeonのすごろくみたいなマップをランダム生成するやつをやっていきます。
それではまた来週よろしくおねがいします。お元気で

1 2 3 4 5 »

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索