先来看一下效果:理理的游戏策划这是我的Github仓库游戏策划仓库
起因是寒假打算用Unity做一个ARPG的游戏demo,做之前要写文档。于是我发现了docsify这个工具,并对其进行了一些改动。关于docsify,网上的教程有很多,推荐参考官方教程进行改动。做一些简单的工作还是不错的。在使用过程中发现一些问题,比如网站打不开,原因是jsdelivr访问起来比较慢,换一下就行了。这需要对index.html以下代码进行改动。
12<link rel="stylesheet" href="//fastly.jsdelivr.net/npm/docsify@4/lib/themes/vue.css"><script src="//fastly.jsdelivr.net/npm/docsify@4"></script>
除了docsify,此外还有一些工具。第一个是vitepress,难度稍微有一点,但是自定义起来要比较丰富些。其次是语雀,不需要任何基础,操作起来十分方便,很多个人和团队也喜 ...
22年高三上网课期间,我接触了github,然而当时我没有任何技术力,一直到24年我甚至不知道怎么通过git往github上上传文件,每次上传就会报错O_o。时隔多年。我已经能熟练地往github上上传东西了,但是身边还有很多小伙伴不知道怎么往Github上上传文件,于是写下本文。
1.利用github网站直接上传文件
github自带文件上传窗口,很简单,只需要拖拽或者选择文件就好,但是有限制,我记得单个文件最大不能超过100MB,一次最多上传文件数有限制,看似窗口化很方便,实则一点也不方便。
2.通过ssh+git上传文件
这应该是最常用的上传文件方式了。首先电脑上需要安装Git这个软件,右键git bash配置好你的账户:
12git config --global user.name "username"git config --global user.email useremail@qq.com
接下来在你的github账号里新建一个仓库。有时候github.com这个域名打不开,这里我推荐用bgithub.xyz这个镜像站,也是可以的。创建好仓库 ...
从零基础开始学习Unity到现在,已经过去半年了。我的Unity和编程水平,自己评测的话只能算作刚入门的阶段。在自学过程中,遇到了各种各样的问题,能解决的我都独自解决了,不能解决的令人困惑。
自学的困境
一方面是缺乏指导吧,这种东西自己摸索起来还是很有难度的,此前没有任何基础,只能全凭自己上网搜资料自学。我在跟完唐老狮和鬼鬼鬼ii的课程后,确实感到学到了很多,但接下来的学习目标是什么、该如何进行?很是疑惑。
同时,本身需要兼顾学业,我的专业和游戏开发算是没有任何关系了,学校里的老师也没有研究游戏开发等方向的,身边人更是没有,某种意义上来说也算医学院的“孤勇者”了(笑哭)。
想要自己做一个ARPG项目,然而没有一个系统的想法和方案,不知道怎么做,是做《师父》一样的拳拳到肉、还是《只狼》一样的弹刀处决、还是做其它的?怎么做UI系统、要不要做背包系统、要不要有终结技、要不要加入技能系统...各种想法涌入脑中,感到一团乱麻,于是项目迟迟没有开始做,卡到了策划这一步。同时总是找不到合适的素材,总感觉现有的素材做项目、看起来怪怪的。
另一方面,家长本身对这方面也不是太支持。实际上也很好理解,毕竟 ...
Unity
未读最近有空时在学做怪物AI设计,于是记录一下不规则移动。
怪物AI设计常见思路
目前Unity制作怪物AI主要有两种方案,第一类是有限状态机,之前写过文章介绍过;第二类是行为树,Unity的一个插件。综合对比,状态机纯靠代码实现、是免费的,缺点是状态复杂、比较难以理解,状态多起来的时候会变得比较难以维护;行为树是靠图形化界面+代码实现的,缺点是付费插件、略微耗性能。其实我么手写的有限状态机就是行为树逻辑的体现。有限状态机实现AI移动,我之前已经实现过了(可以参考我前面写的文章);这里我用的行为树,插件可以在论坛aurorayh.asia获取。(仅学习使用)
行为树实现
这里我们自己写一个节点,继承行为树为我们封装好的Action类,EnemyMovementController和EnemyCombatController类是我自己写的,前者提供了SetAnimation方法,用来设置敌人移动速度;后者则是写了个GetAttackCommand方法来接收攻击指令,还有一个SetAttackCommand方法提供给外部、用来分发攻击指令。ExpandClass类是我自己手写的一些方法。我们通 ...
之前一直想做一款ACT游戏demo,可惜市面上没找到合适的教程。求人求神不如求己,于是我决定自己开发一款ACT游戏demo,于是记录一下自己的思路。
游戏目标
游戏打算从简单开始设计、慢慢变得更复杂,我的目标就是做出类似于《巫兔》这种,仿《只狼》的ACT游戏。
开发记录
1.相机部分。首先是关于相机部分,配上InputSystem,写一个GameInputManager类用于管理我们的输入,把GameInputManager写成一个单例,通过鼠标移动控制相机旋转,同时用athf.Clamp设置相机上下看的范围,写一个方法通过鼠标滚轮控制相机与角色距离,实现玩家移动方向朝向相机。
我觉得后续应该会再写一套相机系统,一套索敌用的。因为《巫兔》里打Boss时,相机是不能旋转的,是固定在角色身后的某一方位的,后续再写这个功能。应该再写一个脚本,动态添加相机系统(因为我要写两套)。
2.角色移动。角色移动我采用的八方向移动+RootMotion,之前踩的坑已经在博客里写过,主要是处理旋转上的逻辑。同时给Animator组件写了个拓展函数,拓展方法AnimationAtTag(string n ...
看到群友提到,于是突然意识到,后天就是2025年了,于是写一写年度总结吧。
总的来说,2024年对我来说还是比较重要的一个年份,从年初到年末自己发生了很多变化,不过这些变化是偏好的:变得更成熟、更冷静了,更加独立了。2024年初的我,总是处在焦虑迷茫、精神内耗中,精神状态和心理状态堪忧——当然这都是年初的事情了。感觉大概10-11月份期间,我就像突然长大了好多岁,已经不会再迷茫、再焦虑、内耗和emo了;我看待事物,也是慢慢有了自己的见解,不是只听别人说。慢慢有了自己的规划和思考,不再“随大流”;我能专心下来做属于我自己的事情,面对问题我也冷静了许多、而不是再逃避。等等许多,让我明显感觉到我的层次貌似又上升了一个阶段。
在知识方面,我24年相比以往还是有很大进步的,我开始认真学习了C#编程语言、在7月份开始自学Unity,并已经坚持到现在了。我的个人博客也发生了很大的变化,以前我喜欢写一些自己的思考、生活的琐事,现在打开基本都是Unity、前端等东西,gal测评都没怎么写过,好处是我什么时候忘了东西、不会了能看我自己写的博客,我完全当成笔记来记录东西。此外,今年还学习了一些go、we ...
起因是某天刷b站,想起来自己还没把up主离忧夏天的C#数据结构看完,结果意外发现了另一位up主木子喵neko,虚拟up+可爱声音讲解数据结构与算法,于是跟着看了。我自身对知识有比较强的分享欲和记录欲(因为我发现我不记笔记总是会忘掉),于是记录一下木子喵算法小课堂第一课:汉诺塔问题。用我最熟悉的C#语言来写。
问题介绍
汉诺塔问题是一个经典的递归问题,源自一个古老的印度传说。在这个问题中,我们有三根柱子和一系列不同大小的圆盘,这些圆盘最初按大小顺序堆叠在一根柱子上。目标是将所有圆盘移动到另一根柱子上,遵循两个规则:一次只能移动一个圆盘,且在移动过程中较大的圆盘不能放在较小的圆盘上面。
***
解题思路
这道题主要思想还是递归(说实话我现在递归还学得挺烂的),我们把柱子做好标记:A柱是起始柱,B柱是中间柱,C柱是目标柱。
形象的图片
我们假设有n个圆盘,从上到下编号为1-n,我们先假设我们通过某种手段,把上面的n-1个圆盘搬到了B柱子,接下来我们把A中剩下的一个盘子搬到了C
那么现在的情况是什么?B柱变成起始柱了,A柱变成中间柱了,按照上面的方法,我们把n-2个圆盘移动到了A柱,B柱剩下 ...
今天在和朋友聊天时,朋友说我变化好大。我电脑上的QQ音乐正好在播放《水仙》专辑的曲子,于是想起了以片冈智为代表的的猫猫社的《水仙》系列作品,对我倒是有一定的影响的。
最先接触《水仙》这部作品,是在一个Q群的精华消息看到:“网页版玩Galgame《水仙》,链接xxxxx”,当时是22年,我读高二,点进去玩。最先多是不太理解,只是能感到作品氛围的悲伤吧,草草玩了第一部作品。
真正开始有所感触、并认真体验《水仙》全系列,是在23年上大学后。当时高考结束,自己在专业上与家里人产生分歧,当时诊出心理疾病、闹得厉害,算是我到现在最不如意的一年。23年经历了很多事,再玩《水仙》时,就很有感触了:对家人的愧疚感、对死亡的不现实感、负罪感等等,算是感同身受。印象深刻的是玩片冈智的小短篇《1980》和《1993》时,因为是片冈智写得确确实实发生在他身边的故事,感觉共鸣感挺强的。
要说我最喜欢的一部,应该是水仙十周年纪念版的《水仙:堇》了吧,这作是最有感触和代入感的一部,因为感觉,故事的主人公高坂堇和我真得太像了,玩起来满是无力感和悲伤吧。当时我状态最差,也经常打开这部作品玩,可以说,高坂堇算是我过去人 ...
本文用于记录伤害检测,算是一套比较完整的伤害检测系统。人物有两个属性,一个是生命值、一个体力值,当体力值小于10时是格挡不了的。那么姑且开始写代码吧。
思路分析
首先我们需要做伤害判定——判断敌人是否受伤害,那就用Physics.SphereCast方法,角色往前一段距离进行一个碰撞检测,声明一个Transform变量currentEnemy = hit.collider.transform,用来保存敌人数据。如果检测到了,并且我们进行了攻击,就可以执行敌人受伤或是格挡的逻辑了。
在写逻辑前,我们可以优化一下,一般游戏都有锁敌机制。我们也写一套锁敌机制,锁敌机制判断条件有二,一是敌人和我们的距离小于1.3,二是敌人在我们前方60度的角度内可以索敌。距离判断很简单,直接Vector3.Distance().magnitude就可以了;角度判断用Vector3.Dot(this,transform.forwar,(currentenemy.transform.position - this.transform.position)),返回一个float值,当其大于根号3/2时可以索敌(点积的 ...
今天上b站,看到了up主NowPaper老师关于Unity连招的思路,觉得代码写得很简洁、同时实现了预输入,觉得很有借鉴意义。
思路介绍
NowPaper老师整体的思路是,先声明InputType来存储输入类型,InputType == 1为轻击输入、InputType == 2为重击输入,结合InputSystem来判断输入类型。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778//声明两个数组来存储轻击和重击动画//这点我觉得其实鬼鬼鬼ii做的简单技能编辑器效果要更好,关于技能编辑器参考我的文章“Unity基础连招思路”public AnimationClip[] Attack1Clips;public AnimationClip[] Attack2Clips;......//以下是根据InputSystem配置好的,判断攻击类型的。in ...