--------

スポンサーサイト

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

【Unity】にわとりを集めるゲームを開発してみる4

nUnity[http://unity3d.com/japan]
QuadUI[http://blog.equals-equals.com/quadui]
SpriteManager[http://www.unifycommunity.com/wiki/index.php?title=SpriteManager]
作成中のゲーム(最新版)[にわとりゲーム」 ルールはそろそろできそう!マウス操作でトラップをよけつつ仲間をあつめる?


今回の更新で画面スクロールを実装しました。
あと仲間の動作処理に手を加えています。

画面スクロールの手法としては、新規にオブジェクトを作って
スクロールの影響を受けるオブジェクト達をそいつの子になるようにしています。

20120213_00.png

↑の画像のTransitionがスクロール用のオブジェクトです。
スクロールの影響を受けるオブジェクトをTransitionの子にすることでTransitionのPositionを変更すれば
画面がスクロールするようにしています。

プレイヤーが画面の上端、下端に達した際にスクロール値変えることでいい感じにスクロールするようになりました。
スクロールは背景画像の範囲外までいかないようにクリッピングしています。
このような範囲を超えないような処理はMathf.Clampを使用すると便利です。
例えばスクロール値(Scroll)を0~1000の範囲にしたい場合で今回加算する値がaの場合は
Scroll = Mathf.Clamp( Scroll + a, 0, 1000 );
って式で対応できます。

Mathfには他にもMathf.Repeatという範囲を超えた分は0からの値として処理する関数が用意されています。
うまく使えばシンプルな処理にすることができるので調べておいて損はないかと思います。
http://unity3d.com/support/documentation/ScriptReference/Mathf.html

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

2012-02-13

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

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


BGMとSEが新しくつきました。(今まで忘れてた!!)
あと、敵キャラの追加とゲームオーバー時の演出を追加しました。

いくつか不具合が残っているので、後はそのあたりを修正し完成となるかと思います。
今回は報告だけです。

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

2012-02-08

【Unity】にわとりを集めるゲームを開発してみる3

Unity[http://unity3d.com/japan]
QuadUI[http://blog.equals-equals.com/quadui]
SpriteManager[http://www.unifycommunity.com/wiki/index.php?title=SpriteManager]
作成中のゲーム(最新版)[にわとりゲーム」 ルールはそろそろできそう!マウス操作でトラップをよけつつ仲間をあつめる?

仲間キャラの実装とトラップの挙動を修正
このゲームはトラップ(敵キャラ)のターンと仲間キャラ出現のターンが交互に行われる
ターン制アクションゲーム風になる予定です。

このゲーム専用の画像素材がまだできてないので、今のところ完全にぴーちゃんの使い回しです。
早いところ差し替えたいです。
先週からこそこそ進めていたぴーちゃんは原作者に調整作業を丸投げしたので自分がやるよりちゃんとしたものになって完成しそうです(笑)
完成したら改めて記事を書こうかと思っています。

今日は、スクリプト内で、別スクリプトのメゾッドやプロパティにアクセスする場合に便利な方法を紹介します。

「にわとりゲーム」では、トラップやプレイヤー、ゲームシステムやスクリーンシステムはXXXXManagerって名前でコンポーネントを作成しています。
そしてそれぞれのマネージャには、管理対象となるオブジェクト達やシステムのための定義を多く含めています。
例えば、スクリーンシステムではScreenのサイズ情報を持っており、ゲームシステムではスコアやゲームレベルの情報を持っています。
もし、トラップの行動処理を書いているスクリプト内でゲームレベルによって挙動を変えたいと思った場合には
GameObject.FindやGetComponentでゲームシステムのコンポーネントを取得してあげればゲームレベルの値を
とることができるかと思います。
ですが、ゲームレベルを使用する度に毎回この取得処理を書くのは大変面倒です。

これを楽にする仕組みの一つとして、システムレベルのコンポーネントのクラス内にstaticで自分自身を持ってしまう方法があります。
シングルトンパターンと呼ばれる手法を少し変えたもので実装できます。
public class XXXManager : MonoBehaviour 
{
private static  XXXManager   mInstance;
public static  XXXManager   Instance{
      get { return mInstance };
}

void Start()
{
  if( mInstance == null ) {
      mInstance = this;
     } else {
                 Destroy( this );
             }
}
}
こんな感じです。

他のスクリプトでXXXManagerのGameLevelプロパティを参照したい場合は、
XXXManager.Instance.GameLevel
と書けばOKです、このやり方ならソースの可読性が向上しそうです。

また、タグ名などのあまり変化しない値に関しては
staticのプロパティやメンバで持たせてしまうのもよさそうです。
public static string EnemyTagName = {
      get { return "Enemy"; }
}
自分は、当たり判定処理の際にタグであたりの種類を区別していますが、
このタグ名はstaticのプロパティを使用しています。

毎回GetComponentをするのが面倒な場合は使用を検討して見てはいかがでしょうか?

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

2012-02-03

【Unity】にわとりを集めるゲームを開発してみる2

Unity[http://unity3d.com/japan]
QuadUI[http://blog.equals-equals.com/quadui]
SpriteManager[http://www.unifycommunity.com/wiki/index.php?title=SpriteManager]
作成中のゲーム(最新版)[にわとりゲーム」 ルールはまだない!!!!!

今回の更新では、背景のスクロールを入れたのと
お邪魔キャラとしてさまざまなトラップがあるのでそれの管理処理を作成しました。
まだゲームの体をなしてはいません(笑)。

トラップ1セットでひとつのPrefabを作成して、それをランダムでひとつ作成するような仕組みにしています。
それをエネミー管理オブジェクトの子として作成し、エネミー管理オブジェクト側からトラップ処理の終了待ちを監視し、終了次第、次のトラップを作成する流れになっています。
このゲームは「プレイヤー」「トラップ(敵)」「仲間キャラ」の3要素しかないですが、まずはトラップのシステムが完成しました。
次はプレイヤーの入力操作周りを作成して行こうかと思っています。

そういえば個人的に結構お世話になっているQuadUIについて何の紹介もしていなかったのでこの場で少し紹介します。

QuadUIですが、主にボタンやトグルなどのメニュー系UI向けのフリーのミドルウェアで
ドローコールの回数を抑えてたスプライト機能を提供してくれます。
以前の記事でも書きましたがGUITextureはドローコールが多く、これでUIを組むとスマホでかなりパフォーマンスが落ちるので
スマホを考慮する場合は代替となるスプライト機能を使用する必要が出てきます。
QuadUIやSpriteManagerはその中のひとつです。

導入方法はこんな感じになります。
1.記事のトップのQuadUI公式サイトからQuadUIパッケージを落としてきてそれをインポート
(GetTheBetaをクリックすれば落とせます2012/02/03現在)
2.アルファチャンネルでアルファを指定した画像データを新規で作成したMaterialに設定する
3.MaterialのシェーダーをQuadUI->2DBackfaceCulledに設定
20120203_00.png 
4.メニューのWindow->QuadUI Editerを選択
5.Cameraタブを選んで、Generate 2D Cameraを選択
自分の場合はこんな感じ、CullingMaskで設定したレイヤーが2DCameraでの表示対象になるので
Spriteなどのレイヤーを追加してそれを割り当てると便利です。
20120203_01.png 
6.2DCameraのCameraのDepthを設定してあげる
20120203_02.png 

後は、Sceneビューでカメラの領域が視覚化されているので
その領域内にオブジェクトを配置してあげれば表示されます。

ちなみにスプライトを作成する場合はこんな流れ
1.QuadUI EditerのQuadタブを選択してMaterialの項目に、先に作っておいたMaterialを設定
2.各種パラメータを設定
PivotPointが画像の中心点の位置の設定、
Calssにはいろいろありますが、アニメーションがある場合はSpriteを、ない場合はNoneにしておけば問題がありません。
また、Spriteに設定した場合はFrameごとにuvを指定してあげる必要があります。
uvを指定する際には、Editer右側にあるツール(↓の画像)を使用すると便利です。
20120203_03.png 
上から選択範囲、範囲移動、拡大、縮小、アルファチャンネル、選択範囲をグリッドにクリップ、です。
クリップ機能を使うと指定が簡単です。グリッドのサイズを変える場合はSettingsタブのGridSizeで設定できます。
3.Bake!をクリックするとProjectのPrefabsフォルダ内にプレハブが作成されHierarchyにオブジェクトが追加されます。
4.先程作った2DCameraの領域内にオブジェクトを配置すれば画面に表示されるようになります。

これで一応表示がされます。
他にもQuadUIは、QuadUIコンポーネントを使用することでスクリーンサイズのリサイズに合わせて
カメラの設定を変えてくれる機能があったりしてWebPlayerで作る際には結構便利だったりしますが
そのあたりはまた後ほど紹介しようかと思います。

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

2012-02-01

【Unity】にわとりを集めるゲームを開発してみる1

Unity[http://unity3d.com/japan]
QuadUI[http://blog.equals-equals.com/quadui]
SpriteManager[http://www.unifycommunity.com/wiki/index.php?title=SpriteManager]
作成中のゲーム(最新版)[にわとりゲーム」 ルールはまだない!!!!!!


Android/iPhone向けのゲームの開発のチュートリアルとして
解像度をWVGA(800*480)、タッチ操作による入力を想定したゲームを作ろうかと思っています。
今回作成していくゲームは、謎の空飛ぶにわとりを集めつつさまざまなトラップを潜り抜けていく
ピクミンと横スクロールシューティングを足して2で割ったような内容になる予定です。

微妙に前作のぴーちゃんを調整しながらやっていたので、↑のリンク先にあるゲームはゲームの体をなしていません(笑)
とりあえずタッチ操作によるドラッグの操作っぽい機能だけはいっているので
にわとりが上下に動きます。今のところそれだけです。

入力のインターフェースがInputクラスにいろいろ用意されているので
手始めにタッチ入力が取れそうなInput.GetTouchを使用して見ましたが
PC環境ではマウスクリックでタッチ処理のエミュレーションはしてくれないらしくまったく反応してくれませんでした。
恐らくタッチ処理はPC環境の場合はInput.GetMouseButtonを使ってスマホ環境の場合は
Input.GetTouchを使用するように切り分けすることが必要っぽいです。

http://feedback.unity3d.com/forums/15792-unity/suggestions/399052-editor-conditional-script-compilation-based-on-platform

↑を参考にしてこんな風に処理の切り分けを行いました
#if _PC
// mousedown
#else
// touch
#endif

大体2週間くらいで完成すればよいかなーとは思っています。
仕事の合間にポチポチやらねば・・・

続きを読む

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

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