您的位置:首页 > 移动开发 > Android开发

使用AndEngine开发游戏之二

2013-10-15 00:00 253 查看
摘要: 使用AndEngine开发游戏经历

看完例子熟悉了基本以后就可以开始制作游戏了。

游戏的具体代码我就不贴了,有兴趣可以到我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的启动方式有关。

。。。完
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息