今までの進捗まとめ。8ヶ月分

去年の10月頃から始めた2Dアクションゲーム制作の進捗まとめです。

その月に何やったか一言程度でまとめていきます。

2016/10

・知ってる知識でとりあえず適当にアクションぽいものを作る。

f:id:donnpema6:20170605210257g:plain

 

2016/11

・Animaterの使い方を覚える。

f:id:donnpema6:20170605210616g:plain

 

2016/12 

・フィールドを手作業で作るの面倒なので自動生成を作り始める

 何から始めていいか謎だったのでとりあえずサイズしてして矩形の部屋を作る

f:id:donnpema6:20170605211950g:plain

 

2017/1

・不思議なダンジョンの作り方とか調べながら作ってみる。

 2Dアクションでこの作り方はどうなんだ?と疑問。

f:id:donnpema6:20170605211024g:plain

2017/2

・4方向に穴の開いたプレファブを用意して組み合わせる事にした。

 ローグ系の2Dゲームでローグレガシー、vaganteなどを参考にした。

 しかしうまくいかない。

f:id:donnpema6:20170605211014g:plain

2017/3

・とりあえず部屋はつながりスタートとゴールは結べた。

f:id:donnpema6:20170605211020g:plain

2017/4

・適当にキャラ置いて動かしてみる。がなんか操作が気持ち悪かったり。

 あと狭い。

f:id:donnpema6:20170605214340g:plain

2017/5

そもそもプレイヤーの組み方間違ってね?と思い組みなおし。

2Dアセット系のプレイヤーを参考にした。あと部屋を広くした。

f:id:donnpema6:20170605213550g:plain

 

そして現在に至る。

振り返ってみてると1ヶ月分の進捗遅いなーと思ったり。

1週間の作業時間だいたい3時間~12時間程度なので。

しかし、8ヶ月間も細々と続けられてるのが怠け者の自分にしては奇跡みたいな事のような気がします。仕事をしながらゲーム作るの本当に大変だなーと思いつつも、今まで通り自分のペースで作り続けると思います。

前作の収益が0円だったので100円ぐらいほしい。

2D Platformer Corgi Engineを買ってみての雑多な感想。

更新が2月で終わっており生きていますという報告。

ブログ更新するのぶっちゃけ面倒くさいのにこれ続けている人しゅごい。

 

そして本題。Unityのアセットストアには完成版プロジェクトという物が売っています。

あんまり自分のゲームにあったアセット売ってないので利用した事はあまりありません

が、今回は思い切って買いました。

その名も2D Platformer Corgi Engine。

https://www.assetstore.unity3d.com/jp/#!/content/26617

 

簡単に言うと2Dアクションの完成版プロジェクトです。$60でいい値段する。

買った経緯はもうどうやって作ったらいいかよく分からなくなってきたからです。

 

主にプレイヤー周りなのですが、プレイヤーの状態が増えてきました。

適当に列挙すると、着地、上昇中、下降中、壁ズリ、壁蹴り、一方通行の床、はしごなどなど。

 

これらを判定するにはUnityのOn〇〇Enter系とかではもう判定するのは厳しいです。初期段階の箱に乗るとかそのレベルなら可能ですが、プレイヤーが複数の状態になるアクションを作ってくるともう上下左右にレイを飛ばして判定しないと作れない気がします。

とかとか色々本当にこの実装で合っているのだろうか?という疑問が常に付きまとって集中できなかったのでもう答えを見ようという事で購入。

 

そしてここから買った感想です。

まだすべてのソースは読んでいませんが、もう目から鱗です。

ソースを見比べると色々間違っている所が分かってきます。

例えばプレイヤーのRigidBody2Dの状態をkinematicにする。

そしてプレイヤー自体の移動はtransfome.translateで行うなど。

自分はDynamicでRigidBodyのvelocityで動かしていました。

アセットの方は何か物理的な力が加わったときのみvelocityに値を入れてました。

確かにそっちのほうが正しい気がする。

他にはレイを飛ばすのでレイを可視化してデバッグを行いやすい状態にしているとか

Debug.Ray?とかで描画していました。

他にも2Dアクションだけでなく2.5Dとかマルチ対戦とか色々サンプルがあって$60は安いなと最終的に思えました。(思うしかない)

とまぁ色々有益な情報が入っており踏み込んだアクションの作り方の記事って実際少ないです。探し続けるのも正直手間ですしまとまった情報を購入したほうが早いです。

 

ただし!ソースが多いのでやる気が萎えます。正直仕事かよとか思ってしまいます。

それに最初から見るのはオススメしないです。

なんというか大きな壁を突き付けれれるみたいな感じがしてやる気が一気になくなる

と思います。

ある程度つくってから見たほうが、「自分はこうやってるけどアセットはこうやっているのか」とか分かってまだ理解しやすいです。

漫画のよくわかる心療内科で「何かを始める時に情報を入れすぎないほうがいい」とかツイッターのTLみてたら出てました。

たしかに、自分も暗闇の中一歩ずつ進んでいるからまだ開発を続けられていますが、

「完成まで10年かかります^^」とか知ったら挑戦する気なくなりますよね。

見えないから楽しくて続けられるのだと思います。

 

という事でソース解析とテスト作るのが面倒だったのでブログを書いて「あー今日はめっちゃ開発した」という気になって終わります。

なお半年作り続けて完成率20%です。

 

コワーキングスペースについて

私は自宅で作業できない系の人です。

なぜなら家にいるとゲームやらフートンやら食料やらあって遊んで食って寝るという

愚行に及ぶからです。

なので友人から「コワーキングスペース」なるものがあると助言を貰いそこで作業している感じです。

そして私が利用しているのはビズコンフォートという所が運営しているコワーキングスペース

bizcomfort.jp

なんか宣伝みたいになってきた。

他の都内のコワーキングスペースと違う所は無人で24時間利用可能で安いという所です。土日祝日コースで場所によりけりですが3000-5000円。全日コースで1万くらい。これより安いコワーキングはありません。1時間ぐらい探しても見つかりませんでした。見つけたら教えてください。それとカフェとかで作業するより安いと思うんですよ。自分は長時間居座るのは気が引けますしかといって注文し続けるのもお金がかかるのでコワーキングがあってました。

ネットも電源もありますし、ウォーターサーバーとインスタント系の粉末もあります。

それに静かでオシャレBGMが流れていて落ち着きます。

人も一杯にならないように適度な契約人数に絞っているのでパンパンになることはありません。逆に人がいることにより適度な緊張感があります。誰もいないと怠けたい放題ですから。

 

更に宣伝っぽいので個人的デメリットの提示しておきます。

・鼻をすする人がいる(汚い)

・タイピング音がでかい人がいる(気が散る)

・深夜とか一晩中寝ていびきをかく人がいる(帰って寝ろ)

とか全部人的な物なのでここらへんは利用してみないと分かりません。

個人的なデメリットそのぐらいでしょうか。音とか気にならない人なら上記の物は

全然気にならないと思います。

なので都内で集中するスペースがほしいという方にはオススメです!

結局宣伝じゃねーか!

Unity 2D アイテム 取得 当たり判定

2D系の敵がバラまいたアイテムの当たり判定の処理です。

探しても見つからなかったので描きます。

 

この記事の読者レベルは中ぐらいです。リジッドボディってなに?ってレベルの人にはお勧めしません。

 

本題に入りますが、2Dアクションでよくある「敵を倒したらコインとかアイテムとかばら撒いて死ぬ」みたいな事があると思います。

先ほど作っていたのですが困った事が発生しました。以下をご覧ください。

f:id:donnpema6:20170115051507g:plain

 

ばら撒かれたコインの物理の影響を受けてプレイヤーが吹っ飛ぶバグです。

 

原因としてはOnCollisionEnter2D()で処理しているという事です。

ならばOnTriggerEnter2D()を使えばいいという話ですが、

地面にコインが撒かれるのでCollider2D系のIsTrigerをONにすると地面もすり抜けてしまいます。だからOnTriggerEnter2Dを使用していたのですが当たった瞬間の処理ではないので物理の影響を受けてしまいました。

マリオとかの空中に浮いてるコインならばOnTriggerEnter2Dで事は済むのですが。

 

で自分なりに考えた解決策です。あってるか分かりませんが問題は解決しました。

当たり判定用のオブジェクトを用意するです。

f:id:donnpema6:20170115052757p:plain

物理的な挙動はMoneyObjという親のオブジェクトに任せます。親にはなにもスクリプトを付けていません。

その代わりプレイヤーとの接触判定は子の当たり判定用のMoneyCollというオブジェクトに任せます。これはRigidBodyを持ちませんあくまで当たり判定のみを行うので。

ポイントなのが、親のオブジェクトより大き目の当たり判定にしておく。以下参考画像f:id:donnpema6:20170115053241p:plain

外側の円のCollider2Dが子の当たり判定でIsTrigerをONにできます。

これでプレイヤーとの当たり判定ができかつ物理の影響をなくす事ができます。

地面との物理的な挙動は内側の親のCollider2Dが勝手にやってくれます。

一応ソース貼っておきます。 

gist3a4ead7c231f9da27e9b6bf00bcf04ff

 

他に良い方法があったら教えてください。

以上です。

 

Assertion failed on expression:'m_RectTransform'

f:id:donnpema6:20161211172659p:plain

Canvasの中に2DObjで生成した物がいるとタイトルのエラーが表示されます。

たぶんSpriteRendereがいるから怒られると思います。外に出してください。

これに陥る原因として間違えてCanvasにD&Dするぐらいです。

厄介なのが2DObjを非表示にしても言われるということ。

CanvasはあくまでもUIを表示する所だからそれ以外の表示物は置くなという事らしいです。

エラーダブルクリックしてもスクリプトに飛ばないし、m_RectTransformなんて宣言してないし少し時間を持っていかれました。

こういうエディター系のエラーはその対象物を赤く表示してほしいですよね。

以上です。

 

Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can pre

タイトルの警告文の解決方法。

警告文をダブルクリックすれば警告を出しているコードに飛んでくれます。

(VS2015の場合、Monoは知らん)

だいたい生成したオブジェクトをどこかの子にするコードに飛びます。

childObj.transform.parent = parentObj.transform;  

↓修正

childObj.transform.SetParent(parentObj.transform);  

に変えると警告が消えます。

 

昔のバージョンは最初のコードで良かったと思いますが、

新しいバージョンでは警告が出るようです。

いつからでるようになったかは知りません。

 

それでは開発頑張ってください。

新潟縦断の開発秘話

アプリ紹介のページがないので作成しました。

 

新潟縦断

新潟縦断

  • Takayuki Wada
  • ゲーム
  • 無料

 
https://play.google.com/store/apps/details?id=com.donnpema&referrer=utm_source%3Dappbrain%26utm_medium%3Dappbrain_web%26utm_campaign%3Dappbrain_web

 

このアプリはとにかく1カ月でリリースする、それが出来なければゲーム開発は二度と行わない事という事を決めて開発に取り掛かったアプリです。

だらだらと1年間作り始めてやめての連続でエターなるになっていたので「自分はゲーム開発に向いてはいない」「開発をしているという自分に酔っているだけ」と本当に口だけの人間になりそうだったので突貫で作成しました。

※エターなる...開発が長引き永遠に完成しないこと。エターナルになる。エータなる。

アプリの内容はクリッカー系です。新潟を5地域に分け各地域を動物が走って縦断していくという内容です。

操作方法はタップするか、放置するかの2択です。

タップするとなぜかお金が貰えるので、そのお金でより早い動物を購入して距離を

稼いでいくという物になります。

 

あと、クソゲーです!

1カ月で満足できるゲームがつくれるわけないだろ!

僕の考えた最強のゲームなんて作り始めたらそれこそエターなるルートですよ!

 

なので1カ月で作り切れる内容にして作り切ったという形になります。

 

ちなみに収益は0です!

UnityAdsは100回以上再生されないとそもそもお金を換算してくれません。

Google+Appで総DL数宇は20くらいだったと思います。そういうことです。

 

ようやく個人開発者としてのスタートが切れた感じです。

このアプリを戒めとして次のゲームを作成している途中です。

携帯アプリ作るのはやはり性に合わないのでPC向けで2Dアクションのゲームを

制作中です。

エターなるにならないようにがんばります。