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)

相关推荐

  • 如何制作烤鱼

    周末版烤鱼,简单健康 By 辣自由 用料草鱼(身体部位) 1000克胡萝卜 1个土豆 1个山药 1截约250克莴笋 半截黑木耳 250克金针菇 450克粉丝 50克花生米 适量料酒 30g菜籽油 适量盐 少许香葱,香菜 随意豆瓣酱 2勺火锅底料 适量做法步骤 1、新鲜草鱼约1000克,提前腌制(常规调料盐,料酒,姜丝海鲜酱油),放冰箱2小时左右 4、烤盘底部…

    网络资讯 2023-05-18
  • gatewaytimeout,gatewaytimeout最新版本更新内容

    以下是一篇关于“gatewaytimeout”的文章: 一、引言 在网络世界中,“gatewaytimeout”这个问题似乎时不时就会冒出来,给我们的上网体验带来一些困扰。也许你在浏览网页时,突然遇到页面加载缓慢,最后显示“gatewaytimeout”;也许你在进行网络通信时,会收到这个错误提示。那么,“gatewaytimeout”到底是什么?它是如何产…

    2025-12-13
  • 如何利用重生庶手遮天改变未来,谢公子怎么火的

    一个字都不舍得丢掉,语言幽默风趣,情节合理,故事曲折却不揪心,一切尽在掌握,而又不显得突兀,这才是一篇好的重生文,故事别具一格,完全没有俗套剧情,引人入胜,关键时刻又给你意想不到的结果。文整个文都很幽默,看得人很开心,不论是对话还是查案过程都很精彩,语言幽默风趣,是本让人欢乐的小说。男女主都带着上世的记忆重生,在这一世携手合作,筹谋布局,揭魑魅魍魉,共创幸福…

    2023-06-02
  • grow的过去式 Have plants grown in the past

    grow可以用作及物动词和不及物动词。最常见的意思是“生长,成长,长大”,它是作为不及物动词。比如:Orange trees won’t grow in this climate.在这种气候下,橘子树是不长不长的。Around them, roses grow in great abundance.四周都长满了玫瑰。 作为不及物动词grow还可以…

    网络资讯 2023-06-04
  • 中秋节是仅次于春节的重要节日

    新华社台北9月9日电(记者岳夕彤 齐湘辉)9月10日恰逢中华民族传统佳节中秋节。海上生明月,天涯共此时。在**,中秋节是仅次于春节的重要传统节日,人们格外看重这个“团圆节”。 中秋吃糕饼,月圆人团圆。中秋节前,**以凤梨酥为代表的各式糕点总是分外抢手。台北市南京东路上一家“佳德糕饼”店,连续数日门前大排长龙,队伍足足绕了两圈,有人一买就是十几盒。 “我早上八…

    网络资讯 2023-06-04
  • 怎么用电脑打电话,电脑打电话的软件

    怎么用电脑打电话? 随着科技的不断发展,电脑已经不仅仅是用于办公和娱乐的工具,它还可以用来打电话。这为我们的生活和工作带来了很大的便利。那么,怎么用电脑打电话呢?下面我们就来详细介绍一下。 一、安装相关软件要在电脑上打电话,首先需要安装一款合适的软件。目前市面上有很多种可以用于电脑打电话的软件,比如Skype、微信、钉钉等。这些软件都提供了语音通话和视频通话…

    网络资讯 2025-07-30
  • emule 服务器列表,emule server.met

    《emule服务器列表:深入探索与解析》一、emule服务器列表的基本概念emule服务器列表,也许可以理解为是emule软件运行过程中所连接的服务器的集合。就好像我们在网络世界中旅行,这些服务器就是我们旅途中的一个个驿站,为我们提供文件共享的服务。在emule中,服务器扮演着重要的角色。它们负责管理文件的索引、存储和传输等任务。通过连接到不同的服务器,我们…

    网络资讯 2025-10-07
  • 新中国四大美女是哪四位美女

    上世纪八九十年代的香港,诞生过无数经典的影视剧,也出现了许多耀眼的女星。 在没有美颜和滤镜的年代,她们只凭天然美,就闪耀得不可方物。 她们有的妩媚妖娆,有的英姿逼人,有的七窍玲珑。环肥燕瘦,风姿绰约,惊艳了一个时代。 01.“仪态万方”赵雅芝 赵雅芝在《上海滩》里饰演的冯程程,如耀眼的彗星划破夜空一般,火遍大街小巷。 她那娉婷秀雅、仪态万方的高级美,也走进了…

    2023-06-01 网络资讯
  • history.go,history构词起源

    以下是一篇关于“history.go”的文章: 一、什么是history.go 也许你在浏览网页时,偶尔会看到“history.go”这个词。它到底是什么呢?我觉得它像是浏览器中的一个神秘按钮,或者说是一个隐藏的通道。 就好像你在一个巨大的图书馆里,history.go就像是一本特殊的目录,能够让你快速回到之前去过的某个页面。你可以想象一下,当你在网上浏览了…

    2025-08-28
  • 大连口碑网,大连美食:最新最全的口碑推荐

    别看是家肠粉店,哪知道居然开了6年之久,他家最经典的就是鸡蛋瘦肉肠粉,分大小份的那种。肠粉是关键,薄如蝉翼的肠粉包裹着馅料,若隐若现。嫩和韧性俱在,真的很难得,有了酱汁的调剂,吃起来鲜香软嫩,每吃一口都是一种享受。 螺蛳粉小吃店:王味轩螺蛳粉 特色:螺蛳粉 叉烧肉 坐标:世纪街 螺蛳粉广西的一道特色小吃,“臭”的没商量,不过吃过一次就爱上的味道。汤鲜粉嫩,关…

    2023-05-23
  • 跨境电子商务个人额度查询平台,跨境电子商务个人额度查询服务

    来源:12360海关热线 海关小贴士 2 1 如何查询跨境电商个人额度? 您可以通过“掌上海关”的APP或微信小程序,经注册和实名认证后即可查询个人身份信息项下的跨境电商年度消费额度、个人物品通关数据等信息。 海关小贴士 3 1 退货后个人额度是否会恢复? 如果您购买的商品是通过跨境电商零售进口进来的,电子商务企业或者其代理人可以在海关放行之日起30天内申请…

    网络资讯 2023-05-14
  • 夜袭阳明堡的故事,阳明堡之战的真实情况

    还原夜袭阳明堡战斗场景的油画。周武发 作 在山西省代县小茹村附近,矗立着一座高耸的纪念碑,碑上镌刻着陈锡联将军题写的“阳明堡飞机场遗址”8个大字。83年前的秋夜,八路军第129师向华北前线开进途中,在这里打了一场大胜仗,创造了用步兵打战机的战例。 带着对这段峥嵘历史的敬仰,近日,记者随小茹村村委会原主任赵喜生踏上一段乡间小路,探访夜袭阳明堡战斗遗址。 赵喜生…

    2023-06-06