看完例子熟悉了基本以后就可以开始制作游戏了。
游戏的具体代码我就不贴了,有兴趣可以到我Github上看。下面说一下一些注意的事项
一、声音
1. 背景音乐
作为背景音乐就应该是循环播放的,注意这里是背景音乐,不是背景声音。。。(只有音乐才可以循环播放,我就在这里吃过亏)。
2. 声效。。这个应该没有什么难的
首先,在onCreateEngineOptions()方法里面加点东西
@Override
public EngineOptions onCreateEngineOptions() {
this.mCamera = new Camera(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
final EngineOptions engineOptions = new EngineOptions(true,ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(SCREEN_WIDTH, SCREEN_HEIGHT), this.mCamera);
engineOptions.getAudioOptions().setNeedsSound(true);
engineOptions.getAudioOptions().setNeedsMusic(true);
return engineOptions;
}
engineOptions.getAudioOptions().setNeedsSound(true);
engineOptions.getAudioOptions().setNeedsMusic(true);
这两句分别是设置使用声音和音乐。
在onCreateResources()方法中加载声音和音乐,如下
// 加载声音
SoundFactory.setAssetBasePath("mfx/");
MusicFactory.setAssetBasePath("mfx/");
try {
this.mBaseMusic = MusicFactory.createMusicFromAsset(
this.getMusicManager(), this, "base.wav");
this.mBombSound = SoundFactory.createSoundFromAsset(
this.getSoundManager(), this, "bomb.wav");
} catch (IOException e) {
e.printStackTrace();
}
音乐循环播放使用setLoop(true),可以实现音乐循环播放
this.mBaseMusic.play();
this.mBaseMusic.setLooping(true);
播放声音,跟音乐差不多
mBombSound.play();
二、物理碰撞监听器
上一篇说了如何注册物理世界,现在说一下如何监听碰撞事件。
this.mPhysicsWorld.setContactListener(new ContactListener() {
@Override
public void preSolve(Contact contact, Manifold oldManifold) {}
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {}
@Override
public void endContact(Contact contact) {}
@Override
public void beginContact(Contact contact) {
// TODO
}
});
在beginContact(Contact contact)方法中可以实现碰撞所触发的事件。
Body bodyA = contact.getFixtureA().getBody();
Body bodyB = contact.getFixtureB().getBody();
这样可以获取碰撞的两物体。bodyA是碰撞方,bodyB是被碰撞方。如果需要确定bodyA和bodyB的身份,可以在新建Body的时候使用setUserData方法,然后在检测的时候使用getUserData获取数据,以此来获得碰撞物体的身份。
三、从一个GameActivity跳转到另一个GameActivity
我在这里是纠结最久的,最后在github上提问,有一位外国朋友(应该是外国的。。。吧)发了个Demo给我才知道自己是死在哪里。
假如我要从LevelOneGame跳转到LevelTwoGame(都是设置横屏的),其实在代码上跟普通Activity跳转没有分别。但是在AndroidManifest.xml则是用一个要注意的地方。
标注LevelTwoGame如下
<activity android:name=".LevelTwoGame" android:configChanges="orientation|screenSize" />
注意,一定要android:configChanges="orientation|screenSize"这句,否则会报错。至于原因我还没有查到,应该跟Activity的启动方式有关。
。。。完
来源:oschina
链接:https://my.oschina.net/u/1156700/blog/169007