6コンテンツへスキップジカセイテツ【開発日記】ゲームプロデューサーになろう(9~11日目)◆やったことドット絵の勉強開始エクセル風UIパーツの制作引き続き試しにUnityに突っ込んでみた。口述の通りサイズ感の問題はあったが、なかなか雰囲気は出てきてないかしら◆困ったことUnityの画面サイズをlandscape(960×600)で制作していたため、イラストソフトでも960×600ピクセルで制作したところ、Unityに画像をインポートした際小さく表示された。Unity上で1.4倍すると丁度収まった。ゲームプロデューサーになろう(8日目)にコメント【開発日記】ゲームプロデューサーになろう(7日目)※Gifアニメです。3:this.project.DecideProject3(tmpPropNum);break;}}◆次やること一通り実装が終わったので、UIパーツの制作に移ります。ゲームプロデューサーになろう(7日目)にコメント【開発日記】ゲームプロデューサーになろう(6日目)※Gifアニメです。時間経過をボタンに出すこれらが終わったら、エクセル風UIのリソース制作に移ります◆気づいたことあえて区切りの悪いところで終わらせることで、次に取り掛かるときのハードルを低くするという開発ハックを思いつきました。└間の空いてしまったプロジェクトなので、前まで何をやっていたのかさっぱりわからなかった。その振り返りに時間を使った。モチベの上がらない作業なので、なるべく減らしたい部分である。・実際にウィンドウで選んだゲームを、作るゲームとしてUIに表示させること・ゲームが完成した時の報酬を、マスタデータから参照すること└ゲッターセッターでうまくいかなかったので、メソッドの引数としてマスタのIDを渡した。Projectクラス:作っているゲームの進捗処理やUIの更新を管理Proposalクラス:新しく作るゲームの情報や、ゲーム提案フェーズのUIを管理Buttonクラス:提案フェーズで提案されたゲームを選んだ時にProposalが持っているマスタIDをProjectへ橋渡しするButtonクラスにマスタIDを渡し、さらにProjectクラスからButtonクラスへマスタIDを参照したがうまくいかなった。理由は不明だが、下記の通りButtonクラスから直接ProjectクラスへマスタIDを引数として渡したらうまくいった。・ゲーム内で複数のゲームをラインとして同時に作るとき、それぞれの進捗の仕方はそれぞれのクラスで管理することになる。共通の挙動も多いため、本来ならクラスの継承をつかうべきところな気はするが、新しいことをあんまりやりすぎると時間がかかって集中力が落ち、モチベが下がるので、複数クラスを用意する力業で行こうと思う。◆アイデア結局自分は絵が描けないため、既存のアセットに頼っている。うまくはまればよいクオリティのものができるが、ハマるものを探し続けていくうちにモチベが下がっていくことも考えられる。将来的なことを考えると、少しずつでもデザイン作業をやれるようになっていきたい。イラストを描くのもハードルが高い。いうことで、難易度を落としつつチープに見えないためのアイデアとして、UIをエクセルなどのスプレッドシート風にしてみると面白いかもしれない。ゲームのコンセプトにも合致するし。ゲームプロデューサーになろう(2日目)にコメント【開発日記】フットバ出前Unity1week「あつい」にて制作。作品URL:https://unityroom.com/games/huttobademaeやりたいことはいろいろあったが、結果的にはかなりオミットすることになった。ボトルネックになったのは、パラメータの強化システム。ここの解決に時間を食った。具体的に言うと、あるスクリプトで定義した変数を、ほかのスクリプトで呼び出し、変更し、再定義すること。基本的にGetter/Setterを使うことは分かった。ほかのスクリプトから変数の値を参照するhttps://qiita.com/Teach/items/8d1cdb90a3b533707c9a【初心者向け】変数ではなくプロパティを公開するシーンをまたいでデータを参照する【初心者向け】変数ではなくプロパティを公開する※FindObjectOfTypeを利用してGetterを使うやり方はできない?⇒シーンに存在するオブジェクトから探してくるっぽいが、ボタンオブジェクトにくっつけたスクリプト内でGetter/Setter関数を使ってもうまくいかない。staticな変数を取得、変更しても、同じ変数名で中身が異なるものが複数存在するような状況になってしまった。"円";}}tmpPowerValueは、別スクリプトで定義したパワーの値をGetterで取得して格納している。仮に10が入っているとして、これを実行すると、中身が10のtmpPowerValueと11のものが同時に存在するような状況に。staticなものとして宣言することで意図するような挙動となった。残念ながら理由はわからない。変数の寿命の問題だろうと考えている。このメソッドの中で変更した値が、クラス全体で共有されてないとかそんな感じ。クラス変数と、メソッドの中でしか有効でない変数について、勉強する必要がありそうだ。トバ出前にコメント【開発日記】ゲームプロデューサーになろう(仕切り直し初日)◆こんなゲームにしようコンセプト:ゲームを作るゲーム必要な仕様:・開発するゲームが提示される・選んだゲームトップ画面に表示される・選んだゲームバーをアサインできる・時間が経過するとアサインされたメンバーの能力に応じて、ゲームが進捗する・ランダムイベントが起こる・ゲームが完成するとポップアップが表示され、報酬が受け取れる。・完了したゲームはトップ画面に表示されなくなる・メンバーや設備に投資する・次のゲームが提示される(以上を繰り返す)◆新たな試み・ゲーム内で制作するゲームを外部マスターとして管理する。アチーブメントをスプレッドシートで管理して実装するhttps://note.mu/azumagoro/n/n1e915ab38eadScriptableObjectとして作成したデータを取り出す◆トラブル途中でUnity1Weekが挟まって開発期間が意図せず長くなってしまっている。今作では、この外部マスタを使ったデータの管理が新しい学びになったので、その他の機能の部分はある程度シュリンクさせて、とりあえず完成させることを優先しようと思う。本当は、開発メンバーにも信長の野望みたいに個性を持たせたかったが、クッキークリッカーのようにリソース(=数字)と割り切ってそれを増やしていくタイプの強化に割り切ろう。強化の仕組みはUnity1weekのフットバ出前で習得したので時間かからずできるはず。1件のコメント【開発日記】ブタさんパズル3つ目はジグソーパズルに挑戦。その開発中トラブルや思ったことの備忘録@Unity2017.3→途中から2018.2.1・開発のきっかけアクションゲームを2つ作ったので、アクションじゃないものが作ってみたかった。豚肉の部位毎のおいしい食べ方をきちんと理解したかったので、豚肉のパズルにすることにした。ピースを持ったときにその部位の名前と、おいしい食べ方を覚えられるゲームを目指した。参照:http://nekosuko.jp/blog/?p=267タッチした座標(スクリーン座標)と、オブジェクトが存在する座標(ワールド座標)とは全くの別物であり、変換する必要がある。スクリーン座標をワールド座標に変換した後は、オブジェクトのtransform.positionにその座標をフレームごとに直接ぶち込んでやることにした。0);}・ピースの上でタッチした時だけそのピースを動かせるようにするピースの中心座標を取得し、そこから一定の範囲にあるときだけ動かせるようにした。ジャンプ自体をVelocityを直接書き換えるジャンプに変更。Tilemapを複数用意して、タグをつけ分け、空中の足場はリセットされないタグで囲むのも手か12345678一方、ジャンプカウントをリセットするためにTilemapにFloorタグつけると、空中に足場を設置する際に、足場の下部や側面に触ってもジャンプカウントが復活してしまうという別の問題が起きたそこで、ジャンプカウントのリセットをy方向のVelocityが0になったときに行うようにしたすると、Addforceを使ったジャンプではジャンプ幅を均一にするためにVelocityをリセットしているのでジャンプ回数の制限が機能しないことに気づいたジャンプ自体をVelocityを直接書き換えるジャンプに変更。ジャンプ幅も均一になるし、ジャンプカウントのリセットとも競合しないただし、足場に頭をぶつけた瞬間Velocityがゼロになるので、そこでジャンプカウントがリセットされてしまう模様Tilemapを複数用意して、タグをつけ分け、空中の足場はリセットされないタグで囲むのも手か・タイトル名を最初カッコつけて「フォックスフロッグ」とかにしていた(それでもそのまんまだが...)Unityroomでは、ゲームを遊ぶかどうかの基準はタイトル名とSSのみ。エモいタイトル名にするより、何をするゲームなのかわかりやすいタイトルのほうがたぶん遊ばれやすいかなと思う。