//喷泉 private void btn_Spring_Click(object sender, EventArgs e) { if (_glbControl.Globe.Ocean.Visible) { btn_Ocean.PerformClick(); } //喷泉粒子要素对象 GSOGeoParticle geoParticle = new GSOGeoParticle(); //添加到当前相机位置 geoParticle.SetPosition(_glbControl.Globe.CameraState.Longitude, _glbControl.Globe.CameraState.Latitude, 0); GSOPointParticleEmitter emitter = new GSOPointParticleEmitter(); //设置喷泉纹理 emitter.TexturePath = _waterDropPath; //设置粒子大小 emitter.SetSizeFix(0.5f, 2); emitter.VelFix = 10; emitter.VelRnd = 2; emitter.GravityAcc = 9.8f; emitter.AngleXYFix = 0; emitter.AngleXYRnd = 180; emitter.AngleXZFix = 88; emitter.AngleXZRnd = 2; emitter.LifeFix = 5.0f; emitter.LifeRnd = 1.0f; emitter.RotFix = 0; emitter.RotRnd = 0; emitter.RotVelFix = 0; emitter.RotVelRnd = 0; //每秒钟1000个粒子 emitter.EmitPerSec = 1000; //白色,33不透明度 emitter.ColorRndStart = Color.FromArgb(33, 255, 255, 255); //白色,11不透明度 emitter.ColorRndEnd = Color.FromArgb(11, 255, 255, 255); emitter.IsLumAdded = false; //将发射器添加到粒子对象中 geoParticle.AddEmitter(emitter); geoParticle.Play(); geoParticle.AltitudeMode = EnumAltitudeMode.Absolute; GSOFeature feature = new GSOFeature(); feature.Geometry = geoParticle; _glbControl.Globe.MemoryLayer.AddFeature(feature); _glbControl.Globe.JumpToFeature(feature, 100); }
private void CtrlParticleParamPage_Load(object sender, EventArgs e) { if (mGeometry != null) { if (mGeometry.Type == EnumGeometryType.GeoParticle) { particle = (GSOGeoParticle)mGeometry; if (particle.GetEmitterCount() > 0) { emitter = particle.GetEmitterAt(0) as GSORingParticleEmitter; emitter2 = particle.GetEmitterAt(1) as GSORingParticleEmitter; if (emitter2 != null) { emitter = emitter2; } if (emitter == null) { emitterPoint = particle.GetEmitterAt(0) as GSOPointParticleEmitter; if (emitterPoint != null) { textBoxSetSizeFixX.Text = emitterPoint.SizeFix.X.ToString(); textBoxSetSizeFixY.Text = emitterPoint.SizeFix.Y.ToString(); textBoxVelFix.Text = emitterPoint.VelFix.ToString(); textBoxVelRnd.Text = emitterPoint.VelRnd.ToString(); textBoxAccFix.Text = emitterPoint.AccFix.ToString(); textBoxAccRnd.Text = emitterPoint.AccRnd.ToString(); textBoxAngleXYFix.Text = emitterPoint.AngleXYFix.ToString(); textBoxAngleXYRnd.Text = emitterPoint.AngleXYRnd.ToString(); textBoxAngleXZFix.Text = emitterPoint.AngleXZFix.ToString(); textBoxAngleXZRnd.Text = emitterPoint.AngleXZRnd.ToString(); textBoxLifeFix.Text = emitterPoint.LifeFix.ToString(); textBoxLifeRnd.Text = emitterPoint.LifeRnd.ToString(); textBoxRotFix.Text = emitterPoint.RotFix.ToString(); textBoxRotRnd.Text = emitterPoint.RotRnd.ToString(); textBoxRotVelFix.Text = emitterPoint.RotVelFix.ToString(); textBoxRotVelRnd.Text = emitterPoint.RotVelRnd.ToString(); textBoxEmitPerSec.Text = emitterPoint.EmitPerSec.ToString(); textBoxColorRndStart.Enabled = false; textBoxColorRndEnd.Enabled = false; if (emitterPoint.GetEffectorCount() > 0) { effector = emitterPoint.GetEffectorAt(0); textBoxStartTime.Text = effector.StartTime.ToString(); textBoxEndTime.Text = effector.EndTime.ToString(); } textBoxSetSizeFixX.TextChanged += new EventHandler(textBoxSetSizeFixX_TextChanged); textBoxSetSizeFixY.TextChanged += new EventHandler(textBoxSetSizeFixY_TextChanged); } } else { textBoxSetSizeFixX.Text = emitter.SizeFix.X.ToString(); textBoxSetSizeFixY.Text = emitter.SizeFix.Y.ToString(); textBoxVelFix.Text = emitter.VelFix.ToString(); textBoxVelRnd.Text = emitter.VelRnd.ToString(); textBoxAccFix.Text = emitter.AccFix.ToString(); textBoxAccRnd.Text = emitter.AccRnd.ToString(); textBoxAngleXYFix.Text = emitter.AngleXYFix.ToString(); textBoxAngleXYRnd.Text = emitter.AngleXYRnd.ToString(); textBoxAngleXZFix.Text = emitter.AngleXZFix.ToString(); textBoxAngleXZRnd.Text = emitter.AngleXZRnd.ToString(); textBoxLifeFix.Text = emitter.LifeFix.ToString(); textBoxLifeRnd.Text = emitter.LifeRnd.ToString(); textBoxRotFix.Text = emitter.RotFix.ToString(); textBoxRotRnd.Text = emitter.RotRnd.ToString(); textBoxRotVelFix.Text = emitter.RotVelFix.ToString(); textBoxRotVelRnd.Text = emitter.RotVelRnd.ToString(); textBoxEmitPerSec.Text = emitter.EmitPerSec.ToString(); textBoxColorRndStart.BackColor = emitter.ColorRndStart; textBoxColorRndEnd.BackColor = emitter.ColorRndEnd; if (emitter.GetEffectorCount() > 0) { effector = emitter.GetEffectorAt(0); textBoxStartTime.Text = effector.StartTime.ToString(); textBoxEndTime.Text = effector.EndTime.ToString(); } textBoxSetSizeFixX.TextChanged += new EventHandler(textBoxSetSizeFixX_TextChanged); textBoxSetSizeFixY.TextChanged += new EventHandler(textBoxSetSizeFixY_TextChanged); } } } } }
// 添加水柱 private GSOFeature AddWaterLine() { string strResPath = Path.GetDirectoryName(Application.ExecutablePath) + "/Resource"; GSOGeoParticle geoParticle = new GSOGeoParticle(); geoParticle.SetPosition(116.308, 39.84, 0); // 添加到这个经纬度位置 GSOPointParticleEmitter emitter = new GSOPointParticleEmitter(); emitter.TexturePath = strResPath + "/ParticleImage/drop3.png"; geoParticle.TimerInterval = 1; emitter.SetSizeFix(2.0f, 2.0f); emitter.VelFix = 50; emitter.VelRnd = 2; emitter.GravityAcc = 9.8f; emitter.AngleXYFix = 0; emitter.AngleXYRnd = 2; emitter.AngleXZFix = 60; emitter.AngleXZRnd = 2; emitter.LifeFix = 5.0f; emitter.LifeRnd = 1.0f; emitter.RotFix = 0; emitter.RotRnd = 0; emitter.RotVelFix = 0; emitter.RotVelRnd = 0; emitter.EmitPerSec = 1500; emitter.ColorRndStart = Color.FromArgb(100, 222, 222, 222); emitter.ColorRndEnd = Color.FromArgb(50, 222, 222, 222); // 将三个发射器添加到粒子对象中 geoParticle.AddEmitter(emitter); geoParticle.Play(); GSOFeature feature = new GSOFeature(); feature.Geometry = geoParticle; globeControl1.Globe.FlyToFeature(feature); return feature; }
// 添加喷泉 private GSOFeature AddFountain() { string strResPath = Path.GetDirectoryName(Application.ExecutablePath) + "/Resource"; GSOGeoParticle geoParticle = new GSOGeoParticle(); geoParticle.SetPosition(116.314, 39.84, 0); // 添加到这个经纬度位置 GSOPointParticleEmitter emitter = new GSOPointParticleEmitter(); emitter.TexturePath = strResPath + "/ParticleImage/test.png"; emitter.SetSizeFix(0.5f, 2); emitter.VelFix = 10; emitter.VelRnd = 2; emitter.GravityAcc = 9.8f; emitter.AngleXYFix = 0; emitter.AngleXYRnd = 180; emitter.AngleXZFix = 88; emitter.AngleXZRnd = 2; emitter.LifeFix = 5.0f; emitter.LifeRnd = 1.0f; emitter.RotFix = 0; emitter.RotRnd = 0; emitter.RotVelFix = 0; emitter.RotVelRnd = 0; emitter.EmitPerSec = 1000; emitter.ColorRndStart = Color.FromArgb(33, 255, 255, 255); emitter.ColorRndEnd = Color.FromArgb(11, 255, 255, 255); emitter.IsLumAdded = false; // 将三个发射器添加到粒子对象中 geoParticle.AddEmitter(emitter); geoParticle.Play(); GSOFeature feature = new GSOFeature(); feature.Geometry = geoParticle; globeControl1.Globe.FlyToFeature(feature); return feature; }
// 烟花 private GSOFeature AddFireSpark() { // 烟火示例 string strResPath = Path.GetDirectoryName(Application.ExecutablePath) + "/Resource"; // 烟火粒子示例,由三个发射器构成 GSOGeoParticle geoParticle = new GSOGeoParticle(); geoParticle.SetPosition(116.312, 39.84, 200); // 添加到这个经纬度位置 geoParticle.AltitudeMode = EnumAltitudeMode.RelativeToGround; GSORingParticleEmitter emitter = new GSORingParticleEmitter(); emitter.TexturePath = strResPath + "/ParticleImage/flare3.png"; emitter.SetSizeFix(8, 8); emitter.VelFix = 70; emitter.AccFix = -2.0f; emitter.GravityAcc = 9.8f; // 重力加速度 emitter.AngleXYFix = 0; emitter.AngleXYRnd = 180; emitter.AngleXZFix = 0; emitter.AngleXZRnd = 90; emitter.LifeFix = 5.0f; emitter.LifeRnd = 0.0f; emitter.EmitPerSec = 99999; emitter.MaxCount = 300; // 采用线性插值生成粒子的初始颜色 emitter.ColorRndStart = Color.White; emitter.ColorRndEnd = Color.Red; emitter.IsLumAdded = true; // 例子颜色亮度叠加 GSOIncreaseSizeParticleEffector effector1 = new GSOIncreaseSizeParticleEffector(); effector1.SetIncreasePerSecond(-2, -2); effector1.StartTime = 0; effector1.EndTime = -1; // 负数表示整个粒子生命结束 // 添加效果器 emitter.AddEffector(effector1); GSOColorParticleEffector effector2 = new GSOColorParticleEffector(); effector2.SetColorChanged(0, 0, 0, -1); effector2.StartTime = 0.8f; effector2.EndTime = 1.5f; emitter.AddEffector(effector2); // 将三个发射器添加到粒子对象中 geoParticle.AddEmitter(emitter); geoParticle.Play(); GSOFeature feature = new GSOFeature(); feature.Geometry = geoParticle; globeControl1.Globe.FlyToFeature(feature); return feature; }
//烟火 private GSOFeature AddFireSmoke() { // 烟火示例 string strResPath = Path.GetDirectoryName(Application.ExecutablePath) + "/Resource"; // 烟火粒子示例,由三个发射器构成 GSOGeoParticle geoParticle = new GSOGeoParticle(); geoParticle.SetPosition(116.31, 39.84, 0); // 添加到这个经纬度位置 GSORingParticleEmitter emitter = new GSORingParticleEmitter(); emitter.TexturePath = strResPath + "/ParticleImage/烟1111111111111.png"; emitter.SetSizeFix(20, 20); //20,20 emitter.VelFix = 70; //70 emitter.AccFix = -3.0f; //-0.3f emitter.AngleXYFix = 0; emitter.AngleXYRnd = 180; emitter.AngleXZFix = 85; emitter.AngleXZRnd = 5; emitter.InnerRadius = 0; emitter.OuterRadius = 30; emitter.LifeFix = 2.0f; emitter.LifeRnd = 1.0f; emitter.RotFix = 0; emitter.RotRnd = 10; emitter.RotVelFix = 0; emitter.RotVelRnd = 180; emitter.EmitPerSec = 60; emitter.ColorRndStart = Color.Black; emitter.ColorRndEnd = Color.Black; emitter.IsLumAdded = false; GSOScaleParticleEffector effector1 = new GSOScaleParticleEffector(); effector1.SetScale(4, 4); //4,4 effector1.StartTime = 0; effector1.EndTime = 1.8f; // 添加效果器 emitter.AddEffector(effector1); GSOColorParticleEffector effector2 = new GSOColorParticleEffector(); effector2.SetColorChanged(0.6f, 0.6f, 0.6f, 0); effector2.StartTime = 0; effector2.EndTime = -1; // 负数表示整个粒子生命结束 emitter.AddEffector(effector2); GSOColorParticleEffector effector3 = new GSOColorParticleEffector(); effector3.SetColorChanged(0, 0, 0, -1); effector3.StartTime = 0.5f; effector3.StartTimeType = EnumEffectorTimeType.ToDeadSeconds; // 距离粒子生命结束0.5秒 effector3.EndTime = 0; effector3.EndTimeType = EnumEffectorTimeType.ToDeadSeconds; // 距离粒子生命结束0秒 emitter.AddEffector(effector3); GSORingParticleEmitter emitter2 = new GSORingParticleEmitter(); emitter2.TexturePath = strResPath + "/ParticleImage/fire_final_2.png"; emitter2.SetSizeFix(8, 8); //8,8 emitter2.VelFix = 30; //30 emitter2.GravityAcc = -3.0f; // 重力加速度 -3.0 emitter2.AngleXYFix = 0; emitter2.AngleXYRnd = 180; emitter2.AngleXZFix = 90; emitter2.AngleXZRnd = 5; emitter2.InnerRadius = 0; emitter2.OuterRadius = 30; //30 emitter2.LifeFix = 2.0f; emitter2.LifeRnd = 0.5f; emitter2.RotFix = 0; emitter2.RotRnd = 30; emitter2.RotVelFix = 0; emitter2.RotVelRnd = 60; emitter2.EmitPerSec = 300; emitter2.ColorRndStart = Color.FromArgb(255, 255, (int)(0.38 * 255), 0); emitter2.ColorRndEnd = Color.FromArgb(255, 255, (int)(0.404 * 255), 0); GSOColorParticleEffector effector4 = new GSOColorParticleEffector(); effector4.SetColorChanged(-1, -1, -1, 0); effector4.StartTime = 1; effector4.StartTimeType = EnumEffectorTimeType.ToDeadSeconds; // 距离粒子生命结束0.5秒 effector4.EndTime = 0; effector4.EndTimeType = EnumEffectorTimeType.ToDeadSeconds; // 距离粒子生命结束0秒 emitter2.AddEffector(effector4); GSORingParticleEmitter emitter3 = (GSORingParticleEmitter)emitter2.Clone(); emitter3.TexturePath = strResPath + "/ParticleImage/fire_final_1.png"; emitter3.GravityAcc = -2.0f; // 重力加速度 -2.0f // 将三个发射器添加到粒子对象中 geoParticle.AddEmitter(emitter); geoParticle.AddEmitter(emitter2); geoParticle.AddEmitter(emitter3); geoParticle.Play(); GSOFeature feature = new GSOFeature(); feature.Geometry = geoParticle; //globeControl1.Globe.MemoryLayer.AddFeature(feature); globeControl1.Globe.FlyToFeature(feature); return feature; }
// 添加火苗 private GSOFeature AddFire() { // 烟火示例 string strResPath = Path.GetDirectoryName(Application.ExecutablePath) + "/Resource"; // 烟火粒子示例,由三个发射器构成 GSOGeoParticle geoParticle = new GSOGeoParticle(); geoParticle.SetPosition(116.313, 39.84, 200); // 添加到这个经纬度位置 geoParticle.AltitudeMode = EnumAltitudeMode.RelativeToGround; GSORingParticleEmitter emitter = new GSORingParticleEmitter(); emitter.TexturePath = strResPath + "/ParticleImage/flare.png"; emitter.SetSizeFix(8, 8); emitter.VelFix = 25; emitter.VelRnd = 20; emitter.AngleXYFix = 0; emitter.AngleXYRnd = 180; emitter.AngleXZFix = 90; emitter.AngleXZRnd = 0; emitter.LifeFix = 0.5f; emitter.LifeRnd = 0.0f; emitter.RotFix = 0; emitter.RotRnd = 0; emitter.RotVelFix = 0; emitter.RotVelRnd = 0; emitter.EmitPerSec = 100; // 采用线性插值生成粒子的初始颜色 emitter.ColorRndStart = Color.White; emitter.ColorRndEnd = Color.Red; GSOColorParticleEffector effector2 = new GSOColorParticleEffector(); effector2.SetColorChanged(0, -1, -1, 0); effector2.StartTime = 0.0f; effector2.EndTime = -1.0f; emitter.AddEffector(effector2); // 将三个发射器添加到粒子对象中 geoParticle.AddEmitter(emitter); geoParticle.Play(); GSOFeature feature = new GSOFeature(); feature.Geometry = geoParticle; globeControl1.Globe.FlyToFeature(feature); return feature; }
//粒子系统 private void btn_Particle_Click(object sender, EventArgs e) { if (_glbControl.Globe.Ocean.Visible) { btn_Ocean.PerformClick(); } GSORectParticleEmitter emitter = new GSORectParticleEmitter(); //设置粒子初始大小 emitter.Length = 10; emitter.Width = 20; //纹理路径 emitter.TexturePath = _flarePath; //每秒喷射数量,每秒两个 emitter.EmitPerSec = 3; //重力加速度 emitter.GravityAcc = 8.9f; //场景中最大粒子数量,30个 emitter.MaxCount = 30; //初始粒子个数 emitter.InitCount = 20; //开始时间,从Play时开始(好像不管用) emitter.StartEmitTime = 30; //喷射持续时间 秒,默认负数,表示不限制 emitter.EndEmitTime = 50; //粒子存活时间 秒 emitter.LifeFix = 1; //粒子生命值变化范围(随机生命) emitter.LifeRnd = 10; //发射速度 米/s emitter.VelFix = 100; //发射速度变化范围 emitter.VelRnd = 10; //粒子初始旋转角度 度 emitter.RotFix = 1; //粒子初始旋转角度变化范围 emitter.RotRnd = 10; //粒子旋转速度 度/s emitter.RotVelFix = -180; //粒子旋转速度变化范围 emitter.RotVelRnd = 0; //粒子初始化大小倍数 emitter.SizeFix = new GSOPoint2d(10, 10); //粒子初始化大小倍数变化范围 emitter.SizeRnd = new GSOPoint2d(1, 1); //发射器方向角 emitter.AngleXYFix = 90; //发射器方向角变化范围,可以理解为XY范围值 emitter.AngleXYRnd = 0; //发射器高度角 emitter.AngleXZFix = 45; //发射器高度角变化范围,可以理解为XZ范围值 emitter.AngleXZRnd = 45; //粒子颜色变化初始值 emitter.ColorRndStart = Color.AliceBlue; //粒子颜色变化终止值 emitter.ColorRndEnd = Color.Gray; //亮度是否叠加 emitter.IsLumAdded = true; //是否独立于发射器 emitter.IsParticleIndepend = false; GSOScaleParticleEffector scaleEffect = new GSOScaleParticleEffector(); //设定变化值(相对初始化值X,Y值增加10倍) scaleEffect.SetScale(10, 10); //开始/结束生效的时间的类型,相对出生时间、百分比,还是相对死亡的时间、百分比,默认是相对出生的时间(秒) scaleEffect.StartTimeType = EnumEffectorTimeType.FromBornSeconds; scaleEffect.EndTimeType = EnumEffectorTimeType.FromBornSeconds; scaleEffect.StartTime = 1; scaleEffect.EndTime = 5; //添加效果 emitter.AddEffector(scaleEffect); //创建粒子场景要素 GSOGeoParticle geoParticle = new GSOGeoParticle(); //设置场景位置 geoParticle.SetPosition(_glbControl.Globe.CameraState.Longitude, _glbControl.Globe.CameraState.Latitude, 0); //将发射器添加到粒子场景要素中 geoParticle.AddEmitter(emitter); //播放 geoParticle.Play(); //创建要素 GSOFeature feature = new GSOFeature(); feature.Geometry = geoParticle; //添加要素 _glbControl.Globe.MemoryLayer.AddFeature(feature); _glbControl.Globe.JumpToFeature(feature, 100); }
//火 private void btn_Fire_Click(object sender, EventArgs e) { if (_glbControl.Globe.Ocean.Visible) { btn_Ocean.PerformClick(); } //烟火粒子示例,由三个发射器构成 GSOGeoParticle geoParticle = new GSOGeoParticle(); // 添加到相机当前经纬度位置 geoParticle.SetPosition(_glbControl.Globe.CameraState.Longitude, _glbControl.Globe.CameraState.Latitude, 0); //创建环形烟雾粒子发射器 GSORingParticleEmitter emitterSmoke = new GSORingParticleEmitter(); //添加烟雾纹理 emitterSmoke.TexturePath = _smokePath; //设置粒子大小 emitterSmoke.SetSizeFix(20, 20); //20,20 //初始速度 emitterSmoke.VelFix = 70; //70 //重力加速度(负值为向上加速) emitterSmoke.AccFix = -3.0f; //-0.3f //发射方向为四周,呈圆形 emitterSmoke.AngleXYFix = 0; emitterSmoke.AngleXYRnd = 180; //发射高度角为80-90度 emitterSmoke.AngleXZFix = 85; emitterSmoke.AngleXZRnd = 5; //内环半径 emitterSmoke.InnerRadius = 0; //外环半径 emitterSmoke.OuterRadius = 30; //生命1-3秒 emitterSmoke.LifeFix = 2.0f; emitterSmoke.LifeRnd = 1.0f; //初始旋转角度-10-10度 emitterSmoke.RotFix = 0; emitterSmoke.RotRnd = 10; //旋转速度-180-180度/s emitterSmoke.RotVelFix = -180; emitterSmoke.RotVelRnd = 0; //发射速度60个/s emitterSmoke.EmitPerSec = 60; emitterSmoke.ColorRndStart = Color.Black; emitterSmoke.ColorRndEnd = Color.Black; emitterSmoke.IsLumAdded = false; GSOScaleParticleEffector effectorSmokeStart = new GSOScaleParticleEffector(); effectorSmokeStart.SetScale(4, 4); //4,4 effectorSmokeStart.StartTime = 0; effectorSmokeStart.EndTime = 1.8f; // 添加效果器 emitterSmoke.AddEffector(effectorSmokeStart); GSOColorParticleEffector effectorSmokeEnd = new GSOColorParticleEffector(); effectorSmokeEnd.SetColorChanged(0.6f, 0.6f, 0.6f, 0); effectorSmokeEnd.StartTime = 0; // 负数表示整个粒子生命结束 effectorSmokeEnd.EndTime = -1; emitterSmoke.AddEffector(effectorSmokeEnd); GSOColorParticleEffector effector3 = new GSOColorParticleEffector(); //粒子透明 effector3.SetColorChanged(0, 0, 0, -1); // 距离粒子生命结束0.5秒 effector3.StartTime = 0.5f; effector3.StartTimeType = EnumEffectorTimeType.ToDeadSeconds; // 距离粒子生命结束0秒 effector3.EndTime = 0; effector3.EndTimeType = EnumEffectorTimeType.ToDeadSeconds; emitterSmoke.AddEffector(effector3); //火焰2发射器 GSORingParticleEmitter emitterFire2 = new GSORingParticleEmitter(); //添加火焰纹理 emitterFire2.TexturePath = _fire2Path; emitterFire2.SetSizeFix(8, 8); //8,8 emitterFire2.VelFix = 30; //30 // 重力加速度 -3.0 emitterFire2.GravityAcc = -3.0f; emitterFire2.AngleXYFix = 0; emitterFire2.AngleXYRnd = 180; emitterFire2.AngleXZFix = 90; emitterFire2.AngleXZRnd = 5; emitterFire2.InnerRadius = 0; emitterFire2.OuterRadius = 30; emitterFire2.LifeFix = 2.0f; emitterFire2.LifeRnd = 0.5f; emitterFire2.RotFix = 0; emitterFire2.RotRnd = 30; emitterFire2.RotVelFix = 0; emitterFire2.RotVelRnd = 60; emitterFire2.EmitPerSec = 300; emitterFire2.ColorRndStart = Color.FromArgb(255, 255, (int)(0.38 * 255), 0); emitterFire2.ColorRndEnd = Color.FromArgb(255, 255, (int)(0.404 * 255), 0); GSOColorParticleEffector fire2ColoreEffector = new GSOColorParticleEffector(); fire2ColoreEffector.SetColorChanged(-1, -1, -1, 0); // 距离粒子生命结束1秒 fire2ColoreEffector.StartTime = 1; fire2ColoreEffector.StartTimeType = EnumEffectorTimeType.ToDeadSeconds; // 距离粒子生命结束0秒 fire2ColoreEffector.EndTime = 0; fire2ColoreEffector.EndTimeType = EnumEffectorTimeType.ToDeadSeconds; emitterFire2.AddEffector(fire2ColoreEffector); //复制火焰2发射器为火焰1发射器 GSORingParticleEmitter emitterFire1 = (GSORingParticleEmitter)emitterFire2.Clone(); //修改纹理图片 emitterFire1.TexturePath = _fire1Path; //修改重力加速度为 -2.0f emitterFire1.GravityAcc = -2.0f; //将三个发射器添加到粒子对象中 geoParticle.AddEmitter(emitterSmoke); geoParticle.AddEmitter(emitterFire2); geoParticle.AddEmitter(emitterFire1); //播放动画效果 geoParticle.Play(); geoParticle.AltitudeMode = EnumAltitudeMode.RelativeToGround; //创建要素对象 GSOFeature feature = new GSOFeature(); feature.Geometry = geoParticle; _glbControl.Globe.MemoryLayer.AddFeature(feature); _glbControl.Globe.JumpToFeature(feature, 1000); }