--------

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2012-01-30

【Unity】ぴーちゃんゲームを開発してみる8

Unity[http://unity3d.com/japan]
QuadUI[http://blog.equals-equals.com/quadui]
SpriteManager[http://www.unifycommunity.com/wiki/index.php?title=SpriteManager]
作成中のゲーム(最新版)[ぴーちゃんのゲーム」 ルールはクリックすれば火が飛んでくのでそれを鶏にあてるだけ!

今回の更新では、ゲームオーバー画面を実装しました。
この前まではミサイルに攻撃が当たっても点数が減るだけでしたが
ミサイルに攻撃が当たった場合にゲームオーバーになるようにしました。
また、制限時間を60秒として設定して時間切れでもゲームオーバーになります。
スコアによってゲームレベルが変わるようにしたので、1000点を超えたあたりからミサイルがやたら多くなります。

ゲームオーバー画面のリトライボタンをGUI.Buttonで作って見ましたが
GUI.Buttonの第1引数のRectは、スクリーン上のRectになってるっぽくて
WebPlayerでブラウザ上で拡大縮小をすると、それにあわせてボタンのサイズが変わってくれなくて困りました。
とりあえずScreen.widthとScreen.heightの値を参照して、画面の中心あたりに来るように設定しましたが
拡大縮小時に大きさは変わってくれません。
スクリーンサイズに合わせてRectを小さくするようにしてみましたが、「リトライ?」の文字が変わってくれないので
あまり意味がありませんでしたので少し調査が必要そうです。

とはいえUI表示物に関しては、QuadUIはボタンなどのGUI作成向けのミドルウェアなのでこれを使えば問題はなさそうで
す。

今後は細かいパラメータ調整などを行っていって今週末にはいったん完成とする予定です。

来週からはAndroid/iPhone向けのゲームを作っていこうかと思っています。
ブログでもWebPlayerで公開をしていくつもりです。。。

theme : ソフトウェア
genre : コンピュータ

2012-01-29

【Unity】ぴーちゃんゲームを開発してみる7

Unity[http://unity3d.com/japan]
QuadUI[http://blog.equals-equals.com/quadui]
SpriteManager[http://www.unifycommunity.com/wiki/index.php?title=SpriteManager]
作成中のゲーム(最新版)[ぴーちゃんのゲーム」 ルールはクリックすれば火が飛んでくのでそれを鶏にあてるだけ!

ゲームオーバーフローがもう少しで完成、まだ実装はしていません。
後はゲームバランスの調整を少し。
ぼちぼち次の作るゲームを考え中です。

今日はデバックにデバッガを使用しないと厳しい不具合があったので
Unityのスクリプトのデバッグにデバッガを使用できるように対応しました。
デバッグはDebug.Logなどのログ出力機能を使用すればそれなりに対応できますが
まったく心当たりがない箇所でストップが発生した場合は、ログ出力で追うのはかなり厳しいので
リアルタイムで処理を追いながら値を確認できるようにしたほうが早く不具合に対応できます。
自分が対応した際、少し手順が必要だったので備忘録も兼ねて
スクリプトエディタとしてUnityについてくるMonoDevelopのデバッガの機能を使用する方法を紹介します。

デバッガ使用方法についてのマニュアル:
http://unity3d.com/support/documentation/Manual/Debugger.html

手順としては↑の記事に書いてありますので改めて書くこともないかもですが、簡単に説明しますと
1.ビルドターゲットがWebPlayerの場合はStreamの設定をはずす
2.UnityEditerのAssets->Sync MonoDevelop Project を選択
3.何かしらのスクリプトをダブルクリックしてMonoDevelopを起動
4.MonoDevelopのRun->Attach To Process もしくは↓の丸で囲ったアイコンをクリック
20120129_0.png

5.Unity Editorの項目をダブルクリック
20120129_1.png

6.ブレークをかけたい行でF9押してブレークポイント設置
7.UnityEditerでゲームの再生を行う。

これでスクリプトのデバッグが行えます。
デバッガを触ったことがない方は、このサイトが参考になるかと思います。
http://news.mynavi.jp/articles/2008/08/18/debug/index.html
書いてある内容はVisualStudio向けのものですが、MonoDevelopのそれも同じ機能ですので問題はありません。

なんかたまにバグってUnityEditerとの接続が切れた的なエラーが出ますが
この後、間違ってもUnityEditerにセーブをかけてはいけません!!
自分の環境だけかも知れませんが、エラー発生後にHierarchyビューにオブジェクトが何一つない状況になりました。
更にその状態でセーブをかけてしまったら、なんと、再度開いた際にHierarchyに何一つない状態で開始しました・・・
かろうじてバックアップを取っていたので助かりましたが、あやうく大変な事態になるところでした。
こんなこともあるので、バックアップはしっかりとっておいたほうが良いかもしれません。

theme : ソフトウェア
genre : コンピュータ

2012-01-27

【Unity】ぴーちゃんゲームを開発してみる6

Unity[http://unity3d.com/japan]
QuadUI[http://blog.equals-equals.com/quadui]
SpriteManager[http://www.unifycommunity.com/wiki/index.php?title=SpriteManager]
作成中のゲーム(最新版)[ぴーちゃんのゲーム」 ルールはクリックすれば火が飛んでくのでそれを鶏にあてるだけ!

今回の更新では
敵・お邪魔キャラの速度や、プレイヤーの攻撃の調整など
ゲームバランスに関わるところの調整をしました。。
後はゲームオーバーのフローを作成すればひとまずは全要素が実装されるんではないかと思います。
もしかしたら今週末に完成するかもしれません。
仕事の合間にポチポチつくらねば・・・

今日はなんとなくデルタタイムのお話。

http://unity3d.com/support/documentation/ScriptReference/Time-deltaTime.html


いまどきのゲームエンジンは基本設計としてデルタタイム(DeltaTime)ってのを採用しています。
これは、前のフレームから現在のフレームまでに掛かった時間の値のことでして
60fpsのゲームで遅延が発生しなければマイフレーム約18msの値が入ります。
ゲームエンジンによって、デルタタイム1あたりの単位が変わってくるのですが
Unityでは単位が秒になっているので、18msなら0.018になります。

このデルタタイムは、アニメーションをさせる場合にかなり強力な数値となります。
例えばゲームでキャラクターや弾などを動かす場合、マイフレームx方向に1mずつ移動する処理にすると
60フレームで60mほど移動する計算になります。
60fpsのゲームでは通常時は1秒当たり60m進むことが見込まれますが
もしエフェクトなどが大量に発生して処理落ちが起こり1秒当たり50フレームしか処理できなかった場合では
50mしか動かないことになります。
これがデルタタイムを使用して、マイフレーム(デルタタイム*60m)って計算を行うと
1秒当たり60フレーム処理をした場合でも、50フレームの場合でもUnityでは1秒当たりデルタタイム=1となるので
同じ60m移動するようになります。
この様な設計を「可変フレーム」と呼び、処理落ちが発生した場合でもアニメーションの中割が抜けたような
表示になるだけでゲームのテンポが一定を保たれるために最近のゲームでは結構対応されています。

スマホは性能がピンキリなので、アクションゲームなどでどんな機種でも
一定のゲームスピードを保ちたい場合は採用することをお勧めします。
ちなみにUnity上ではこんな感じで使用できます。

position.x += Time.deltaTime * 10; // 1秒当たりx方向に10移動します。




theme : ソフトウェア
genre : コンピュータ

2012-01-25

【Unity】ぴーちゃんゲームを開発してみる5

Unity[http://unity3d.com/japan]
QuadUI[http://blog.equals-equals.com/quadui]
SpriteManager[http://www.unifycommunity.com/wiki/index.php?title=SpriteManager]
作成中のゲーム(最新版)[ぴーちゃんのゲーム」 ルールはクリックすれば火が飛んでくのでそれを鶏にあてるだけ!

お邪魔キャラとしてミサイルを追加、攻撃を当てると点数が減ります。
敵が出るタイミングが一定なのはバランス調整の段で変更しようと思います。
後敵を倒すとなんかアイテムっぽいのがてお店に移動するようになりました。
更新点はそんなところ・・・

最初unityを始めた時に一緒にインポートしたスクリプトにjavascript(js)が多かったので
なんとなくスクリプトをjsで組んでましたが、最近導入しているミドルウェアはC#script(cs)が多いので
やっぱりcsで書こうかと思いそちらに浮気していました。
これがスクリプトのコンパイルエラーを引き起こしたので今日はちょっとそれについて書きます。

Unityではjsとcsのソースが混在している状態で、jsのソース内でcsのクラスを使用しようとすると
定義が見つからなくてエラーとなることがあります。
これはコンパイル順の問題で、csとjsでMonoDevelopで管理しているプロジェクトが違うため
まだ処理していないソースの定義が見つからないことが原因です。
自分はインポートしたスクリプトをいろいろいじる為にテスト用スクリプトフォルダを作ってその中にまとめて入れてました。
そこで新規に作成したcs,js入り混じりのスクリプト内で、他のスクリプトのクラスを使用していたときにこのエラーが発生しました。
js内でcsのクラスを使用しようとして、定義が見つからないってエラーでした。

これを回避する為に調べて見たところ
UnityではScriptのコンパイルの際、Projectに特定の名前のフォルダーがある場合、そちらを先にコンパイルするみたいです。
http://unity3d.com/support/documentation/ScriptReference/index.Script_compilation_28Advanced29.html
↑の記事に従って、Pluginフォルダ内に定義の見つからなかったクラスを持つスクリプトを移動させて見たところ
無事にコンパイルすることができました。

大抵のパッケージではインポートする際にスクリプトはPlugin内に作成するようにしていますが
自分が落としてきたSpriteManagerのようなソースだけのものの場合は、手動で入れてあげる必要があるかと思います。
後は、作成しているゲーム側専用のスクリプトはcsかjsどちらかだけ使う様に統一すれば
プロジェクト後半になって泣きを見ることは無さそうです。
csとjsで依存関係がガチガチになっている状態で、この手のエラーが多発した場合は目も当てられませんしね。。

theme : ソフトウェア
genre : コンピュータ

2012-01-23

【Unity】ぴーちゃんゲームを開発してみる4

Unity[http://unity3d.com/japan]
QuadUI[http://blog.equals-equals.com/quadui]
SpriteManager[http://www.unifycommunity.com/wiki/index.php?title=SpriteManager]
作成中のゲーム(最新版)[ぴーちゃんのゲーム」 ルールはクリックすれば火が飛んでくのでそれを鶏にあてるだけ!

今回の更新では、残り時間バー(見た目だけ)の配置とスコアの配置、いろいろアニメーションの追加をしてみました。
あと、まだ何もしないけどお店の配置をしてみました。
どうやら鶏に火を当てると上手に焼けましたって感じでフライドチキンになってお店に届くらしい?
テストでプレイしていてヒヨコが鶏を消毒する様がシュールな笑いを誘います。

自分の環境でWebPlayerを作成してFirefox上でテストする分には問題が無かったのですが、
他のPCの他のブラウザだとどうやら残り時間バーとスコアの表示がおかしくなるようで、この辺調査が必要そうです。
まさかUnityのWebPlayerが一部のブラウザに対応していないってことは無いと思うので
なんとなくゲーム画面のスクリーンサイズの比率が関係しているような気がしてます。

あとネットで調べてたらHPバーなどのゲージ系UIに使えそうな記事がありましたのでメモとして張ります。
このテクニックはどこかで使えそうな気がしました。
http://forum.unity3d.com/threads/42813-Health-Bar-UI

theme : ソフトウェア
genre : コンピュータ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。