HTML5+JS游戏开发模块----发射多颗子弹

现在开始射击游戏中发射子弹模块,说实话,这是我上网查找资源自学后,自己捣鼓的。由于兴趣支撑,由于缺乏正规教程,而我又没有钱培训,基础不好也不敢冒险培训。所以,代码很初级,更多是为了实现某种目的,按键处理这块处理很不友好,不喜勿喷!


趁着还有点热爱,赶紧发发文章,避免一事无成。


多颗子弹有几个难点:

1.子弹对象

2.子弹的数组,保存很多子弹对象

3.怎样为不同的子弹加载独立的计时器

4.按键触发射击,怎样控制发射时间(百度好久,没找到解决方案,我只是简单设置固定时间差,效果很差)


首先,简单的html架构不说了,上子弹类构建,子弹类有xy方向属性,有绘画属性,有运动属性,有独立计时器

//子弹类
function Bullet(x,y,direct){
	this.x=x;
	this.y=y;
	this.direct=direct;//方向
	this.timer;//每个子弹分配一个计时器
}
//画子弹属性
Bullet.prototype.draw=function(){
		//画出所有子弹
		for(var i=0;i
接下来,开始子弹数组以及为子弹开设独立定时器

//初始化子弹对象数组,按下一次键就创建一个对象实例
bull=[];
Bu=new Bullet(400,150,direct);
bull.push(Bu);//将子弹对象推入数组
bull[bull.length-1].timer=setInterval('bull['+(bull.length-1)+'].run()',50);//设置独立定时器

到此,子弹发射的子弹数组,子弹独立运动基本上完成,上面代码注释已经很详细了,相信大家应该都能够看懂,接下来无法就是按键触发,页面不断清除,重画过程

老规矩,我设置的程序入口game()函数

代码如下

document.body.οnlοad=game();//程序入口
程序初始化init()函数,程序不断刷新重画函数gameLoop()使用requestAnimationFrame兼容动画计时器进行不断刷新,原谅我无法解释,我在网上抄来的。


最后,说明下,长空格键发射子弹,方向是随机产生的,后期笔记会跟随发射对象方向,子弹不做边界检测,不做碰撞检测,后期笔记在加上。只有试过,才知道原来自己这么差劲,加油!

完整代码

你可能感兴趣的:(HTML5+JS游戏开发模块----发射多颗子弹)