1)加载瓦片地图
//加载TMX
try {
final TMXLoader tmxLoader = new TMXLoader(this,
this.mEngine.getTextureManager(), TextureOptions.NEAREST,
null);
this.mTMXTiledMap = tmxLoader.loadFromAsset(this,"sence"+leave.getInt("leave", 1)+".tmx");
} catch (final TMXLoadException tmxle) {
Debug.e(tmxle);
}
//将每一层TMXLayer加载到scene中
for (int i = 0; i < this.mTMXTiledMap.getTMXLayers().size(); i++) {
TMXLayer layer = this.mTMXTiledMap.getTMXLayers().get(i);
mScene.attachChild(layer);
}
2)创建物理世界
this.mPhysicsWorld = new FixedStepPhysicsWorld(30, new Vector2(0, 80),
true, 8, 1);
3)创建主要人物,屏幕更新方式注册为按照物理世界中的方式更新
final AnimatedSprite player = new AnimatedSprite(centerX-200, centerY-100,
this.mPlayerTextureRegion);//
this.mBoundChaseCamera.setChaseEntity(player);
final FixtureDef playerFixtureDef = PhysicsFactory.createFixtureDef(0,
0, 0.5f);
mPlayerBody = PhysicsFactory.createBoxBody(this.mPhysicsWorld, player,
BodyType.StaticBody, playerFixtureDef);
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(
player, mPlayerBody, true, false) {
@Override
public void onUpdate(float pSecondsElapsed) {
super.onUpdate(pSecondsElapsed);
mBoundChaseCamera.updateChaseEntity();//相机更新方式
}
});
physicalmap.put(mPlayerBody, player);
mPlayerBody.setUserData("mPlayerBody");
mScene.attachChild(player);
4)读取每个瓦片,与物理世界结合
public void creatBox(TMXTiledMap map)
{
for (final TMXObjectGroup group : this.mTMXTiledMap
.getTMXObjectGroups()) {
if (group.getTMXObjectGroupProperties().containsTMXProperty("box",
"true")) {
//如果瓦片地图中图块的键为“box”,值为“true”
for (final TMXObject object : group.getTMXObjects()) {
final Sprite box = new Sprite(object.getX(), object.getY(),this.mBoxTextureRegion);//创建皮肤
final FixtureDef boxFixtureDef = PhysicsFactory
.createFixtureDef(0, 0, 1f);//连接器
final Body boxBody=PhysicsFactory.createBoxBody(this.mPhysicsWorld, box,
BodyType.DynamicBody, boxFixtureDef);//刚体
boxBody.setUserData("boxBody");//为刚体设置值,供碰撞检测时使用
physicalmap.put(boxBody, box);//供碰撞检测时使用,通过键找到值
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(
box, boxBody, true, false));//注册到物理世界中
mScene.attachChild(box);//将皮肤天剑到sence中
}
}
}
}
分享到:
相关推荐
andengine 最新源码(具有box2D)
AndEngine游戏引擎 2D游戏引擎
AndEngine_分析之二-----BaseGameActivity. 中文
AndEngine_分析之三-----AsyncTask_BaseActivity备忘
AndEngine_分析之一----载入资源 这个是英文的
andEngine是一款优秀的基于Android平台的游戏引擎,集成了Box2D物理引擎,想做愤怒的小鸟吗?就靠他了。
andengine游戏引擎源码及实例,想学这个的应该对你有帮助的~~
AndEngine android游戏引擎源码,绝对物有所值,android游戏开发者的杀手锏
AndEngine游戏开发指南-初级篇.pdf android基于AndEngine游戏引擎开发
AndEngine游戏 DeliveryBoy 源代码,可以用来做AndEngine游戏实例教程进行参考
最流行的android游戏2d引擎,基于open gl 开发游戏 组建方式开发 基于libgdx
AndEngine是一款基于OpenGL ES技术的Android游戏引擎,物理引擎同样为Box2D(标配)。可以运行在支持Android1.6及以上版本的系统当中。
AndEngine游戏引擎jar包 开发游戏的好帮手,不会使用的可以连系
AndEngine 游戏引擎 中文文档,AndEngine的文档很少,而且是中文的哦
Android 2D游戏引擎AndEngine快速入门教程
andengine 的 box2d扩展包。
AndEngine游戏引擎讲解.pdf
andengine同样是一款基于OpenGL ES技术的Android游戏引擎,物理引擎同样为Box2D。该框架性能普通,文档缺乏,但示例较为丰富。
如果你的游戏准备使用物理引擎,请优先考虑AndEngine。AndEngine官方提供了数个扩展包。例如:AndEngineLiveWallpaperExtension动态壁纸扩展、AndEngineTexturePackerExtension纹理打包扩展、AndEnginePhysicsBox2...
能适用与android6.0以上的andengine_box2d.jar。重新打包制作的,希望可以帮助到大家