ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:171.58KB ,
资源ID:21312395      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21312395.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android平衡球项目之andEngine的物理世界开发文档Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android平衡球项目之andEngine的物理世界开发文档Word文档格式.docx

1、(2).onLoadResource() 加载资源。其实加载资源多的工作可以放到onLoadScene()里面完成,但是作者既然写了这么个函数,我猜他就是想让代码层次清晰一些,在这里面你可以加载你需要的资源,以便后面加载场景的时候使用。(3).onLoadScene() 加载场景。有了镜头,就应该由场景吧,导演一般都是这么想的。这时候你需要创建一个场景,场景里加载刚才的资源,最后将场景返回,最基本的游戏就可以起来了,此时游戏是没有规则的,但是程序已经可以启动,画面里只有你加载的资源。(4).onLoadComplete() 这个函数是Option选项,写在其中的代码将在场景加载完毕后执行,相当

2、于善后工作。4. 详细设计:Android平衡球项目之andEngine资源加载 andEngine的资源加载十分简单,大概分为以下几步:(1).构建实体 andEngine的库里有一个包就是Entity,中文翻译就是实体,Entity类下有很多类,他们都算实体类,可以生成实体,一个简单的举行实体如何定义: Shape rectangle=new Rectangle(0,0,50,50); 参数表明在(0,0)坐标点生成一个宽50高50的矩形,单位是像素,这样,一个实体就构建好了。(2).加载实体 前面说过,我们看到手机屏幕显示的东西都是透过镜头(Camera)的,镜头看到的永远是场景(Sce

3、ne),所以实体是加到场景里的,所以可以用如下语句加载实体: this.scene.getTopLayer().addEntity(rectangle); 因为场景可以分层(Layer),所以我们用getTopLayer()来获取顶层场景。 我们前面谈及了如何在场景里加载实体,下面我们将讲讲我们如何让实体实现物理性质。Android平衡球项目之andEngine的物理世界 很多物理引擎和游戏引擎都会有世界(World)的概念,andEngine也不例外,我们就是通过在场景里设置物理世界使得其中的物体具有物理性质的。(1).主类中的一个成员变量: private PhysicalWorld wo

4、rld;(2).创建world实例: this.world = new FixedStepPhysicsWorld(30, vector, false, 8, 1); 其中30代表FPS,vector代表了指定的重力加速度矢量,为Vector2类。(3).这里有一个中间概念,物理对象,加入物理世界的实体通过物理对象赋予物理性质:Private final FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(1, 0.5f, 0.5f); 这里的参数决定了物理性质。(4).为场景里的实体创造body,使其有血有肉:Body bo

5、dy=PhysicsFactory.createBoxBody(world,ball,BodyType.DynamicBody,wallFixtureDef);其中world指定所在的世界,为ball赋予物理性质,生成一个动态物体,与物理物体关联,产生一样的物理性质。(5).为实体注册物理世界,这样才能使其具有物理性质:world.registerPhysicsConnector(new PhysicsConnector(entityBrick, entityBody, true, true, false, false);为实体entityBrick以entityBody生成物理物体。至此,一

6、个具有物理性质的实体就创建好了。5. 主要程序说明:package ad.PW;import java.util.ArrayList;import org.anddev.andengine.engine.Engine;import org.anddev.andengine.engine.camera.Camera;import org.anddev.andengine.engine.options.EngineOptions;import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;import org

7、.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;import org.anddev.andengine.entity.primitive.Line;import org.anddev.andengine.entity.primitive.Rectangle;import org.anddev.andengine.entity.scene.Scene;import org.anddev.andengine.entity.shape.Shape;import org.anddev.andengine.e

8、ntity.util.FPSLogger;import org.anddev.andengine.extension.physics.box2d.FixedStepPhysicsWorld;import org.anddev.andengine.extension.physics.box2d.PhysicsConnector;import org.anddev.andengine.extension.physics.box2d.PhysicsFactory;import org.anddev.andengine.extension.physics.box2d.PhysicsWorld;impo

9、rt org.anddev.andengine.opengl.texture.Texture;import org.anddev.andengine.opengl.texture.TextureOptions;import org.anddev.andengine.opengl.texture.region.TextureRegion;import org.anddev.andengine.opengl.texture.region.TextureRegionFactory;import org.anddev.andengine.opengl.texture.region.TiledTextu

10、reRegion;import org.anddev.andengine.sensor.accelerometer.AccelerometerData;import org.anddev.andengine.sensor.accelerometer.IAccelerometerListener;import org.anddev.andengine.ui.activity.BaseGameActivity;import com.badlogic.gdx.math.Vector2;import com.badlogic.gdx.physics.box2d.Body;import com.badl

11、ogic.gdx.physics.box2d.FixtureDef;import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;public class PWActivity extends BaseGameActivity implements IAccelerometerListener /* Called when the activity is first created. */ /For Engine private Camera camera; /For Scene public PhysicsWorld world; /Gravi

12、ty public Vector2 vector; public float GravityX; public float GravityY; public float GravityLimit=10; /Ball public Texture ballTexture; public TiledTextureRegion ballTextureRegion; private Ball ball; /Bricks private Door enterBrick; private Texture enterTexture; private TextureRegion enterTextureReg

13、ion; private Door exitBrick; private Texture exitTexture; private TextureRegion exitTextureRegion; public ArrayList bricks; /EnterDoor enters; /create a physical object private final FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(1, 0.5f, 0.5f); /create borders public Line bottom; publi

14、c Line top; public Line left; public Line right; public Scene scene; public Scene prevScene; static Scene scene1; static Scene scene2; public Engine onLoadEngine() camera=new Camera(10, 10, 460, 320); return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(46

15、0, 320), camera); public void onLoadResources() ballTexture=new Texture(128, 128, TextureOptions.DEFAULT); ballTextureRegion=TextureRegionFactory.createTiledFromAsset(ballTexture, this, silver_ball.png, 0, 32, 2, 1); enterTexture=new Texture(128, 128, TextureOptions.DEFAULT); enterTextureRegion=Text

16、ureRegionFactory.createFromAsset(enterTexture, getApplicationContext(), block_enter.png, 0, 0); exitTexture=new Texture(128, 128, TextureOptions.DEFAULT); exitTextureRegion=TextureRegionFactory.createFromAsset(exitTexture, getApplicationContext(), block_exit.png public Scene onLoadScene() scene=new

17、Scene(2);/ scene.setBackground(new ColorBackground(256, 256, 256); enters=new ArrayList(); /create a physical world vector=new Vector2(0, 1); this.world = new FixedStepPhysicsWorld(30, vector, false, 8, 1); ball=new Ball(5,10,32,32,ballTextureRegion); Body ballbody = PhysicsFactory.createCircleBody(

18、world, ball, BodyType.DynamicBody, wallFixtureDef); world.registerPhysicsConnector(new PhysicsConnector(ball, ballbody, true, true, false, false); scene.getTopLayer().addEntity(ball); /create this.ball.test=this; this.ball.enterList=enters; /register a new FPSLogger this.mEngine.registerUpdateHandle

19、r(new FPSLogger(); /Load Texture this.mEngine.getTextureManager().loadTexture(ballTexture); this.mEngine.getTextureManager().loadTexture(enterTexture); this.mEngine.getTextureManager().loadTexture(exitTexture); /create initial interface enter point enterBrick=new Door(10,270,50,50,enterTextureRegion

20、); Body enterBody=PhysicsFactory.createCircleBody(world, enterBrick, BodyType.StaticBody, wallFixtureDef); world.registerPhysicsConnector(new PhysicsConnector(enterBrick, enterBody, true, true, false, false); scene.getTopLayer().addEntity(enterBrick); enters.add(enterBrick); exitBrick=new Door(410,2

21、70,50,50,exitTextureRegion); Body exitBody=PhysicsFactory.createCircleBody(world, exitBrick, BodyType.StaticBody, wallFixtureDef); world.registerPhysicsConnector(new PhysicsConnector(exitBrick, exitBody, true, true, false, false); scene.getTopLayer().addEntity(exitBrick); enters.add(exitBrick); /cre

22、ate borders bottom=new Line(0, 320, 460, 320); bottom.setColor(0,256,0); Body bottomBody=PhysicsFactory.createBoxBody(this.world, bottom, BodyType.StaticBody, wallFixtureDef); world.registerPhysicsConnector(new PhysicsConnector(bottom, bottomBody, true, true, false, false); scene.getTopLayer().addEn

23、tity(bottom); top=new Line(0,10,460,10); top.setColor(0,256,0); Body topBody=PhysicsFactory.createBoxBody(this.world, top, BodyType.StaticBody, wallFixtureDef); world.registerPhysicsConnector(new PhysicsConnector(top, topBody, true, true, false, false); scene.getTopLayer().addEntity(top); left=new L

24、ine(10,0,10,320); left.setColor(0, 256, 0); Body leftBody=PhysicsFactory.createBoxBody(this.world, left, BodyType.StaticBody, wallFixtureDef); world.registerPhysicsConnector(new PhysicsConnector(left, leftBody, true, true, false, false); scene.getTopLayer().addEntity(left); right=new Line(460,0,460,

25、320); right.setColor(0, 256, 0); Body rightBody=PhysicsFactory.createBoxBody(this.world, right, BodyType.StaticBody, wallFixtureDef); world.registerPhysicsConnector(new PhysicsConnector(right, rightBody, true, true, false, false); scene.getTopLayer().addEntity(right); this.enableAccelerometerSensor(

26、this); scene.registerUpdateHandler(this.world); this.ball.enterList=enters; this.ball.scene=this.scene; prevScene=scene; return scene; public void onLoadComplete() public void loadLevel1() scene1=new Scene(2); ball=new Ball(200,10,32,32,ballTextureRegion); scene1.getTopLayer().addEntity(ball); world.registerPhysicsConnector(new PhysicsConnector(enterBrick,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1