--------

スポンサーサイト

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

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

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

引き続き作業・・・

今回はオブジェクトの親子関係の構築と
画面外にオブジェクトが移動した場合に自動で削除する機能を実装してみました。

オブジェクトの階層関係はこんな感じに

ひえらるきー


InrangeManagerってのは子のオブジェクトが画面外に移動したら自動的に削除する機能を持っています。
敵キャラとプレイヤーの弾(火)をこのオブジェクトの子として作成することで
親となるInrangeManagerから監視可能な仕組みにしてみました。
今後画面内を移動するオブジェクトを作る場合は移動処理だけ作ればよいので楽になりそうです。

前回、UnityではUVの指定ができないとか書きましたが
QuadUIのソースを見ていたら、普通にスクリプトで処理を書けばできることが分かりました。

方法としては、まずクアッド(2ポリゴン4頂点)なメッシュデータを用意して
MeshFileterに設定、その後スクリプトで4頂点分のUV座標を
MeshFilter::mesh::uvにセットしてあげれば変更できます。
128*128サイズのテクスチャの左上から64*64を貼り付ける場合はこんな感じになります。

var meshfilter : MeshFilter = gameObject.GetComponent( typeof(MeshFilter) );
Vector2[] uv = new Vector2[4];
uv[0] = new Vector2(0.0,0.0);
uv[1] = new Vector2(0.5,0.0);
uv[2] = new Vector2(0.0,0.5);
uv[3] = new Vector2(0.5,0.5);
meshfilter.mesh.uv = uv;

とはいっても、スプライトの手法としてはネットに洗練されたものが
わりと転がっているのでそれを使用するのが手っ取り早いですね。
自分は今のところQuadUIを使用していますが、
SpriteManagerっていうUnityコミュニティの有志が作成したスクリプトがあるので
それを使うのもよいかもしれません。

SpriteManager:
http://www.unifycommunity.com/wiki/index.php?title=SpriteManager

調査中なので後ほどまとめようかと思っていることですが
Unityに標準でついているGUITextureでも2Dゲームは作れますが
これはドローコールと呼ばれる描画コストが非常に掛かるので
↑のサイトにも書かれていますが、スマホ向けとして開発する場合は
GUITextureを使用するのは禁止したほうがよいと言われています。
ドローコールの回数はパフォーマンスに直結するので
スプライト機能を使用する場合は定石としてネットに転がっているものを
使用するのがよいかと思います。

興味があるので、ネットにあがってる複数の手法でのパフォーマンスの違いを
今度調べて見ようかと思っております。
スポンサーサイト

theme : プログラミング
genre : コンピュータ

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