flash游戏编程基础教程 ,flash游戏制作教程及代码

现在是添加玩家和 NPC 的时候了。 为此,您需要编写一个 Car 类。 它将有一个 Move() 方法,玩家可以使用该方法控制他的汽车。 NPC 的移动将通过 Update() 完成,它只是更改 Y 坐标。

class Car{ constructor(image, x, y) { this.x = x; this.y = y; this.image = new Image(); this.image.src = image; } Update() { this.y = speed; } Move(v, d) { if(v == “x”) //X-axis movement { this.x = d; //Offset // if(this.x this.image.width * scale > canvas.width) { this.x -= d; } if(this.x canvas.height) { this.y -= d; } if(this.y < 0) { this.y = 0; } } }}

让我们创建第一个要检查的对象。

var objects = [ new Car(“images/car.png”, 15, 10)]; //An array of game objectsvar player = 0; //the number of the object controlled by the player

现在您需要向 Draw() 函数添加一个用于绘制汽车的命令。

for(var i = 0; i < objects.length; i ){ ctx.drawImage ( objects[i].image, //Render image 0, //Initial X position in the image 0, //Initial Y-axis position in the image objects[i].image.width, //Image width objects[i].image.height, //Image height objects[i].x, //X-axis position on the canvas objects[i].y, //Y-axis position on the canvas objects[i].image.width * scale, //The width of the image on the canvas multiplied by the scale objects[i].image.height * scale //The height of the image on the canvas multiplied by the scale );}

在按下键盘时调用的 KeyDown() 函数中,您需要添加对 Move() 方法的调用。

function KeyDown(e){ switch(e.keyCode) { case 37: //Left objects[player].Move(“x”, -speed); break; case 39: //Right objects[player].Move(“x”, speed); break; case 38: //Up objects[player].Move(“y”, -speed); break; case 40: //Down objects[player].Move(“y”, speed); break; case 27: //Esc if(timer == null) { Start(); } else { Stop(); } break; }}

现在您可以检查渲染和控制。

flash游戏编程基础教程 ,flash游戏制作教程及代码

碰撞时什么都没有发生,但这将在以后修复。 首先,您需要确保删除视图中丢失的对象。 这是为了避免堵塞 RAM。

在 Car 类中,我们添加值为 false 的字段 dead,然后在 Update() 方法中对其进行更改:

if(this.y > canvas.height 50){ this.dead = true;}

现在您需要更改游戏的更新功能,替换与对象关联的代码:

var hasDead = false; for(var i = 0; i < objects.length; i ){ if(i != player) { objects[i].Update(); if(objects[i].dead) { hasDead = true; } }} if(hasDead){ objects.shift();}

如果您不移除物体,当生成太多汽车时,游戏将开始降低计算机速度。

游戏物体碰撞

现在您可以开始实施碰撞。 为此,请为 Car 类编写一个方法 Collide(),它将检查汽车的坐标:

Collide(car){ var hit = false; if(this.y car.y) //If the objects are on the same line horizontally { if(this.x this.image.width * scale > car.x && this.x < car.x car.image.width * scale) //If the objects are on the same line vertically { hit = true; } } return hit;}

现在我们需要在 Update() 函数中添加碰撞检查:

var hit = false; for(var i = 0; i < objects.length; i ){ if(i != player) { hit = objects[player].Collide(objects[i]); if(hit) { alert(“You crashed!”); Stop(); break; } }}

这是游戏中的内容

flash游戏编程基础教程 ,flash游戏制作教程及代码

碰撞时可以添加任何逻辑:

打开动画;

添加效果;;

删除对象;

健康状况的改变,等等。

所有这些都由开发人员自行决定。

结论

这是一个非常简单的游戏,但足以了解 JS 如何处理图形以及一般如何创建游戏。 您可以在 GitHub 存储库中找到图像和完整的游戏代码。

使用画布非常适合处理图形:它提供了很棒的功能并且不会过多地加载浏览器。 我们现在也有一个可用的 WebGL 库(示例和用法),它可以为您提供大量的性能和 3D 工作(canvas 无法做到这一点)。

理解 WebGL 可能很困难——也许相反,许多人对尝试 Unity 引擎更感兴趣,它知道如何编译项目以在浏览器中运行它们。

 

本文来自投稿,不代表展天博客立场,如若转载,请注明出处:https://www.me900.com/284174.html

(0)

相关推荐

  • 新华保险公司保障您的财产安全

    近日,新华保险召开第八届董事会第一次会议,选举李全先生担任公司第八届董事会董事长(任职资格尚待中国银保监会核准)。 回顾2019至2022年第七届董事会期间,新华保险实现国企党的领导与公司治理相统一,积极服务国家战略,坚持高质量发展,不断巩固经营优势,夯实市场地位。 2019至2022年稳中有进 2019年底,公司第七届董事会提出“二次腾飞”的发展目标、“资…

    2023-06-06
  • 王宝强发文为陈思诚庆生

    2月22日,王宝强转发动态为陈思诚庆生,配文感性地表示“唐探这些年真的就像一场梦,逐梦少年生日快乐!兄弟永远18”。 作为多年的合作伙伴,王宝强为陈思诚庆生更体现了二人的兄弟情谊。除了为兄弟庆生,宝强也同时宣传了刚发布的《唐人街探案3》最新发布的推广曲MV,这个MV也回顾了唐探系列一路走来的心路历程。 网友们也深受二人情谊的触动,有网友评论“你们的兄弟情真让…

    2023-06-02 网络资讯
  • 中国军队现状研究分析

    中美俄作为世界三大军事强国,是被讨论最多的国家,为此中美俄的军事实力,也常拿来对比,那么中美俄的军事实力,到底有怎样的区别呢? 不论是兵力数量,还是武器装备,核武器等,都是世界领先的存在,规模巨大,以这样的基础下,俄罗斯浅浅的军事持续发展,都给自身带来了很大的帮助,一度成为世界第二大军事强国,仅次于**。 虽然说俄罗斯后劲不足,可也是实打实的实力,就是**也…

    2023-06-05
  • agoni什么意思,比较有气质的英文名字

    你不发一语,但清风凉雨、落花暖阳都在替你言语。今天可爱点小编准备了气质昵称英文,绽放人格魅力哈! Passion热情 Agoni、暮念 dialog对白 hushnow(安静) Shine(光芒) heat snow(热雪) Transparent 透明 healer (治愈者) Pussy 猫咪 Raccon浣熊 Marmalade 橘子酱 late su…

    2023-06-03
  • 部落冲突5本最强布局,部落冲突5本最强布局:完美攻略指南

    近日,位于非洲东北部的苏丹共和国再次爆发武装冲突,主要战场集中在首都喀土穆以及周边地区,这个曾深陷内战深渊的国家再度面临战乱。 如今,当苏丹军队的米格-29战斗机再次在喀土穆上空轰鸣而过,人们又将,目光聚焦到了这支几乎是从诞生之日开始就为了内战而生的军队。从总体实力上看,苏丹军队的空军和陆军即便在整个东北非地区来说也是不可小觑的力量。 苏丹空军装备的米格-2…

    2023-05-23
  • 李学庆个人资料简介及家世

    今年是中国职业男模诞生40周年,高端男刊《出色wsj》为纪念这一盛事,9月刊集结以李学庆为首的四大男模同登封面,展现时尚界最具代表的阳刚面孔。 封面以李学庆这位男模标志性人物,率赵磊、金大川和杨昊三位后继者,用镜头讲述中国男性时尚40年的变迁与发展,以及作为男模顶尖人物的奋斗与初心。 1980年中国成立首支模特时装表演队,当时清一色全是女性,直到1981年要…

    2023-06-04
  • 国外空间租用,国外空间与国内空间

    《国外空间租用:深入解析与实践考量》 一、国外空间租用的基本概念 也许在很多人眼中,国外空间租用是一个相对陌生的领域。它到底是什么呢?简单来说,就是通过向国外的服务器提供商租用空间,来搭建自己的网站或存储数据。就好像你在国内租了一套房子,而这里的国外空间就像是在国外租的一套房子一样。 我觉得国外空间租用之所以受到一些人的关注,可能是因为国内的网络环境和政策等…

    2025-08-23
  • 浏览器广告拦截,浏览器广告拦截怎么设置

    《浏览器广告拦截:从原理到实践》 一、广告拦截的原理 在当今的互联网世界中,广告无处不在,它们可能会出现在网页的各个角落,甚至会影响我们的浏览体验。而浏览器广告拦截技术就是为了解决这个问题而诞生的。那么,浏览器广告拦截是如何工作的呢? 也许我们可以把浏览器广告拦截比作一个门卫,它站在浏览器的门口,拦截那些不请自来的广告。这个门卫的工作原理主要是通过过滤网页中…

    2025-08-31
  • msn spaces,msn space是什么意思

    以下是一篇关于“msnspaces”的文章: 一、msnspaces的起源与发展 msnspaces可能是微软公司在社交媒体领域的一次尝试。它也许诞生于互联网快速发展的时期,当时人们对于在线分享生活、观点和信息的需求逐渐增加。我觉得它就像是互联网世界中的一个小角落,为用户提供了一个可以展示自己的平台。 在其发展初期,也许只是吸引了一部分微软用户的关注。这些用…

    2025-11-06
  • 比特币史诗级暴跌 ,为什么比特币会大跌

    比特币市值发生雪崩。这才半年的时间,比特币的价格已经从历史最高点跌到了最低点。 最开始市场价值将近7万美元,现在已经不1.8万美元了。暴跌了百分之70以上。 刚成为华人首富的赵长鹏一夜回到解放前。财产直接蒸发850亿美金,约合人民币5700亿。 去年他以比特币一飞冲天, 他以985亿美元的身价打败了农夫山泉成为了华人新首富。然而他身家最多的时候和现在比蒸发了…

    2023-06-06
  • 进入注册表命令,进入注册表的运行命令

    以下是一篇关于“进入注册表命令”的文章: 一、注册表的基本概念 注册表可能是Windows操作系统中一个比较神秘的部分,它就像是一个大型的数据库,存储着系统和应用程序的各种配置信息。我觉得可以把注册表想象成一个巨大的档案柜,里面存放着各种关于系统和软件的“档案”。这些“档案”包含了各种设置、参数、驱动程序信息等等。 注册表的结构比较复杂,它由多个层次的键和值…

    2025-09-29
  • 新武林外传 你知道新武林外传的故事吗

    新武林外传 游戏盒子 《武林外传》手游测评 新武林外传手游想知道盗圣是怎么输的吗?新武林外传推出蹴鞠比赛,牛年开启新气象!游戏讲述了武林白道人士与黑道人士相互争斗的故事,玩家也可扮演枪豪、剑客、术士、医师、神机等职业,来维护武林江湖的和平

    2023-06-05