接下来就像填充积木一样,把GameScene里用到的东西一个个写完~~
先来个最简单的。GameBomb
一目了然
public class GameBomb : GameObject
{
public bool IsLive;
private int FrameIndex;
private int FrameMax;
private float FrameDelay;
private int FrameWidth;
private int FrameHeight;
private int FrameHalfWidth;
private int FrameHalfHeight;
private float time;
public GameBomb(Vector2 position, bool isBig, float duration)
{
this.Position = position;
this.FrameIndex = 0;
this.FrameMax = Config.BombSmallFrameMax;
this.FrameWidth = Config.BombSmallFrameWidth;
this.FrameHeight = Config.BombSmallFrameHeight;
this.FrameHalfWidth = this.FrameWidth / 2;
this.FrameHalfHeight = this.FrameHeight / 2;
this.FrameDelay = duration / (float)this.FrameMax;
this.IsLive = true;
}
public override void Update(float elapsedTime)
{
if ( IsLive == false )
{
return;
}
time += elapsedTime;
if ( time >= FrameDelay )
{
time -= FrameDelay;
FrameIndex++;
if ( FrameIndex >= FrameMax )
{
IsLive = false;
}
}
}
public override void Render(Graphics g)
{
if ( IsLive == false )
{
return;
}
g.DrawImage(Data.BombSource,
new Rectangle((int)Position.X - FrameHalfWidth, (int)Position.Y - FrameHalfHeight, FrameWidth, FrameHeight),
new Rectangle(FrameWidth * FrameIndex, 0, FrameWidth, FrameHeight),
GraphicsUnit.Pixel);
}
}
如果不熟悉的,估计是对2D类的精灵动画不太了解。。可以百度了解下。
或者简单讲解,就是按照时间,不断的绘制一样图片中不同位置的精灵~看起来就像动态的了。
接下来是它的管理类GameBombManager
public static class GameBombManager
{
private static List<GameBomb> mBombs = new List<GameBomb>();
public static void AddBomb(Vector2 position, bool isBig, float duration)
{
mBombs.Add(new GameBomb(position, isBig, duration));
}
public static void Update(float elapsedTime)
{
for ( int i = 0; i < mBombs.Count; i++ )
{
mBombs[i].Update(elapsedTime);
if ( mBombs[i].IsLive == false )
{
mBombs.RemoveAt(i);
i--;
continue;
}
}
}
public static void Render(Graphics g)
{
foreach ( GameBomb bomb in mBombs )
{
bomb.Render(g);
}
}
}
这个看起来就比我们之前见过的简单多了。。。
好,这章就这么结束了!!貌似有点少啊。。。
好吧,那接下来讲一个与游戏无关的,粒子系统(其实粒子系统在游戏中很重要,只是这个游戏很简单,没有用到而已)
public struct GameParticle
{
/// <summary>
/// 粒子位置
/// </summary>
public Vector2 Posit