2014/02/17(月) [n年前の日記]
#1 [unity] C#の継承について勉強中
Unity上で、雑魚敵の種類を増やしたいなと。しかし、敵種類を増やすごとに、アタリ判定部分に種類を追加していくのは馬鹿馬鹿しいなと。ここは、敵を管理する元クラスを作って、それを継承して雑魚敵クラスを作ったほうがいいのだろうなと。
てなわけで、C#で継承ってどうやるのか勉強中。ググってあちこち斜め読みして試してみて、変だなー、警告が出るなー、と悩んでたけど。
元クラスのメソッドを呼びたい場合は、base.Hoge(); と入れておくらしいけど、これはまだ試してなかったり。
このあたりの簡単な実験ができる、C# の環境って無いのかな。Ruby の irb とか、Python の IDLE(だったっけ?) みたいな…。そんなもの、あるんだろうか…。
てなわけで、C#で継承ってどうやるのか勉強中。ググってあちこち斜め読みして試してみて、変だなー、警告が出るなー、と悩んでたけど。
- 元クラス(基底クラス)内のメソッドに public virtual void Hoge() { } みたいな感じで、public virtual をつける。
- 継承したクラス(派生クラス)内のメソッドに、public override void Hoge() { } みたいな感じで、public override をつける。
元クラスのメソッドを呼びたい場合は、base.Hoge(); と入れておくらしいけど、これはまだ試してなかったり。
このあたりの簡単な実験ができる、C# の環境って無いのかな。Ruby の irb とか、Python の IDLE(だったっけ?) みたいな…。そんなもの、あるんだろうか…。
[ ツッコむ ]
#2 [unity] Unity 2Dを使った横スクロールアクションゲームっぽいソレがある程度出来上がってきた
大崎一番太郎のレンダリング画像を利用して、Unity 2Dの勉強、というか実験をしてたのだけど。とりあえず、現時点ではこんな感じに。2面しか作ってないけど。
_実行サンプル (Unity Web Player が必要) (2014/06/28 に差し替え)(2016/09/04,2017/03/19 置き場所変更)
「宝箱を全部取ってゴールを目指せ!」みたいなよくあるソレです。操作方法は以下の通り。
せっかくだから、現時点のプロジェクトフォルダを、zipにして置いときます。Unity も C# も初心者なので、ソースはグチャグチャだけど、それでも何かの参考になればと。
_test15_unity2d_first_20140628.zip (2014/06/28に差し替え)(2016/09/04,2017/03/19 置き場所変更)
zipに入ってる画像は、自作した画像なので好きに使ってください。プロトタイプを作る時の仮画像ぐらいにはなるんじゃないのかなと。Public Domain / CC0 ってことで。大崎一番太郎のスプライトシートも、CC0で公開されてるモデルデータを元にしてレンダリングした画像なので、自由に使えるはず。
スクリプトソースは、あちこちの解説記事のソレを、写経したり、そのままコピペしたりしてるので、ライセンスがどうなるのかよくわかりません…。とりあえず、元記事・元ネタがあるソースには、コメントで元記事URLも書いておきましたので、そちらを眺めてみていただければと。
_実行サンプル (Unity Web Player が必要) (2014/06/28 に差し替え)(2016/09/04,2017/03/19 置き場所変更)
「宝箱を全部取ってゴールを目指せ!」みたいなよくあるソレです。操作方法は以下の通り。
- 横に移動 : 左右カーソルキー
- ジャンプ : SPACEキー
- ショット : 左側のCtrlキー
- ※ Windows上なら、ジョイパッドも使えるはず。
せっかくだから、現時点のプロジェクトフォルダを、zipにして置いときます。Unity も C# も初心者なので、ソースはグチャグチャだけど、それでも何かの参考になればと。
_test15_unity2d_first_20140628.zip (2014/06/28に差し替え)(2016/09/04,2017/03/19 置き場所変更)
zipに入ってる画像は、自作した画像なので好きに使ってください。プロトタイプを作る時の仮画像ぐらいにはなるんじゃないのかなと。Public Domain / CC0 ってことで。大崎一番太郎のスプライトシートも、CC0で公開されてるモデルデータを元にしてレンダリングした画像なので、自由に使えるはず。
スクリプトソースは、あちこちの解説記事のソレを、写経したり、そのままコピペしたりしてるので、ライセンスがどうなるのかよくわかりません…。とりあえず、元記事・元ネタがあるソースには、コメントで元記事URLも書いておきましたので、そちらを眺めてみていただければと。
◎ 画像も一応貼っておいたり。 :
使った画像も一部貼っておきます。
画像だけ、zipでまとめて置いときます。Public Domain / CC0 ってことで。
_test15_unity2d_first_image.zip (5.6MB)
画像だけ、zipでまとめて置いときます。Public Domain / CC0 ってことで。
_test15_unity2d_first_image.zip (5.6MB)
◎ 2014/06/28追記。 :
コメント欄で、「プロジェクトフォルダをDLしたけど、キャラが地面の下に落ちていく」と報告していただけました。ありがとうございます。感謝します。
自分の環境でも調べてみましたが、当時使ってた Unity 4.3 と、現在の Unity 4.5 では、Box Collider 2D という、2Dアタリを判定する機能の仕様が変わっていて、そのせいで地面をすり抜けてしまうようです。( _2014/06/28の日記 に、状況をもう少し詳しく書いておきました。)
とりあえず、 _Unity 4.5 でも動くように修正した版 をアップロードしておきましたので、再度DLしていただければ…と思います。
また、「実行すると GWkが無いとエラーが出る」件ですが、タイトル画面のシーン、Assets\title.unity から実行していただければエラーは出ませんので、あまり気にしないでいただければ…と。
自分の環境でも調べてみましたが、当時使ってた Unity 4.3 と、現在の Unity 4.5 では、Box Collider 2D という、2Dアタリを判定する機能の仕様が変わっていて、そのせいで地面をすり抜けてしまうようです。( _2014/06/28の日記 に、状況をもう少し詳しく書いておきました。)
とりあえず、 _Unity 4.5 でも動くように修正した版 をアップロードしておきましたので、再度DLしていただければ…と思います。
また、「実行すると GWkが無いとエラーが出る」件ですが、タイトル画面のシーン、Assets\title.unity から実行していただければエラーは出ませんので、あまり気にしないでいただければ…と。
- GWk は、グローバル変数代わりのオブジェクト。プレイヤーのライフ数等が入ってます。
- タイトル画面に GWk を置いておいて、stage1.unity、stage2.unity では、タイトル画面からずっと生き残り続けてるはずの GWk を参照して処理をしています。
- stage1.unity や stage2.unity では、GWk を参照してエラーが出たら開発作業中と判断して、その場で GWk を発生させて、その後の処理を続ける、という流れになってます。この時に、「GWkが見つからない」とエラーが出ます。タイトル画面から順に実行されている時は、GWk が存在してるのでエラーは出ません。
◎ 2017/03/19追記。 :
DropboxのPublicフォルダが死んだのでファイルを置き直し。
2017/03/19現在、Firefox、GoogleChrome の最新版では、Unity Web Player がそもそも動かないので、この日記で公開してるソレも動かなくなってますな…。Windows10 + IE11 なら動きましたが…。
2017/03/19現在、Firefox、GoogleChrome の最新版では、Unity Web Player がそもそも動かないので、この日記で公開してるソレも動かなくなってますな…。Windows10 + IE11 なら動きましたが…。
この記事へのツッコミ
[ ツッコミを読む(2) | ツッコむ ]
以上、1 日分です。
参考にさせて頂こうとプロジェクトをダウンロードさせて頂いたのですが、キャラクターが地面の下に落ちて行ってしまうのと、
GWk is nothing
UnityEngine.Debug:LogError(Object)
SingletonMonoBehaviour`1:get_Instance() (at Assets/Scripts/SingletonMonoBehaviour.cs:26)
Player:LoadLifeValue() (at Assets/Scripts/Player.cs:329)
Player:Start() (at Assets/Scripts/Player.cs:94)
というエラーが出ています。
これはどのように対処すれば良いのでしょうか?
報告ありがとうございます。感謝します。
記事に追記、かつ、修正版をアップしておきましたので
そちらを読んでいただければと思います。