原版本是用godot 4.3制作的一个Windows小桌宠

然后我用gdre_tools反编译后一直很头疼,不知道如何做到从游戏引擎到浏览器的实现,虽然godot完全可以导出web游戏,只是试了一下效果不太好

最终还是决定只提取序列帧图,然后用提示词让ai实现

text
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
我希望将这个桌宠转换为Hexo的内置的插件,我希望将桌宠的每一个功能解耦分成模块化的多个代码文件,并且将桌宠相关的所有文件都放到一个文件夹,比如在hexo的themes文件夹里的layout文件夹里的_partial文件夹里新建一个pet文件夹,这里面就是代码文件,然后桌宠相关的所有图片文件都放到themes文件夹里的source文件夹里的images文件夹里的pet文件夹里,代码最好加上中文注释方便我看懂

首先第一个文件模块就是负责角色序列帧的播放,角色拥有四个状态分别是

IDLE(静止状态),对应images文件夹里的pet文件夹里的命名为01-04的4张png图片

RUNNING(奔跑状态),对应images文件夹里的pet文件夹里的命名为05-08的4张png图片

DRAGGING(拖动角色状态),对应images文件夹里的pet文件夹里的命名为09-12的四张png图片

FALL(拖动角色后放下角色的状态),对应images文件夹里的pet文件夹里的命名为05-08的四张png图片

注意:我提供的所有角色序列帧角色的站姿都是竖直的,除了DRAGGING,其他状态角色必须始终是竖直的,不要发生方向偏移,就像2D平台跳跃游戏里的角色那样

---

第二个文件模块负责角色动画逻辑和鼠标的交互逻辑,每个状态都放到一个独立的函数里

①角色的初始状态是IDLE,也就是速度为0的状态,首先需要注意就是明确角色的正反面,我提供的角色所有状态的序列帧的图片都是朝向左侧的,也就是说,角色初始状态就是朝左侧的,也就是说,当我的鼠标在屏幕中角色的坐标X轴左侧时,角色播放朝向为左的状态也就是默认的状态,但是当我的鼠标在屏幕中角色的坐标X轴右侧时,将角色相关的序列帧图片全部翻转(类似游戏引擎中将角色对象镜像翻转),注意,当鼠标距离角色一定距离时(即以角色为中心往外延伸的长方形区域),为了方便调试,我需要给这个区域上颜色,实验完成还能注释掉,当鼠标进入这个区域后角色会处于IDLE状态,但是角色还能检测到鼠标是在角色左边还是右边



②角色的奔跑状态就是RUNNING,注意,角色需要有加速度,当鼠标离开长方形检测区域后,角色开始朝鼠标的位置移动(方向就是计算角色中心点和鼠标坐标点算出要移动的方向),角色方向保持竖直,角色由静止状态转换为奔跑状态时会先加速,再匀速,在鼠标进入长方形检测区域后减速至停止,对了,有一个小细节就是比如角色此时正在朝左奔跑,我的鼠标在左侧,但是如果我立刻将鼠标移动到右侧,角色的朝向不会立刻改变,而是先保持原来的朝向减速至停止状态时再改变朝向奔跑



③角色的拖拽状态就是DRAGGING,这个就是当我把鼠标指针放到角色上并点击鼠标左键就可以拖动角色,这里是一个巧妙设计,逻辑比较复杂:

(1)以角色的中心点的y轴上方,也就是序列帧图片角色对象的正中心的正上方的边界位置作为挂载点B,角色对象整体的位置此时由挂载点B决定,当我点击角色并长按鼠标左键时,此时鼠标指针变成了牵引点A,在点击角色时角色会往上跳一下,然后角色快速下降,B点和鼠标的A点重合停止,然后A与B之间就像有一个短短的无形的弹力绳子,绳子具有弹性系数,当拖拽角色时,挂载点B始终想和牵引点A合并,会主动向A靠近,

(2)此时需要记录鼠标当前的坐标和鼠标的移动速度,当鼠标移动速度逐渐加快时,绳子的长度遵循弹力变长,同理鼠标开始减速时绳子逐渐变短,当鼠标匀速时,需要计算根据当前鼠标的速度计算来确定绳子的长短,此时绳子的长度不变,然后此时我不要求角色必须保持竖直了,不过分为两种情况:

第一, 角色整体以B点为头部牵引点,我就这么比喻吧,如果角色本体是一个秤砣,B点就是秤砣顶部算绳子的部分,当我拉动绳子的另一端(也就是鼠标的A点)时,秤砣会改变自身方向(对了,序列帧图片的方向也要改变,不仅仅是移动的方向)跟着B点一起运动就像贪吃蛇一样,

第二, 但是假如我只是在角色上面长按鼠标左键而不拖动角色,此时需要角色以B点为轴,以当前的角色的朝向为准,如果鼠标拽着角色向左移动,角色朝向是左,向右拖动角色朝向右,如果此时角色朝向为左,那么角色向左30度轻轻来回晃动,如果此时角色朝向为右,那么角色向右30度轻轻来回晃动(代表挣扎的动作)

(3)这里增加一个比较好玩的效果,当我点击一下角色而不捉住它,此时角色会向旁边“逃跑”,逃跑的逻辑和跑步一样,但是马上还会回来追鼠标

④ 角色的降落状态就是FALL,当鼠标拖拽角色松手后(也就是松开鼠标左键),角色的整体会掉落到角色的中心y轴的正下方的离中心不远处的一段距离的位置,就好像角色获得了重力,掉落一小段距离,掉落的高度约等于精灵图序列帧的高度

---

第三个文件模块就是角色的头发,这个你参考我给你的代码抄下来,这个我无法描述,总之你可以把头发想像成一个软软的橡皮泥,角色静止状态时头发从上到下还会蠕动,角色移动和被鼠标拖拽时头发还有物理逻辑,头发的颜色是#565a73

---

第四个文件模块就是角色的图层管理,这里不仅管理图层,还管理角色头发位置还有头上的光环和脚下的影子以及角色的汗珠逻辑 ,这里角色精灵图序列帧和汗水图层最高,然后就是头发在第二级图层,光环和影子在第三图层,角色跑动出现的粒子效果位于最底层

光环的是themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的halo.png文件,以角色中心y轴为对称轴,角色中心为原点,当角色朝向为左边时,此时光环halo的位置即角色的右上方也就是第一象限的位置大概(12,7),当角色朝向右边时,环halo的位置即角色的左上方也就是第四象限的位置(大概(-12,-7)),光环以自己的图片的中心旋转27.4度,光环图片缩放0.25倍

汗水的图片分为两个,分别是themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的sweat.png和sweat_L.png,

汗水的位置分为两部分,分别是当角色朝向为左时,汗水在以角色中心点建坐标的第四象限(-12,-26)(-14,-21)(-12,-17)三个位置是sweat_L.png汗水图片,当角色朝向为右时,汗水在以角色中心点建坐标的第一象限(12,26)(14,21)(12,17)三个位置是sweat.png汗水图片,默认是不会显示汗水的,只有角色处于DRAGGING状态,才会出现而且是三个同时出现,同时消失,向外呈放射状移动,生命周期是0.2秒,重复出现,当角色解除DRAGGING状态时才不会出现

影子的的图片为themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的shadow.png文件,图片阿尔法值193,缩放0.5倍,影子的图片中心位于角色的中心点y轴的底部位置,当角色处于DRAGGING状态时,预测角色处于FALL状态的掉落的位置,影子在角色处于DRAGGING状态时提前移动到这个位置

角色跑动的粒子效果的单个粒子图片的位置是themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的smoke.png文件,

粒子的生命周期0.8秒,每次出现6个粒子,粒子每次都出现在角色的中心点y轴的底部位置,而且粒子的大小和阿尔法值都不同(而且越靠近角色的粒子透明度越高),类似于我的世界烟花的尾炎逻辑

---

第五个文件的逻辑是掌管角色跑步音效的,当角色处于RUNNING状态时播放themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的RunSounds.wav音效,重复播放

---

第六个文件掌管角色白色描边逻辑,这里你可以参考pet.pug文件里的写法

------------------

后续提示词的battle.....

------------------
非常好,接下来你只需要改这几个地方,第一个就是将角色和光环的比例缩放到0.3倍,角色的移动速度也是降低到原来的0.3倍,头发相关的代码不要动,将sweat.png和sweat_L.png的透明度改为原来的40%,将影子的图层改为最底层,粒子的大小控制在16*16大小左右,最大不超过16×16,最小可以是2×2,然后粒子之间的间隔拉大,粒子随着移动过的轨迹排列,对于声音的话,鼠标右键点击桌宠会弹出两个小按钮“静音”和音量控制

---

非常好,现在将光环的大小缩放8倍,并把光环放到当前光环位置的以角色中心为竖直对称轴的镜像位置,影子的大小等比例放大,让影子的宽度等于角色的宽度,还有就是我发现点击阅读文章时界面上回出现两个桌宠,我希望界面上有且只有一个桌宠,同时增加两个模块,

第一个模块就是聊天模块,角色会弹出一个聊天气泡框,里面角色说的话可以自定义,不过有状态检测,当角色处于DRAGGING状态时,角色会说“放开我!!!”“救命啊!!!”“我讨厌你~呜呜”,当只左键点击角色一次时角色会说“不要老是戳我呀”,当右键点击角色时角色会说“不要右键点我听到没有”,当角色处于FALL状态时会说“哼”“哎呀”,当玩家超过一分钟没有点击角色时,角色会说“你怎么不理我了”“快点和我说话”“我好无聊啊”“老师我想听歌”“我好困啊”“可以放首歌吗我想听歌!!!”,说话每次一句,说完气泡消失,再次说的时候又会出现气泡框

第二个模块就是音乐播放器,这个是需要外置的音乐源来播放歌曲,你看看有没有日语二次元歌曲的音乐源,右键角色的窗口里,在“取消静音”按钮上增加一个圆形按钮,这个圆形按钮上的图像就是音乐源自动获取的音乐的封面,可以切换音乐,点击上一首,下一首,暂停,循环播放,还可以控制音量,这里的音量名字就叫“音乐音量”,而之前的脚本里控制角色跑步音效的叫“角色音效”

---

不行,角色翻转方向时还是会出现气泡框翻转,这里气泡框不要翻转

---

非常好,你可以看到,我的文章点开时是出现在一个独立的窗口的,但是每当我点开一个新文章时,桌面上就会新出现一只桌宠,这就导致了界面有两个桌宠,但是我只要一只就够了,我不知道是哪里的问题,你看看

---

很好,但是我发现在文章界面的桌宠无法像主界面出现的桌宠一样,状态和行为存在一点问题不知道为什么

当然也是废话了几千字,ai好歹听懂了,当然用的是github的学生免费额度(反正不用也是不用还不如做点东西)