前の記事では、エンジンと物理拡張のダウンロードに成功し、ゲームのプロジェクトを作成し、エンジンのソースをリンクし、activityの新しい空のクラスを作成しました。 この記事では、このactivityの設定を行います。
私たちは、複数のsceneを持ったactivityを一つだけ使用します。以下に使用するscenesを表す小さな図があります:
ゲームを開始した後、以下の順番で処理が行われます:
ご覧の通り、とても簡単で難しいことはありません。これはあくまで私が使っている方法なので注意してください。 自分のゲーム要件に合わせて変更するかどうかは、あなた次第です。 あなたのゲームの複雑さにもよりますが、ほとんどのゲームではこのやり方で十分でしょう。
package com.matimdev; import java.io.IOException; import org.andengine.engine.options.EngineOptions; import org.andengine.entity.scene.Scene; import org.andengine.ui.activity.BaseGameActivity; /** * @author Mateusz Mysliwiec * @author www.matim-dev.com * @version 1.0 */ public class GameActivity extends BaseGameActivity { public EngineOptions onCreateEngineOptions() { return null; } public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws IOException { } public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws IOException { } public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws IOException { } }様々な端末上で同じ速度でゲームを動作させたいので、次の手順では、独自のEngineを作成します。 そのためにLimitedFPSEngineクラスを使用します。 これはデフォルトのEngineを継承したサブクラスで、毎秒ごとの更新回数の目安を設定します。 そのためには、onCreateEngine を上書きしてEngineを戻り値として返します:
@Override public Engine onCreateEngine(EngineOptions pEngineOptions) { return new LimitedFPSEngine(pEngineOptions, 60); }ご覧の通り、コンストラクタの秒指定パラメータには60の値を使用しています。 これは毎秒ごとの更新回数の目安を指定します。 それでは、cameraとEngineOptionsを作成します。EngineOptions内で、どのように動作するかをエンジンに指示します。 指示には画面の向き, フルスクリーンモード、解像度、カメラなどのような基本設定があります。
private Camera camera; public EngineOptions onCreateEngineOptions() { camera = new Camera(0, 0, 800, 480); EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(800, 480), this.camera); engineOptions.getAudioOptions().setNeedsMusic(true).setNeedsSound(true); engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON); return engineOptions; }
今回はcameraを800 x 480ピクセルサイズで新規に作成しました (作成する画面の解像度を何にするかをはあなた次第です。800 x 400と言うのは最もよく使用されているサイズです)。 次に独自のengine optionsを作成します。フルスクリーンのパラメータをtrueに設定し、横向き固定画面を使用し、RatioResolutionPolicyを設定します。 (ゲームが異なる解像度上で使用され場合は、このエンジンは適切な縦横比を維持しながらゲーム画面のサイズを変更します)。 また、setNeedsMusicとsetNeedsSoundにtrueを設定したので、ゲームにいくつかの音源を使用することができます。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.matimdev" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme"> <activity android:name=".GameActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|mcc|mnc" android:screenOrientation="landscape"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
インターネットアクセス権限(アプリに広告を搭載したい場合などに使う)のような、最も重要な権限を有効にしています。 また、使用するactivityについての情報の提示します。 configChanges プロパティも含めています。
次の記事ではsceneマネージャとscene管理システムを紹介しているので、確認してください。
前の記事 | 次の記事 |