真っ黒な画面ではつまらない!
ってことでそろそろゲーム画面を作ってみましょう!
まず↓の画像をassetsフォルダに追加します。
追加した例
次に、この画像を読み込めるようにします。
TextureResource.javaに以下のテクスチャタイプを追加します。
// テクスチャタイプ public enum TEXTURE_TYPE { CHARA, BACK, //< 追加 MENU, } : : // タイプに応じたディレクトリ取得 private String _GetDirectory( TEXTURE_TYPE type ) { switch( type ) { case CHARA: return "model/chara"; case BACK: return "model/back"; //< 追加 case MENU: return "model/menu"; default: return ""; } }
これで画像を読み込めるようになったので実際に読み込んでみます。
MainActivityに以下のコードを追加します。
// コンストラクタ public MainActivity() { : m_Back = null; m_Bill = null; } : : // 描画フレーム @Override public void onDrawFrame( GL10 gl ) { : : // テクスチャがなければ読み込む if( m_Image == null ) { : m_Back = m_TexRes.Load( "back", TEXTURE_TYPE.BACK ); m_Bill = m_TexRes.Load( "bill", TEXTURE_TYPE.BACK ); } // 描画 if( m_Back != null ) { // まず、背景を描画 } if( m_Image != null ) { // 次にキャラを描画 } if( m_Bill != null ) { // 最後にビルを描画する }
あとは実際に描画してみるだけです!
まずは背景とビルを描画してみます。
// 描画 if( m_Back != null ) { // まず、背景を描画 Sprite sprite = m_DrawDevice.GetSprite(); DrawParam drawParam = sprite.CreateDrawParam( m_Back ); { drawParam.m_Pos.set( 0.0f, 0.0f ); drawParam.m_ImageRect.left = 0; drawParam.m_ImageRect.top = 0; drawParam.m_ImageRect.right = ( int )DrawDevice.DRAW_WIDTH; drawParam.m_ImageRect.bottom = ( int )DrawDevice.DRAW_HEIGHT; } sprite.Draw( drawParam ); } : : if( m_Bill != null ) { // 最後にビルを描画する Sprite sprite = m_DrawDevice.GetSprite(); DrawParam drawParam = sprite.CreateDrawParam( m_Bill ); { drawParam.m_Pos.set( 0.0f, 0.0f ); drawParam.m_ImageRect.left = 0; drawParam.m_ImageRect.top = 0; drawParam.m_ImageRect.right = ( int )DrawDevice.DRAW_WIDTH; drawParam.m_ImageRect.bottom = ( int )DrawDevice.DRAW_HEIGHT; } sprite.Draw( drawParam ); }
背景、ビルは描画領域のサイズに合わせているので位置は(0,0)、
サイズを描画領域のサイズに設定しています。
ヒットマンもビルの窓から顔を出すようにしてみましょう!
if( m_Image != null ) { // 次にキャラを描画 Sprite sprite = m_DrawDevice.GetSprite(); DrawParam drawParam = sprite.CreateDrawParam( m_Image ); for( int y = 0; y < 3; ++y ) { for( int x = 0; x < 3; ++x ) { drawParam.m_Pos.set(( float )x * 92.0f + 108.0f, ( float )y * 72.0f + 71.0f ); drawParam.m_ImageCenter.x = m_Image.GetWidth() * 0.5f; drawParam.m_ImageCenter.y = m_Image.GetHeight(); drawParam.m_ImageRect.left = 0; drawParam.m_ImageRect.top = 0; drawParam.m_ImageRect.right = m_Image.GetWidth(); drawParam.m_ImageRect.bottom = m_Image.GetHeight(); sprite.Draw( drawParam ); } } }
キャラを各窓に配置しています。
座標はビルの画像に合わせた値です。
この状態で実行すると以下のようになります。
すべての窓からヒットマンがこちらを見てくるようになりましたw
これだとターゲットにすぐにバレそうww
このソースコード、描画部分がもろ被りしてますね。
次はこの描画部分を別のクラスにやってもらうようにしましょう。