Particles with Gravity.Z
Posted: Sun Jul 01, 2018 4:43 am
Hi, I'm trying to add a smoke trail behind my ships and missiles, but I can't make the particles to move with gravity over the Z axis, even though this option can be set up. It only works for the X and Y axis. Here's an example:
(I love those copy/paste projects as text)
Code: Select all
<?xml version="1.0" encoding="iso-8859-1" ?>
<ZApplication Name="App" Caption="ZGameEditor application" FileVersion="2">
<OnUpdate>
<Timer Interval="3">
<OnTimer>
<ZExpression>
<Expression>
<![CDATA[model m = createModel(EnemyMissile);
m.Position.X = random(0,5);
m.Position.Y = random(0,5);
m.Position.Z = -100;]]>
</Expression>
</ZExpression>
</OnTimer>
</Timer>
</OnUpdate>
<Content>
<Mesh Name="EnemyMissileMesh">
<Producers>
<MeshBox Comment="tube" Scale="0.3 0.3 2"/>
<MeshExpression VertexColors="255">
<Expression>
<![CDATA[c.R=0.8;
c.G=0.8;
c.B=0.8;]]>
</Expression>
</MeshExpression>
<MeshBox Comment="flaps vertical" Scale="0.1 1 1"/>
<MeshExpression VertexColors="255">
<Expression>
<![CDATA[c.R=1;
c.G=0.2;
c.B=0.2;]]>
</Expression>
</MeshExpression>
<MeshTransform Scale="1 0.8 0.8" Position="0 0 0.86" Rotation="0.875 0 0"/>
<MeshCombine/>
<MeshBox Comment="flaps horizontal" Scale="0.1 1 1"/>
<MeshExpression VertexColors="255">
<Expression>
<![CDATA[c.R=1;
c.G=0.2;
c.B=0.2;]]>
</Expression>
</MeshExpression>
<MeshTransform Scale="1 0.8 0.8" Position="0 0 0.86" Rotation="0.875 0 0.25"/>
<MeshCombine/>
<MeshSphere Comment="head" Scale="0.4 0.4 0.8" ZSamples="3" RadialSamples="4"/>
<MeshExpression VertexColors="255">
<Expression>
<![CDATA[c.R=1;
c.G=0.2;
c.B=0.2;]]>
</Expression>
</MeshExpression>
<MeshTransform Scale="1.06 1.06 1.6" Position="0 0 -2" Rotation="0 0 0.125"/>
<MeshCombine/>
</Producers>
</Mesh>
<Model Name="EnemyMissile" Category="2" CollisionBounds="0.6 0.6 3 0" CollisionOffset="0 0 -0.5" CollisionStyle="2" RenderOrder="1">
<OnSpawn>
<ZExpression>
<Expression>
<![CDATA[CurrentModel.Rotation.Y = .5;
CurrentModel.Velocity.Z = 20;]]>
</Expression>
</ZExpression>
</OnSpawn>
<OnUpdate>
<Condition Comment="Exit" Expression="return CurrentModel.Position.Z > 10;">
<OnTrue>
<RemoveModel/>
</OnTrue>
<OnFalse>
<ZExpression>
<Expression>
<![CDATA[CurrentModel.RotationVelocity.Z += .005;
CurrentModel.Velocity.Z += .2;]]>
</Expression>
</ZExpression>
</OnFalse>
</Condition>
</OnUpdate>
<OnRender>
<UseMaterial Material="FlatMaterial"/>
<RenderMesh Mesh="EnemyMissileMesh"/>
<UseMaterial Material="SmokeMaterial"/>
<RenderTransform Translate="0 0 1"/>
<RenderParticles ParticlesPerSecond="4" ParticleWidth="6" ParticleHeight="6" ParticleLifetime="3" AnimateSize="-1" Gravity="0 0 -5" FollowModel="0">
<OnEmitExpression>
<![CDATA[//Emit particle.
//PColor : particle color, PAngle : particle angle
this.PColor = vector3(.5,.5,.5);]]>
</OnEmitExpression>
</RenderParticles>
</OnRender>
</Model>
<Material Name="FlatMaterial" Shading="1"/>
<Bitmap Name="SmokeBitmap" Width="16" Height="16" Filter="2">
<Producers>
<BitmapRect/>
<BitmapBlur Radius="1"/>
<BitmapZoomRotate/>
</Producers>
</Bitmap>
<Material Name="SmokeMaterial" Shading="1" Light="0" SpecularColor="0 0 0 1" EmissionColor="0 0 0 1" Blend="2" DrawBackFace="255">
<Textures>
<MaterialTexture Texture="SmokeBitmap" TexCoords="1"/>
</Textures>
</Material>
</Content>
</ZApplication>