基于C#弹幕类射击游戏的实现——(六)爆炸效果

接下来就像填充积木一样,把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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值