自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (1)
  • 收藏
  • 关注

原创 制作一款打飞机游戏53:子弹样式

我们想要创建一个子弹模式系统,其中包含多种模式模块,这些模块可以相互叠加和修改,以创建出复杂的子弹图案。例如,一个基础模块可能只是一个简单飞向一个方向的子弹,而一个修饰符模块则可以将这个基础模块变成多个子弹或改变它们的发射方向。在开始之前,我想修正一下,因为我观察到在其他射击游戏中有一个我想复制的简单行为。我们有静态射击、瞄准射击和快速射击,但在快速射击之前或之后,还有一种行为,我们可以称之为3a和b。在设计和实现过程中,我遇到了一些问题,比如精灵之间的重叠和空间不足。

2025-05-21 12:22:07 62

原创 制作一款打飞机游戏52:子弹模式

到目前为止,我们已经完成了很多工作:. ‌‌:动画系统已经存在并整合完成。. ‌‌:我们使用了统一碰撞盒逻辑。. ‌‌:涵盖了HP、Brain、动画、碰撞盒等内容,一切都被数据库系统管理。不过,还有一些工作需要完善,比如当前的计划生成系统(或称为编辑器)没有良好的预览功能,特别是与“大脑”(敌人的行为系统)相关的部分还没有很好地链接起来。

2025-05-20 13:19:22 206

原创 制作一款打飞机游戏51:boss行为

我们现在的系统可以创造出非常有趣的行为模式,让敌人沿着不同的路径移动,甚至可以跟随玩家。今天,我们想测试一下这个系统,看看是否能创造出更复杂的行为,比如适用于BOSS战的行为。

2025-05-19 13:03:57 284

原创 制作一款打飞机游戏50:敌人跟随

在实现追踪功能时,我们遇到了一个问题:当使用克隆命令时,每个克隆体都会有自己的覆盖层,这让我们有点难以处理。为了让敌人能够平滑地转向玩家,我们需要计算敌人当前角度与目标角度之间的差值,并根据这个差值来调整敌人的角度。但是,在计算角度时,我们遇到了一个度的问题:当角度跨越度时,计算会变得复杂。因此,我们决定当敌人靠近玩家到一定程度时,就停止跟随,而是继续沿着之前的轨迹移动。为了解决这个问题,我们决定当角度差值的绝对值大于度时,就通过加减度来调整角度,以确保敌人总是选择最短的路径来转向玩家。

2025-05-16 13:01:53 323

原创 制作一款打飞机游戏49:敌人抖动

蛇形敌人如果你玩过一些射击游戏(shmups),尤其是老式的射击游戏,你可能会遇到一种敌人,它们像蛇一样移动。我想在我们的游戏中实现这种效果。这种动态的感觉非常棒,我们完全有能力通过动画来实现它。

2025-05-15 12:55:48 514

原创 制作一款打飞机游戏48:敌人转向

我们还设置了一个简单的逻辑,当闪光效果的年龄(存在时间)超过一定值时,就将其删除。为了让转向动作更自然,我们还引入了动画速度(ASP)和动画方向(ADR)的概念,使敌人的移动更加平滑。当我们执行这个命令时,敌人会发射一个子弹,尽管现在我们还不知道子弹的具体类型和参数。我们通过添加一个可移动的红色线条来实现这一点,当代码执行到某一行时,这条线就会移动到对应的位置。目前,敌人还不能射击,这显然是不行的。有趣的是,我们创造了自己的编程语言,现在还需要为它编写调试工具,以确保我们编写的代码没有bug。

2025-05-14 12:38:03 275

原创 制作一款打飞机游戏47:跳转

虽然现代编程中很少使用这种命令,因为它可能会导致代码难以理解和维护,但在我们的游戏中,它可能会有一些有趣的用途。例如,在BOSS战中,我们可以将BOSS的不同阶段分成多个“大脑”(Brain),然后在每个阶段的末尾使用“跳转”命令切换到下一个“大脑”。但上次我们遇到了一些问题,我们发现在这个编辑器中编写代码有时有点困难,因为当你想要在某行之间插入内容时,你不得不删除一切然后重新构建。现在,只有当光标停留在某行时,该行的末尾才会显示加号按钮,这样我们就可以方便地在那里插入新行了。

2025-05-13 13:44:43 469

原创 制作一款打飞机游戏46:攻击模式

接下来,我们要创建一些测试敌人行为,并以此为灵感来扩展我们的“脑力”。这样,当游戏中出现问题时,我就能立即看出是哪个敌人引起的。我准备了一些临时的敌人精灵,并为它们创建了动画帧。我注意到,在实际使用这些工具时,可能会遇到一些问题,我们需要根据实际情况进行修复和改进。在创建敌人精灵的过程中,我发现了一些工具上的不便之处。在过程中,我发现了一些需要改进的地方,比如动画的流畅性、速度控制的精确性等。我还添加了一个新命令。(Animate Speed),用于动画化敌人的速度,使它们的移动看起来更加自然。

2025-05-13 12:52:08 661

原创 制作一款打飞机游戏45:简单攻击

首先,我们要加载cow(可能是某个项目或资源),然后直接处理粒子系统。我们可以用为玩家创建的新对象来替代它,即PSPR的X和Y。PSPR是一个功能或特性,它将粒子锁定在玩家的位置上,这样我们就可以将东西附加到玩家上。顺便说一句,这也可以是PY,这样可以稍微节省一些标记。我们的目标是创建一个设置菜单,允许用户为每个Brain设置预览参数,如动画、动画速度、生成位置等。然后,我在编辑器中实现了这个设置菜单,允许用户编辑和查看元数据。在编辑器中,我们可以将敌人移动到负滚动值或当前滚动值之前,这显然是不合理的。

2025-05-12 13:02:31 185

原创 制作一款打飞机游戏44:行为预览

今天,我们要来谈谈“脑子”。此外,我们还注意到,无论我们选择哪个“脑子”,预览时总是显示同一个敌人(UFO敌人)。为了解决这个问题,我们计划添加一些元数据,将不同的敌人类型或精灵与特定的“脑子”关联起来。这样,我们就可以为不同的敌人预览不同的“脑子”了。首先,我们创建了一个空的敌人数组,并在更新函数中检查如果没有敌人存在,就生成一个新的敌人。为了解决这个问题,我们添加了一个检查,如果敌人不在屏幕上,就删除它,并在下一帧触发一个新的敌人生成。接下来,我们要添加一些函数,用于创建敌人、绘制敌人和移动敌人。

2025-05-12 12:41:50 281

原创 制作一款打飞机游戏43:行为编辑

我想,在设计大脑编辑器的布局时,可以借鉴我们之前做精灵编辑的方式。另外,我们看到屏幕上同时显示了两个大脑(大脑1和大脑2),但我们可能不希望同时编辑多个大脑,而是一次只看到一个大脑。我想把这个菜单项叫做“设置”,并且用一个特殊的字符来表示它,比如一个钻石形状,表示这会打开一个新的菜单。此外,我们还需要创建一个UI标签,因为我们是基于模板新鲜创建的,而模板中没有UI标签。我们会遍历所有的大脑,并为每个大脑绘制相应的命令和参数。另外,我还想添加一些新功能,比如能够在不同的大脑之间切换,以及编辑单个命令或参数。

2025-05-12 12:29:19 666

原创 制作一款打飞机游戏42:敌人大脑

我们还有一个“敌人大脑”系统,

2025-05-09 13:14:58 740

原创 制作一款打飞机游戏41:敌机拖拽

为此,我们增加了通过右键或特定按键(如PICO 8上的圆圈按钮)退出编辑模式的功能。之后,我们实现了切换敌人类型的功能。这需要我们处理键盘和鼠标的交互,并确保类型切换在逻辑上是正确的。最后,我们添加了移动功能,允许用户通过方向键或鼠标点击来移动敌人的生成点。在实现基本功能后,我们还做了一些界面优化,比如在屏幕底部显示当前生成点的坐标。此外,我们还添加了复制功能,允许用户复制敌人并移动到新位置。,用于处理所有按钮的命令,包括删除(Del N)、复制(Copy N)和移动(Move N)。

2025-05-08 12:34:38 390

原创 制作一款打飞机游戏40:点选敌人

我们最初采用的是一种在现代UI设计中非常常见的范式,即“所见即所得”(WYSIWYG)。然而,在编辑游戏日程时,我们遇到了一个问题:我们正在编辑的内容(敌人的生成事件)并不总是在屏幕上可见。为了解决这个问题,我们添加了一个额外的时间线UI,用于显示生成事件。目前,我们的编辑器界面有一侧边栏时间线,用户可以通过鼠标或键盘与时间线进行交互。我们还提供了一个预览界面和UI覆盖层,用于显示不同敌人的生成位置等信息。我们希望能够恢复一些“所见即所得”的感觉,让用户能够直接点击并移动屏幕上的敌人。

2025-05-07 13:32:09 446

原创 制作一款打飞机游戏39:鼠标控制

然而,当我滚动时间线时,发现了一个问题:如果两个敌人在相近的时间生成,它们在时间线上会显示为重叠。为了解决这个问题,我添加了一个系统来计算每个敌人的生成位置,并在时间线上相应地绘制它们。我创建了一个名为“添加敌人”的按钮,并为其编写了相应的更新函数。现在,当我按下键盘上的“X”键时,会弹出菜单,然后我可以选择“添加敌人”命令来生成一个新的敌人。接下来,我想在时间线上绘制敌人指示器,以便更直观地看到敌人的生成情况。同时,我还添加了一个高亮显示功能,当用户悬停在某个敌人按钮上时,会在游戏中高亮显示对应的敌人。

2025-05-07 12:34:29 675

原创 制作一款打飞机游戏38:时间轴

一个重要的问题是,我们看不到当前的滚动值,而这个滚动值对于确定敌人生成的时间点非常重要。我想在界面上添加一个时间线,以便我们可以直观地看到不同时间点的敌人生成情况。现在,我们已经有了时间线,接下来要在时间线上显示敌人的生成事件。我编写了一个函数,它遍历生成事件的列表,并找出在当前滚动值时应该生成的敌人。为了让时间线更加清晰,我还添加了一个光标,显示当前的滚动值。然后,我在时间线的每个刻度上添加了一个加号按钮,允许用户在该时间点生成敌人。首先,我添加了一个按钮,显示当前的滚动值。

2025-05-06 12:28:02 347

原创 制作一款打飞机游戏37:调度器预览

在次里,我们要创建UFO(不明飞行物)。没错,这就是我的目标,我只想创建UFO。

2025-04-30 13:29:53 411

原创 制作一款打飞机游戏36:调度编辑器

我们正在创建一个调度编辑器。嗯,这个名字听起来可能有点奇怪,对吧?但如果你了解射击游戏中的“调度”,那就是敌人出现的时间表。你可能已经看到了,我们有一个可以滚动的关卡。现在,我想增加一些交互性,希望能够实际编辑这个调度。

2025-04-30 13:13:14 1954

原创 制作一款打飞机游戏35:生成系统

今天我们要做的是实现一个非常重要的系统——生成系统。在很多方面,这个系统其实相对容易实现,但围绕它的工具部分将是最复杂的。让我给你们展示一下。这个生成函数需要三个值:指定要生成的敌人类型、敌人在x轴上的生成位置,以及敌人在y轴上的生成位置。基本上,我们需要创建一个数据库,一个数组的数组,来存储所有这些值,然后将它们全部倒入生成函数中。但是,这里缺少了一个值,那就是时间。我们需要根据一个计划来生成敌人,比如游戏开始后10秒生成一个敌人。因此,我们需要四个值:时间、敌人类型、x坐标和y坐标。

2025-04-30 12:55:49 464

原创 制作一款打飞机游戏34:死亡

今天我想做两件事:一是让玩家爆炸,二是修改我们的精灵编辑器,以便我们可以重命名精灵。编辑器####修改精灵我想在精灵编辑器中添加一个功能,能够重命名精灵。我们需要考虑用户界面(UI)的解决方案。我之前做过一个精灵编辑器,当你按下某个键时,会弹出一个小菜单,然后你可以选择不同的选项。但这次,我觉得我们可以直接在这里编辑名称,这样更合理。当我按下回车键时,就可以编辑名称了。我还可以输入一整行新的名称。现在,我们来创建一个UI。这是选择头部时发出的命令“spr had”。

2025-04-29 17:08:46 658

原创 制作一款打飞机游戏33:碰撞体编辑

我们设置系统的方式使得编辑碰撞检测框(即碰撞盒)并不容易。所以,我们的下一步是扩展我们的编辑器,尤其是精灵编辑器,以便我们能够在编辑器中直接编辑碰撞盒。

2025-04-29 16:51:33 409

原创 制作一款打飞机游戏32:碰撞系统

最后,我编写了一个新的碰撞检测函数,它可以根据对象的碰撞数据和位置来判断两个对象是否发生了碰撞。我们已经有处理碰撞的数学公式了,但我们需要一个系统来保存这些数据,比如碰撞框,并将它们与游戏对象关联起来。接下来,我们需要创建一些专门用于碰撞的精灵,并扩展我们的编辑器以便更容易地定义碰撞框。然后,我运行了游戏,并调整了碰撞框的大小和位置,以确保它们能够正确地反映对象的碰撞区域。我编写了一个调试函数,当调试模式开启时,如果有对象与碰撞数据关联,就会在屏幕上绘制出碰撞框。这样,我们就可以直观地看到碰撞数据了。

2025-04-29 16:32:59 605

原创 制作一款打飞机游戏31:敌人数据库

例如,对于火焰动画,我们只需要在绘制函数中引用“annie_lib1]”,它就能正常工作。我们修改了生成敌人的函数,使其能够根据索引从敌人库中获取敌人数据,并生成相应的敌人。我们需要保存敌人的动画、动画速度、行为(我们称之为“brain”)和生命值(HP)。首先,我们创建一个名为“enemy_lib”的文本文件,并初始化它。例如,我们将包含“annie_lib”文件,并保存动画名称和数据。接下来,我要将这些动画库实现在我们的游戏中。然后,我们复制我们的默认编辑器,将其命名为“annie_edit”。

2025-04-29 15:47:25 485

原创 制作一款打飞机游戏30:动画系统

动画系统的基本想法是,我们有一系列像“火焰R”、“射击R”、“鼠标R”这样的动画,我们需要创建一个数据库来存放所有这些动画,这样每次引入新动画时,就不必定义新的数组了。首先,我们要考虑游戏中所有动画的元素。我们知道飞船有点像是动画的,但它并不真的是通过一系列帧来移动的。我们还有枪口闪光、子弹击中敌人时的溅射效果、敌人、子弹和射击效果,这些都是动画的一部分。在实施过程中,我遇到了一些问题,比如动画帧显示不正确、动画开始时间太早等。我的目标是让这些动画元素尽可能以相同的方式工作,使用相同的系统。

2025-04-29 13:43:49 424

原创 制作一款打飞机游戏29:基本玩法

在绘制函数的最后,我们这样做(给出了一些具体的数字,可能是坐标或参数),好了,它出现了,这就是我们做的事情。首先,我们要设置一个系统,让敌人出现在屏幕上,我们可以射击它,看看闪烁效果。我们来创建一个新的精灵,进入里面看看。好吧,让我们来看看这个精灵的中心位置,嗯,中心位置是114和45,宽度和高度都是16。现在,我们需要把这个精灵添加到我们的精灵系统中,记住,精灵系统就像是一个外部文件,一个电子表格。我还发现了一些调试用的代码,比如Pcall,这是用于碰撞检测的调试,现在我们已经不需要它了,可以移除。

2025-04-28 13:39:59 907

原创 制作一款打飞机游戏28:编辑器完善鲁棒性

当我们在设置精灵链时,如果精灵之间相互引用形成闭环,就会导致无限循环,从而耗尽内存。首先,我发现一个问题是,在切换模式时,滚动位置没有重置。我打算在更新函数中解决这个问题,确保在切换到编辑模式时,将滚动X和滚动Y都重置为0。在编辑精灵时,如果选择了空值(nil),我们不应该尝试绘制它,而应该显示一个有意义的消息。这会影响我们的导出函数。这很简单,只需在菜单中添加一个“删除”选项,并在选择时执行删除操作即可。我们现在有了一个精灵编辑器,它基本上能正常工作,但还有一些小细节我不太满意,想要进行修复。

2025-04-28 12:52:26 662

原创 制作一款打飞机游戏27:精灵编辑器UI

继续开发我们的编辑器——Sprit Edit。我们已经创建了这个小编辑器,它可以显示很多精灵(sprites),并且我们可以遍历所有精灵。这真的很棒,我们可以创建新的精灵,这也不错。但是,唉,我们目前还不能编辑单个精灵。这就是我们要做的事情——创建一个用户界面(UI)来编辑单个精灵。

2025-04-27 12:50:04 535

原创 制作一款打飞机游戏26:精灵编辑器

虽然我们基本上已经重建了Axel编辑器,但我不想直接使用它。我想创建一个真正适合我们当前目的的编辑器,那就是编辑精灵(sprites)。这将是今天的一个大目标——创建一个基于模板的编辑器,用它作为我们实际编辑器的起点。

2025-04-27 12:37:42 515

原创 制作一款打飞机游戏25:添加数据

为了实现这一点,我们调整了代码,使得当光标位于某行时,该行末尾会出现一个“+”按钮。如果用户删除了某个单元格中的所有内容,并且这是该行中的最后一个单元格,那么整个单元格将被删除。换句话说,我们可以编辑表格中的单个单元格,但不能添加新的内容。最终,我们在表格的末尾成功添加了一个“+”按钮,点击它就可以添加新行了。我们打算在表格的末尾添加一个按钮,比如“新行”,这样就可以轻松添加新行了。为了完善这个功能,我们还需要确保在添加新行时,新行中自动填充一定数量的单元格(比如6个),以匹配表格的物理系统。

2025-04-25 13:09:23 383

原创 制作一款打飞机游戏24:键盘输入

当我们按下P键时,会弹出一个菜单,这不是我们想要的。我会把所有的按键输入存储在一个变量中,当用户按下回车键时,再将这个变量的内容输入到数据数组中。但如果光标在字符串的中间,我需要重新组织字符串,删除光标之前的字符。当用户输入字符时,我需要将这些字符插入到光标所在的位置,而不是总是添加到字符串的末尾。通过检查时间的小数部分,我可以在特定的时间间隔内切换光标的显示状态,从而实现闪烁效果。为了在UI上显示正在输入的内容,我会在绘制整个表格后,在正在编辑的单元格上方绘制一个小的文本框,显示输入的内容。

2025-04-25 12:18:49 428

原创 制作一款打飞机游戏23:编辑器ui

今天,我想重点介绍编辑器的实际用户界面(UI)。

2025-04-25 12:10:52 1621

原创 制作一款打飞机游戏22:表格导出

看起来没有变化,这实际上是件好事,因为如果我们没有对底层数据进行任何更改,我们希望代码导出的是相同的东西。现在,我想看看这是否能与我们实际的数据一起工作,所以我把之前的一些数组数据复制粘贴到这里,并进行了一些小的调整。现在,我们不能再把这个数据打印到屏幕上了,因为现在这个数据在我们的文本文件里是一个数组,我们不能直接打印它。这些区域在后续的不同版本的编辑器中会有不同的含义,但现在我想创建一个模板,能够加载一个二维数组,并将二维数组写回文件。现在,我们要把数据绘制到屏幕上,所以我们需要一个嵌套的循环。

2025-04-25 10:55:42 504

原创 制作一款打飞机游戏21:自定义工具

关于如何在Pico 8中创建我们自己的编辑器。

2025-04-25 10:41:35 206

原创 制作一款打飞机游戏20:敌人被击中时的视觉效果

【代码】制作一款打飞机游戏20:敌人被击中时的视觉效果。

2025-04-24 13:24:42 270

原创 制作一款打飞机游戏19:碰撞检测

在这一章中,我们致力于解决碰撞检测问题,但它并不如我们所愿工作。

2025-04-23 13:13:53 909

原创 制作一款打飞机游戏18:敌人子弹

今天,我们将对这个敌人做更多的事情,让它移动得更多,更接近于实际的游戏体验。我们还会让它发射子弹。

2025-04-23 12:44:04 546

原创 制作一款打飞机游戏17:敌人

现在,我需要选择这个帧,然后拖放到这里。制作敌人时,不仅要考虑静态敌人,还要考虑动态敌人,尤其是当屏幕上有很多这样的精灵时,动画会让游戏感觉更生动。关于绘制顺序,我认为让子弹在敌人上方绘制更有意义,因为子弹可能会与敌人相交。理想情况下,我们应该将这种行为封装成一个函数,以便可以生成多个敌人,让它们每隔几秒飞进来并飞出去。现在,敌人可以移动了,但我们需要规划更复杂的敌人行为。比如,让敌人飞进来,停留一秒,然后飞出去。我想创建一个敌人区域,并添加一个敌人。我们需要设置敌人的X和Y坐标,以及它的速度和动画。

2025-04-22 13:51:45 481

原创 制作一款打飞机游戏16:空间优化

【代码】制作一款打飞机游戏16:空间优化。

2025-04-21 11:58:00 206

原创 制作一款打飞机游戏15:动画优化

具体来说,我们在精灵库中增加了第八个条目,用于指定在绘制当前精灵后,下一个要绘制的精灵。具体来说,它似乎以一种不同的镜像方式呈现,这并非我们想要的效果。我们的目标是能够绘制精灵的一半,并在其旁边绘制另一半的镜像,以实现更复杂的动画效果。例如,像素的中心并不是精灵的几何中心,而是一个2x2的矩形区域。然而,这并不是我们想要的效果。我们想要的是能够分别绘制精灵的左半部分和右半部分的镜像。当第七个条目设置为2时,系统会先绘制原始精灵,然后再绘制其镜像版本,并将其移动到右侧适当的位置。

2025-04-21 11:28:24 191

原创 制作一款打飞机游戏14:资源优化

在目前的开发中,我们发现精灵表的使用效率非常低。尤其是我们的飞船(Jet)精灵,尽管它几乎是对称的,但我们仍在完整地存储其两侧的精灵数据,这造成了空间浪费。

2025-04-21 10:46:49 523

ke模拟器,手机模拟

yuandaima,ke手机模拟器,发ichangbucuo1

2011-06-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除