博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
andengine游戏引擎总结进阶篇1
阅读量:6429 次
发布时间:2019-06-23

本文共 5752 字,大约阅读时间需要 19 分钟。

本篇包括虚拟键盘,粒子系统

   1虚拟键盘

      分为两种,一种是单个虚拟键盘,另一种是多个方位虚拟键盘

      1)加载虚拟键盘所需要的图片资源

private BitmapTextureAtlas mOnScreenControlTexture;	private ITextureRegion mOnScreenControlBaseTextureRegion;	private ITextureRegion mOnScreenControlKnobTextureRegion;
 this.mOnScreenControlTexture = new BitmapTextureAtlas(this.getTextureManager(), 256, 128, TextureOptions.BILINEAR);  this.mOnScreenControlBaseTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mOnScreenControlTexture, this, "onscreen_control_base.png", 0, 0);  this.mOnScreenControlKnobTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mOnScreenControlTexture, this, "onscreen_control_knob.png", 128, 0);  this.mOnScreenControlTexture.load();

       2.1)单个虚拟键盘

 
final AnalogOnScreenControl analogOnScreenControl = new AnalogOnScreenControl(0, CAMERA_HEIGHT - this.mOnScreenControlBaseTextureRegion.getHeight(), this.mCamera, this.mOnScreenControlBaseTextureRegion, this.mOnScreenControlKnobTextureRegion, 0.1f, 200, this.getVertexBufferObjectManager(), new IAnalogOnScreenControlListener() {			@Override			public void onControlChange(final BaseOnScreenControl pBaseOnScreenControl, final float pValueX, final float pValueY) {
//pValueX	,pVlueY在[-1,1]之间,坐标系pValueX ,pVlueY交集就是方位啦		}			@Override			public void onControlClick(final AnalogOnScreenControl pAnalogOnScreenControl) {				//里边的小的被点击时调用			}		});		analogOnScreenControl.getControlBase().setBlendFunction(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);		analogOnScreenControl.getControlBase().setAlpha(0.5f);		analogOnScreenControl.getControlBase().setScaleCenter(0, 128);		analogOnScreenControl.getControlBase().setScale(1.25f);		analogOnScreenControl.getControlKnob().setScale(1.25f);		analogOnScreenControl.refreshControlKnobPosition();		scene.setChildScene(analogOnScreenControl);

       2.2多个虚拟键盘,下边的是两个

final AnalogOnScreenControl velocityOnScreenControl = new AnalogOnScreenControl(x1, y1, this.mCamera, this.mOnScreenControlBaseTextureRegion, this.mOnScreenControlKnobTextureRegion, 0.1f, this.getVertexBufferObjectManager(), new IAnalogOnScreenControlListener() {			@Override			public void onControlChange(final BaseOnScreenControl pBaseOnScreenControl, final float pValueX, final float pValueY) {				physicsHandler.setVelocity(pValueX * 100, pValueY * 100);			}			@Override			public void onControlClick(final AnalogOnScreenControl pAnalogOnScreenControl) {				/* Nothing. */			}		});		velocityOnScreenControl.getControlBase().setBlendFunction(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);		velocityOnScreenControl.getControlBase().setAlpha(0.5f);		scene.setChildScene(velocityOnScreenControl);		/* Rotation control (right). */		final float y2 = (this.mPlaceOnScreenControlsAtDifferentVerticalLocations) ? 0 : y1;		final float x2 = CAMERA_WIDTH - this.mOnScreenControlBaseTextureRegion.getWidth();		final AnalogOnScreenControl rotationOnScreenControl = new AnalogOnScreenControl(x2, y2, this.mCamera, this.mOnScreenControlBaseTextureRegion, this.mOnScreenControlKnobTextureRegion, 0.1f, this.getVertexBufferObjectManager(), new IAnalogOnScreenControlListener() {//0.1f触摸响应时间为0.1秒		@Override			public void onControlChange(final BaseOnScreenControl pBaseOnScreenControl, final float pValueX, final float pValueY) {				if(pValueX == x1 && pValueY == x1) {					face.setRotation(x1);				} else {					face.setRotation(MathUtils.radToDeg((float)Math.atan2(pValueX, -pValueY)));				}			}			@Override			public void onControlClick(final AnalogOnScreenControl pAnalogOnScreenControl) {				/* Nothing. */			}		});		rotationOnScreenControl.getControlBase().setBlendFunction(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);		rotationOnScreenControl.getControlBase().setAlpha(0.5f);		velocityOnScreenControl.setChildScene(rotationOnScreenControl);//两个键盘的关系

 

 

          2粒子系统

                      1)粒子图片资源

this.mBitmapTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 32, 32, TextureOptions.BILINEAR_PREMULTIPLYALPHA);		this.mParticleTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this, "particle_point.png", 0, 0);		this.mBitmapTextureAtlas.load();

                     2)粒子类型

final CircleOutlineParticleEmitter particleEmitter = new CircleOutlineParticleEmitter(ParticleSystemSimpleExample.CAMERA_WIDTH * 0.5f, ParticleSystemSimpleExample.CAMERA_HEIGHT * 0.5f + 20, 80);//粒子类型

                    3)粒子工场产生的粒子类型,数量等

                     

final SpriteParticleSystem particleSystem = new SpriteParticleSystem(particleEmitter, 60, 60, 360, this.mParticleTextureRegion, this.getVertexBufferObjectManager());//粒子工厂,参数,60,60是粒子的最大与最小生成速率

                  4)粒子的行为方式(旋转,颜色,透明度方面的变化)

                

particleSystem.addParticleInitializer(new ColorParticleInitializer
(1, 0, 0)); particleSystem.addParticleInitializer(new AlphaParticleInitializer
(0)); particleSystem.addParticleInitializer(new BlendFunctionParticleInitializer
(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE)); particleSystem.addParticleInitializer(new VelocityParticleInitializer
(-2, 2, -20, -10)); particleSystem.addParticleInitializer(new RotationParticleInitializer
(0.0f, 360.0f)); particleSystem.addParticleInitializer(new ExpireParticleInitializer
(6)); particleSystem.addParticleModifier(new ScaleParticleModifier
(0, 5, 1.0f, 2.0f)); particleSystem.addParticleModifier(new ColorParticleModifier
(0, 3, 1, 1, 0, 0.5f, 0, 0)); particleSystem.addParticleModifier(new ColorParticleModifier
(4, 6, 1, 1, 0.5f, 1, 0, 1)); particleSystem.addParticleModifier(new AlphaParticleModifier
(0, 1, 0, 1)); particleSystem.addParticleModifier(new AlphaParticleModifier
(5, 6, 1, 0));

                      5)加载粒子到Sence中

                    

scene.attachChild(particleSystem);

                          6)粒子中心开始位置,开闭等

particleEmitter.setCenter(x,y );							particleSystem.setParticlesSpawnEnabled(true);

 

 

转载地址:http://prnga.baihongyu.com/

你可能感兴趣的文章
nfs服务器的配置以及fstab参数描述
查看>>
《跟阿铭学linux》(第3版)笔记
查看>>
MySQL自动化运维之用mysqldump和mysqlbinlog实现某一数据库的每周全备和每天差异备...
查看>>
作业:图书管理
查看>>
解决在安装gulp的时候遇到的问题
查看>>
【原创】Git版本控制器的基本使用
查看>>
图说:Windows 8密码:图片密码
查看>>
10.1综合强化刷题 Day5
查看>>
php批量导入带有图片的Excel表格
查看>>
我的友情链接
查看>>
webmin的安装与管理
查看>>
zabbix unreachable poller processes more than 75 busy
查看>>
centos 6.0 修改本地光盘作为yum源 使用更新的国内镜像源
查看>>
DNS 服务相关概念 (一)
查看>>
我的友情链接
查看>>
LNMP环境搭建
查看>>
tomcat安装配置
查看>>
参加美国velocity大会
查看>>
django项目流程
查看>>
手机影音最终,软件退出功能的优化
查看>>