html5游戏开发简单入门指南.docx_第1页
html5游戏开发简单入门指南.docx_第2页
html5游戏开发简单入门指南.docx_第3页
html5游戏开发简单入门指南.docx_第4页
html5游戏开发简单入门指南.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HTML5游戏制作完全指南简介你想使用HTML5的Canvas制作一款游戏吗?跟着这个教程,你将立刻上道儿。阅读该教程需要至少熟悉javascript相关知识。你可以先玩这款游戏或者直接阅读文章并且下载游戏源码。创建画布在画任何东西之前,我们必须创建一个画布。因为这是完全指南,并且我们将用到jQuery.var CANVAS_WIDTH = 480;var CANVAS_HEIGHT = 320;var canvasElement = $();var canvas = canvasElement.get(0).getContext(2d);canvasElement.appendTo(body);游戏循环为了呈现给玩家连贯流畅的游戏动画,我们要频繁地渲染画布来欺骗玩家的眼睛。var FPS = 30;setInterval(function() update(); draw();, 1000/FPS);现在我们先不管update和draw里面的实现,重要的是我们要知道setInterval()会周期性的执行update和drawHello world现在我们已经搭建好了一个循环的架子,我们去修改update和draw方法来写一些文字到屏幕。function draw() canvas.fillStyle = #000; / Set color to black canvas.fillText(Sup Bro!, 50, 50);专家提醒: 当你稍微更改了一些代码的时候就执行一下程序,这样可以更快的找到程序出错地方。静止文字正常的显示出来了。因为我们已经有了循环,所以我们可以很容易地让文字动起来var textX = 50;var textY = 50;function update() textX += 1; textY += 1;function draw() canvas.fillStyle = #000; canvas.fillText(Sup Bro!, textX, textY);执行程序。如果你一步一步照着上面做下来,可以看到文字移动。但是上一次的文字却还留在屏幕上,因为我们没有擦除画布。现在我们在draw方法中加入擦除方法。function draw() canvas.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); canvas.fillStyle = #000; canvas.fillText(Sup Bro!, textX, textY);现在你可以看到文字在屏幕上移动了,它已经算是一个真正意义上的游戏,只不过是个半成品。创建player创建一个包含player所有信息的对象,并且要有draw方法。这里创建了一个简单的对象包含了所有的player信息。var player = color: #00A, x: 220, y: 270, width: 32, height: 32, draw: function() canvas.fillStyle = this.color; canvas.fillRect(this.x, this.y, this.width, this.height); ;我们现在用一个纯色的矩形来代表player.当我们把它加入游戏当中的时候,我们需要清除画布并且画上player.function draw() canvas.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); player.draw();键盘控制使用jQuery HotkeysjQuery Hotkeys plugin在处理键盘行为的时候,可以更加容易的兼容不同的浏览器。让开发者不用因为不同浏览器之间的keyCodeandcharCode不同而苦恼,我们这样绑定事件:$(document).bind(keydown, left, function() . );移动playerfunction update() if (keydown.left) player.x -= 2; if (keydown.right) player.x += 2; 是不是感觉移动不够快?那么我们来提高它的移动速度。function update() if (keydown.left) player.x -= 5; if (keydown.right) player.x += 5; player.x = player.x.clamp(0, CANVAS_WIDTH - player.width);我们可以很容易的添加其他元素,比如炮弹:function update() if (keydown.space) player.shoot(); if (keydown.left) player.x -= 5; if (keydown.right) player.x += 5; player.x = player.x.clamp(0, CANVAS_WIDTH - player.width);player.shoot = function() console.log(Pew pew); / :) Well at least adding the key binding was easy.;添加更多游戏元素炮弹我们开始真正意义上的添加炮弹,首先,我们需要一个集合来存储它:var playerBullets = ;然后,我们需要一个构造器来创建炮弹:function Bullet(I) I.active = true; I.xVelocity = 0; I.yVelocity = -I.speed; I.width = 3; I.height = 3; I.color = #000; I.inBounds = function() return I.x = 0 & I.x = 0 & I.y = 0 & I.x = 0 & I.y = CANVAS_HEIGHT; ; I.draw = function() canvas.fillStyle = this.color; canvas.fillRect(this.x, this.y, this.width, this.height); ; I.update = function() I.x += I.xVelocity; I.y += I.yVelocity; I.xVelocity = 3 * Math.sin(I.age * Math.PI / 64); I.age+; I.active = I.active & I.inBounds(); ; return I;function update() . enemies.forEach(function(enemy) enemy.update(); ); enemies = enemies.filter(function(enemy) return enemy.active; ); if(Math.random() 0.1) enemies.push(Enemy(); ;function draw() . enemies.forEach(function(enemy) enemy.draw(); );使用图片player.sprite = Sprite(player);player.draw = function() this.sprite.draw(canvas, this.x, this.y);function Enemy(I) . I.sprite = Sprite(enemy); I.draw = function() this.sprite.draw(canvas, this.x, this.y); ; .碰撞检测function collides(a, b) return a.x b.x & a.y b.y;function handleCollisions() playerBullets.forEach(function(bullet) enemies.forEach(function(enemy) if (collides(bullet, enemy) enemy.explode(); bullet.active = false; ); ); enemies.forEach(function(enemy) if (collides(enemy, player) enemy.explode(); player.explode(); );function update() . handleCollisions();function Enemy(I) . I.explode = function() this.active = false; / Extra Credit: Add an explosion graphic ; return I;player.explode = function() this.active = false; / Extra Credit: Add an explosion graphic and then end the game;加入声音function Enemy(I) . I.exp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论