AndEngine粒子系統

只能算是簡單的研究了一下,使用了例子裏面的圖片,當點擊屏幕時粒子效果消失。

public class MainActivity extends SimpleBaseGameActivity {

	private static final int CAMERA_WIDTH = 480;
	private static final int CAMERA_HEIGHT = 720;

	private BitmapTextureAtlas mBitmapTextureAtlas;
	private ITextureRegion mParticleTextureRegion;

	public EngineOptions onCreateEngineOptions() {
		final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
		return new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);
	}

	@Override
	protected void onCreateResources() {
		BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
		mBitmapTextureAtlas = new BitmapTextureAtlas(getTextureManager(), 32, 32, TextureOptions.BILINEAR);
		mParticleTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mBitmapTextureAtlas, this, "particle_point.png", 0, 0);
		mBitmapTextureAtlas.load();
	}

	@Override
	protected Scene onCreateScene() {
		final Scene scene = new Scene();
		scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));

		CircleParticleEmitter emitter = new CircleParticleEmitter(CAMERA_WIDTH / 2, CAMERA_WIDTH / 2, 30);// 圓形粒子生成器,位置在屏幕中央,半徑30
		final SpriteParticleSystem particleSystem = new SpriteParticleSystem(emitter, 10, 60, 30, mParticleTextureRegion, getVertexBufferObjectManager());// 使用圖片作爲粒子

		particleSystem.addParticleInitializer(new ColorParticleInitializer<Sprite>(1, 0, 0));// 初始化爲紅色
		particleSystem.addParticleInitializer(new AlphaParticleInitializer<Sprite>(0));// 初始化爲全透明
		particleSystem.addParticleInitializer(new BlendFunctionParticleInitializer<Sprite>(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE));
		particleSystem.addParticleInitializer(new VelocityParticleInitializer<Sprite>(-5, 5, 20, 10));// 前兩個值爲橫向加速度的取值範圍,後面兩個值爲縱向加速度取值範圍
		particleSystem.addParticleInitializer(new RotationParticleInitializer<Sprite>(0.0f, 360.0f));// 旋轉角度取值範圍
		particleSystem.addParticleInitializer(new ExpireParticleInitializer<Sprite>(6));// 單個粒子持續時間

		particleSystem.addParticleModifier(new ScaleParticleModifier<Sprite>(0, 5, 1.0f, 2.0f));// 粒子產生過程0-5秒從原始大小變爲2倍大小
		particleSystem.addParticleModifier(new ColorParticleModifier<Sprite>(0, 3, 1, 1, 0, 0.5f, 0, 0));// 0-3秒間的顏色變化
		particleSystem.addParticleModifier(new ColorParticleModifier<Sprite>(4, 6, 1, 1, 0.5f, 1, 0, 1));// 4-6秒間的顏色變化
		particleSystem.addParticleModifier(new AlphaParticleModifier<Sprite>(0, 1, 0, 1));// 0-1秒間透明度變化
		particleSystem.addParticleModifier(new AlphaParticleModifier<Sprite>(5, 6, 1, 0));// 5-6秒間透明度變化

		scene.attachChild(particleSystem);
                // 屏幕觸摸事件
		scene.setOnSceneTouchListener(new IOnSceneTouchListener() {
			public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
				if (pSceneTouchEvent.isActionUp()) {
					particleSystem.setParticlesSpawnEnabled(false);
				}
				return false;
			}
		});

		return scene;
	}

}
如有不對之處,歡迎大家拍磚

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章