• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > html5游戏开发-零基础开发RPG游戏-开源讲座(三)-卷轴&对话实现 ... ...

html5游戏开发-零基础开发RPG游戏-开源讲座(三)-卷轴&对话实现 ... ...

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5教程,HTML5中国,html5游戏开发-零基础开发RPG游戏-开源讲座(三)-卷轴&对话实现等相关知识,匿名希望在学习及工作中可以帮助到您
了解上两篇的内容请点击:

html5游戏开发-零基础开发RPG游戏-开源讲座(一)

http://www.html5cn.org/article-1737-1.html

html5游戏开发-零基础开发RPG游戏-开源讲座(二)-跑起来吧英雄

http://www.html5cn.org/article-1738-1.html

前两篇,RPG的开发已经实现了添加地图和添加游戏人物,本篇来实现地图的卷轴滚动和人物对话的实现,效果如下

1111.gif



本次开发,更新了一下库件至1.3,请点击下面的链接,下载库件1.3版以上版本

http://code.google.com/p/legendforhtml5programming/downloads/list

地图的滚动

关于地图的滚动原理,可以参照下图

1212.gif



按照上图说明,实现地图滚动,只需要先把即将出现的地图(图中黄色部分)画上,然后滚动地图,待地图滚动完毕之后,将屏幕之外的部分(图中绿色部分)移除

首先要添加一个变量来控制地图是否滚动
  • var mapmove = false;
  • 复制代码
    然后,在人物移动的时候,判断地图是否需要滚动
  • * 地图是否滚动
  • **/
  • Character.prototype.checkMap = function (dir){
  • var self = this;
  • mapmove = false;
  • //如果不是英雄,则地图不需要滚动
  • if(!self.isHero)return;

  • switch (dir){
  • case UP:
  • if(self.y + charaLayer.y> STEP)break;
  • if(mapLayer.y >= 0)break;
  • addMap(0,-1);
  • mapmove = true;
  • break;
  • case LEFT:
  • if(self.x + charaLayer.x > STEP)break;
  • if(mapLayer.x >= 0)break;
  • addMap(-1,0);
  • mapmove = true;
  • break;
  • case RIGHT:
  • if(self.x < 480 - 2*STEP)break;
  • if(480 - mapLayer.x >= map[0].length*STEP)break;
  • addMap(1,0);
  • mapmove = true;
  • break;
  • case DOWN:
  • if(self.y < 288 - 2*STEP)break;
  • if(288 - mapLayer.y >= map.length*STEP)break;
  • addMap(0,1);
  • mapmove = true;
  • break;
  • }
  • };
  • 复制代码
    在移动过程中,判断地图是否处于滚动状态,如果地图处于滚动,则滚动地图,否则移动人物
  • * 开始移动
  • **/
  • Character.prototype.onmove = function (){
  • var self = this;
  • //设定一个移动步长中的移动次数
  • var ml_cnt = 4;
  • //计算一次移动的长度
  • var ml = STEP/ml_cnt;
  • //根据移动方向,开始移动
  • switch (self.direction){
  • case UP:
  • if(mapmove){
  • mapLayer.y += ml;
  • charaLayer.y += ml;
  • }
  • self.y -= ml;
  • break;
  • case LEFT:
  • if(mapmove){
  • mapLayer.x += ml;
  • charaLayer.x += ml;
  • }
  • self.x -= ml;
  • break;
  • case RIGHT:
  • if(mapmove){
  • mapLayer.x -= ml;
  • charaLayer.x -= ml;
  • }
  • self.x += ml;
  • break;
  • case DOWN:
  • if(mapmove){
  • mapLayer.y -= ml;
  • charaLayer.y -= ml;
  • }
  • self.y += ml;
  • break;
  • }
  • self.moveIndex++;
  • //当移动次数等于设定的次数,开始判断是否继续移动
  • if(self.moveIndex >= ml_cnt){
  • //一个地图步长移动完成后,如果地图处于滚动状态,则移除多余地图块
  • if(mapmove)delMap();
  • self.moveIndex = 0;
  • //如果已经松开移动键,或者前方为障碍物,则停止移动,否则继续移动
  • if(!isKeyDown || !self.checkRoad()){
  • self.move = false;
  • return;
  • }else if(self.direction != self.direction_next){
  • self.direction = self.direction_next;
  • self.anime.setAction(self.direction);
  • }
  • //地图是否滚动
  • self.checkMap(self.direction);
  • }
  • };
  • 复制代码
    最后,将地图的数组和地形扩大为大于屏幕大小
  • var map = [
  • [18,18,18,18,18,18,18,18,18,18,18,18,55,55,18,18,18],
  • [18,18,18,17,17,17,17,17,17,17,17,17,55,55,17,17,18],
  • [18,18,17,17,17,17,18,18,17,17,17,17,55,55,17,17,18],
  • [18,17,17,17,18,18,18,18,18,17,17,55,55,17,17,17,18],
  • [18,17,17,18,22,23,23,23,24,18,17,55,55,17,17,17,18],
  • [18,17,17,18,25,28,26,79,27,18,55,55,17,17,17,17,18],
  • [18,17,17,17,17,10,11,12,18,18,55,55,17,17,17,17,18],
  • [18,18,17,17,10,16,16,16,11,55,55,17,17,17,17,17,18],
  • [18,18,17,17,77,16,16,16,16,21,21,17,17,17,17,17,18],
  • [18,18,17,17,77,16,16,16,16,55,55,17,17,17,17,17,18],
  • [18,18,18,18,18,18,18,18,18,55,55,18,18,18,18,18,18]
  • ];
  • //地图地形数组
  • var mapdata = [
  • [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
  • [1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1],
  • [1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1],
  • [1,0,0,0,1,1,1,1,1,0,0,1,1,0,0,0,1],
  • [1,0,0,1,1,1,1,1,1,1,0,1,1,0,0,0,1],
  • [1,0,0,1,1,1,0,1,1,1,1,1,0,0,0,0,1],
  • [1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1],
  • [1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1],
  • [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
  • [1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1],
  • [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
  • ];
  • 复制代码
    为了实现地图滚动,修改添加地图的方法,根据参数来实现添加上面图片的黄色地图

    您可能想查找下面的文章:

    • 一款利用html5和css3动画排列人物头像的实例演示
    • html5教程调用绘图api画简单的圆形代码分享
    • html5教程画矩形代码分享
    • html5教程制作简单画板代码分享
    • html5基础教程常用技巧整理
    • html5教程-Canvas入门
    • html5教程画矩形代码分享
    • HTML5晃动DeviceMotionEvent事件
    • HTML5教程之html 5 本地数据库(Web Sql Database)
    • HTML5中对contenteditable属性的解释与规定

    相关文章

    • 2018-12-03关于移动页面的详细介绍
    • 2018-12-03H5响应式网站效果怎么样?
    • 2018-12-03canvas像素点操作之视频绿幕抠图
    • 2018-12-03HTML5学习心得总结(推荐)
    • 2018-12-03详细介绍HTML5实现3D迷宫的代码案例
    • 2018-12-03SVG ClipPath实现六边形图像的方法
    • 2017-08-06用HTML5中的Canvas结合公式绘制粒子运动的教程
    • 2018-12-03如何使用HTML5实现多个元素的拖放功能
    • 2018-12-03Html5web本地存储实例详细说明
    • 2018-12-03都说H5游戏好开发,但是开发之后怎么办,渠道怎么找?目前国内H5游戏现状如何,未来又如何规划?

    文章分类

    • html/xhtml
    • html5
    • CSS
    • XML/XSLT
    • Dreamweaver教程
    • Frontpage教程
    • 心得技巧
    • bootstrap
    • vue
    • AngularJS
    • HBuilder教程
    • css3
    • 浏览器兼容
    • div/css
    • 网页编辑器
    • axure

    最近更新的内容

      • Html5上传图片 移动端、PC端的通用代码分享
      • 中期来看,如果基于 HTML5 的应用和游戏大量涌现,iOS 相对于 Android 的应用优势将会大幅削弱?苹果有何应对措施?
      • HTML5 canvas基本绘图之图形组合
      • HTML5+CSS3:3D展示商品信息示例
      • 详解HTML5网页录音和压缩的示例代码
      • Android使WebView支持HTML5 Video全屏播放的方法分享(图)
      • HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载_html5教程技巧
      • 用html5 js实现浏览器全屏
      • 用canvas+gif.js实现数字雨头像的方法
      • 使用jQuery HTML5和FormData上传文件的方法示例

    关于我们 - 联系我们 - 免责声明 - 网站地图

    ©2020-2025 All Rights Reserved. linkedu.com 版权所有