网页游戏Flappy Birds从0开始制作(二):场景Land类

网页游戏Flappy Birds从0开始制作(二):场景Land类

整个游戏的思维方式是背景层向后移动,而bird是在原地上下跳跃来躲避管道,这种方式在2D游戏中很常见,比如某某跑酷类游戏。

Land类的编写实质上分为4个主要函数:

构造函数:给地图一个构造函数,并赋予其图片,位置,速度,以及canvas的绘制

var Land=function(img,x,speed,ctx){
	this.img=img;
	this.x=x;
	this.speed=speed;
	this.ctx=ctx;
}
然后就是Draw函数,将land绘制到Canvas中的函数(注意这个方法是在Land的原型上添加的,它是属于Land的)
Land.prototype.draw=function () {
	//画出背景land,设置初始坐标
	this.ctx.drawImage(
		this.img,this.x,488
		)
}
同样由于游戏是背景层的移动,所以我们需要多张背景land图片来交替显示,从而需要setNum方法:
Land.prototype.setNum=function (num) {
	Land.num=num;
}
最后就是背景更新函数,背景层以一定速度向后移动,当背景的x坐标低于某个值时,让其重新更新坐标,使其能完成交替效果:
Land.prototype.update=function(dt){

	this.x=this.x+this.speed*dt;
	console.log(this.x);
	if(this.x<-336){
		this.x=this.x+Land.num*336;
	}
}

以上就是Land类所有方法。

贴上源码:

//Land构造函数 
var Land=function(img,x,speed,ctx){
	this.img=img;
	this.x=x;
	this.speed=speed;
	this.ctx=ctx;
}
Land.prototype.draw=function () {
	//画出背景land,设置左上角坐标
	this.ctx.drawImage(
		this.img,this.x,488
		)
}
Land.prototype.setNum=function (num) {
	Land.num=num;
}
Land.prototype.update=function(dt){

	this.x=this.x+this.speed*dt;
	console.log(this.x);
	if(this.x<-336){
		this.x=this.x+Land.num*336;
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值