Unity
文章平均质量分 73
韩天衣
热爱游戏开发,希望能有所成就
展开
-
Unity-行为树原理与框架实现
Unity-行为树原理与框架实现基本元素BTNode:所有节点的base class。定义了一些节点的基本功能,并提供一些可继承的函数。BTAction:行为节点,继承于BTNode。具体的游戏逻辑应该放在这个节点里面。BTPrecondition:节点的准入条件,每一个BTNode都会有一个。具体的游戏逻辑判断可以继承于它。BTPrioritySelector:Priority Selector逻辑节点,继承于BTNode。每次执行,先有序地遍历子节点,然后执行符合准入条件的第一个子结点。可以看原创 2022-05-18 15:47:54 · 2171 阅读 · 0 评论 -
Unity-Behavior Designer详解
Unity-Behavior Designer详解理论基本概念行为树是一个包含逻辑节点和行为节点的树结构,每次需要找出一个行为的时候,会从树的根节点出发,遍历各个节点,找出第一个和当前数据相符合的行为。如下图,就是一个简单的行为树当我们要决策一个AI要做什么样的行为的时候, 我们就会自顶向下的,通过一些条件来搜索这颗树,最终确定需要做的行为(叶节点),并且执行它,这就是行为树的基本原理。Task&Status有四种不同类型的 task(任务): 包括 action(行为),comp原创 2022-05-17 19:18:43 · 5480 阅读 · 1 评论 -
Unity-可编辑的星星特效
Unity-可编辑的星星特效阅前须知本文前置知识:CustomData与CustomList绘制星星创建一个名为Star的普通脚本,定义以下字段,然后将这个脚本挂在一个空对象上//网格private Mesh mesh;//顶点private Vector3[] vertices;//颜色private Color[] colors;//三角形(顶点索引)private int[] triangles;顶点网格思路首先,我们要绘制顶点网格。以vertices[0]为中心点。原创 2022-05-13 19:48:16 · 900 阅读 · 0 评论 -
Unity笔记-05
Unity笔记-05练习项目敌人模块最终脚本(最后一部分以及总结)其他内容请阅《Unity笔记-04》项目需求(最后一部分):为每人随机选择一条可以使用的路线,要求:敌人类型,产生的时间随机最后一部分代码以及其他代码的最终修改敌人生成器类/// <summary>/// 敌人生成器/// </summary>public class EnemyProduce : MonoBehaviour{ /// <summary> /// 敌人类原创 2021-09-13 20:53:50 · 169 阅读 · 0 评论 -
Unity笔记-04
Unity笔记-04练习项目脚本规划项目需求(部分)开始,生成指定数量的敌人。为每人随机选择一条可以使用的路线,要求:敌人类型,产生的时间随机当敌人死亡后再产生下一个敌人,直到生成数量达到上限为止。需求分析创建脚本:敌人马达类,提供移动,旋转,寻路等功能创建脚本:敌人状态信息类,提供受伤,死亡等功能创建脚本:敌人动画类,定义各种动画名称,播放动画的功能创建脚本:敌人AI类,通过判断状态执行寻路或者攻击部分代码与改动动画类与动画工具类动画工具类/// <summary>原创 2021-09-12 20:00:27 · 626 阅读 · 0 评论 -
Unity笔记-29-ARPG游戏项目-05-简易的战斗系统
Unity笔记-29-ARPG游戏项目-05-简易的战斗系统功能优化与BUG修复先对之前的功能做一些优化攀爬优化-检测约束在测试中,我发现,当攀爬到顶的动作中,再次检测到墙壁会导致上墙BUG,卡到墙体里,例如以下场景,由于两面墙的墙面距离差距较小,就会导致以上BUG[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lZ2j28A-1638013377284)(Unity笔记图/Unity笔记29/攀爬优化-1.png)]因此每次攀登动作完成后的再次检测上墙需要进行约原创 2021-11-27 19:44:51 · 1341 阅读 · 0 评论 -
Unity笔记-09-玩家控制器
Unity笔记-09-玩家控制器WASD控制人物朝向行走以及鼠标控制人物正方向需求分析摄像机跟随摄像机保持在人物的后方并且相对静止,人物朝向旋转,摄像机也能够绕着人物进行旋转并保持距离不变,也就是说摄像机位于以人物为圆心的r距离圆形轨道上鼠标移动控制摄像机镜头旋转人物正方向鼠标移动能够控制人物的正方向,例如鼠标左移,人物朝向旋转到左,并且摄像机能够自动移动到对应位置,保持玩家视角不变键盘控制人物朝向并能够移动WASD可以控制人物的朝向向前,左,后,右方向并能够沿着朝向移动功能拆解与逐步实现原创 2021-09-23 11:46:02 · 520 阅读 · 0 评论 -
Unity笔记-29-ARPG游戏项目-12-完善弓箭
Unity笔记-29-ARPG游戏项目-12-完善弓箭之前的文章能够实现基本的弓箭射击,但是不够精准,对于瞄准的方向比较难把握,这里我们完善一下基本思路弓箭瞄准从此图中可见,对于准星瞄准的不同距离的对象,射出的箭矢应当是不同的速度与轨迹。另外由于箭矢并非从屏幕中央射出而是从右边射出,因此我们需要修正箭矢的运动路径,使其向准星瞄准的对象射击,上一篇文章的方法仅仅只是能够修正箭矢的朝向不断朝向摄像机朝向靠近,没法精确的射击,原因就在于速度的错误把控以及箭矢射击朝向的错误,在上一篇文章中,我们没有去设置原创 2022-02-24 14:59:56 · 394 阅读 · 0 评论 -
Unity笔记-17-01-带物理引擎的人物控制器
Unity笔记-17-01-带物理引擎的第一人称控制器实现走路,跑步,跳跃等基础功能第一种:带着Character Controller组件前置条件首先创建空对象,给空对象添加Character Controller,AudioSource,碰撞器组件,如果你的模型已经有碰撞器组件,那么这里的空对象就不需要添加碰撞器组件脚本组件分析移动:要实现带物理引擎上的移动,不能使用Transform的相关移动方法,会导致穿模,由于添加了人物控制器组件,那么这里的移动要使用这个类自带的Move(x,y,z原创 2021-10-15 10:10:21 · 1276 阅读 · 0 评论 -
Unity笔记-21-02-塔防游戏练习项目
Unity笔记-21-02-塔防游戏练习项目场景布置利用灰度图创造规则地形首先选择一张地形图,例如:(图片来自网络)打开PhotoShop,新建-选择灰度模式,灰度模式,灰度模式重要的事情说三遍,然后选择储存为,选择文件格式:raw格式,然后打开Unity,新建地形,在设置栏里选择Import导入即可,注意:地形高度不要调的太高,否则会很卡或者地形不好微调得到图中这样的地形说明已经成功,但是因为图片的不同,灰度会导致地形的锯齿十分严重,要使用平滑工具调整至此,地形搭建完毕然后就是按照原创 2021-10-26 15:31:48 · 491 阅读 · 0 评论 -
Unity笔记-10-坐标系统
Unity笔记-10-坐标系统坐标系统世界坐标系(WorldSpace)整个场景的固定坐标,在游戏场景中表示每个物体的固定位置和方向物体坐标系(LocalSpace)每个物体独立的坐标系,原点为模型轴心点,随着物体的旋转或者移动而改变,表现物体间的相对位置和方向屏幕坐标系(ScreenSpace)以像素为单位,屏幕左下角为(0,0)原点,右上角为屏幕的高度和宽度,z表示到相机的距离表示物体在屏幕中的位置视口坐标系(ViewportSpace)屏幕左下角为原点,右上角为(1,1),z为到相原创 2021-09-26 18:49:17 · 583 阅读 · 0 评论 -
Unity笔记-08
Unity笔记-08-三维数学Unity里的三维数学1. 向量所有物体的Position属性指的都是从世界坐标原点到位置坐标的向量代码:position.magnitude;可以获得此向量的模代码:position.normalized; 可以获得与此向量同向的单位向量这里可以说明:Translate()的移动方法的参数就可以给予一个向量,对应物体就会沿着该向量方向移动大小等同于该向量模大小的距离通过代码:Direction=A.position-B.position 就可以获得两个物体的向量原创 2021-09-22 20:11:45 · 950 阅读 · 0 评论 -
Unity笔记-29-ARPG游戏项目-01-第三人称相机
Unity笔记-29-ARPG游戏项目-01-第三人称相机相机观测实现核心思路通过Yaw和Pitch轴控制相机旋转 private Vector3 myDafaultDir;//默认方向 [SerializeField] public Vector3 myCurrentDir;//当前方向 private Transform myPlayerTransform;//玩家Transform private Vector3 myRotateValue;//控制器存储原创 2021-11-18 15:04:32 · 1275 阅读 · 2 评论 -
Unity笔记-29-ARPG游戏项目-02-移动&跳跃
Unity笔记-29-ARPG游戏项目-02-等待&移动&跳跃前排提示代码部分会有部分保留空白,为后续的攀爬系统相关判定,暂不作解释。需求说明等待在未输入任何其他指令时,人物会进入等待状态,等待状态下,每隔固定的时间,会播放一段等待的动画,播放完毕会恢回到普通状态,再次等待相同时间会循环;等待动画可以有多个每次,等待播放的等待动画随机;当输入其他指令时,若当前处于等待或处于播放等待动画的状态,则立刻打断当前等待动作,优先执行其他指令移动&跳跃人物在地面上时,按下WAS原创 2021-11-21 18:05:52 · 2404 阅读 · 0 评论 -
Unity笔记-12-练习项目武器模块-第二版
Unity笔记-12-练习项目武器模块-第二版策划-武器模块如果弹匣内装有子弹,可以发射;否则,等待更换弹匣;发射子弹时,播放音效,动画,显示火花;玩家的枪可以单发也可以连发;玩家子弹击中敌人后减少敌人HP,后续将加入根据击中敌人的位置而减少不同程度的HP子弹飞行到目标点,销毁,并创建相应特效敌人子弹击中玩家后,玩家HP减少子弹飞行到目标点,销毁,并创建相应特效朝玩家头部发射,飞行速度较慢,方便玩家躲避需求分析创建脚本:玩家枪Gun,提供开火,更换弹匣功能创建脚本:单发模原创 2021-09-30 16:18:10 · 368 阅读 · 0 评论 -
Unity笔记-01
Unity笔记-01Unity3D初学——1前排提示,笔记如有错,请见谅,指出必修正脚本注意事项在C#脚本中,应有:C#类,字段,属性,构造函数,方法但是在Unity脚本中一般只能有:字段,方法Unity脚本里一般不写属性,因为属性无法在编译器中显示出来其次,一般不写构造函数,Unity3D里,我们通常使用的最多的类就是继承自 MonoBeaver 这个接口的作为组件负载在物件上的类。要知道,构造函数最大的好处之一,就是初始化成员变量。而到Unity3D里头,官方的做法是希望你把成员变量的初始原创 2021-09-08 22:25:59 · 451 阅读 · 0 评论 -
Unity笔记-29-ARPG游戏项目-06-弓箭
Unity笔记-29-ARPG游戏项目-06-弓箭基本要求说明点按R键,进入弓箭视角,点按鼠标左键进行射击,射击距离,伤害以及削韧效果根据蓄力时间而定,每次拉弓到射击的持续时间会不断蓄力,射击距离伤害,削韧效果具有上限,一直蓄力不会无限制的增加距离,伤害,削韧效果;弓箭视角下的移动不会改变人物朝向,人物朝向一直朝向前方,通过再次点按R,跳跃,翻滚等操作可以退出弓箭视角,受到攻击造成硬直时也会退出弓箭视角进入弓箭视角时,屏幕中央会出现射击符号,退出则消失,同时人物的动作朝向应当指向射击符号的位置处于原创 2022-01-08 13:53:43 · 3575 阅读 · 0 评论 -
Unity笔记-07
Unity笔记-07了解虚拟轴及其属性首先通过Unity栏目:Edit->Project Setting->搜索Input Manager可以查看Unity已经设置好的虚拟轴以Horizontal为例,首先Horizontal表示水平的意思,这只是这个虚拟轴名称,可以随意更改但是要记住因为在代码里会用到。Descriptive Name和Descriptive Negative Name分别是正负操作的语言描述。说到这里必须要知道,每一个虚拟轴设置都是有正向和负向之分。在界面里可以看到,原创 2021-09-16 15:00:25 · 1326 阅读 · 0 评论 -
Unity笔记-29-ARPG游戏项目-03-攀爬系统
Unity笔记-29-ARPG游戏项目-03-攀爬系统需求说明当人物靠近墙壁时,并且对着墙壁执行移动按键时,此时会从普通状态进入到爬墙状态,这是一个进入攀爬的初始化状态,进入攀爬状态后,WASD控制攀爬方向而不能控制人物移动,跳跃键提供攀跳而不能控制人物普通跳跃;按下X会立刻退出攀爬状态,半空中则会直接坠落;当人物攀爬到墙顶,会播放攀顶动画,应用根运动,攀爬到墙顶,并推出攀爬状态;特别强调:攀爬状态下,无法移动和跳跃;不同的攀爬环境这张图中,我们可以看到至少三种攀爬环境:竖直;弧形;倾斜;人物原创 2021-11-21 21:15:08 · 5442 阅读 · 0 评论 -
Unity笔记-17-02-枪械动画练习
Unity笔记-17-02-枪械动画搭建练习前排提醒:游戏资源来自Unity商店里的免费资源整体分析目前有多种枪械,需要实现:按下鼠标左键,当前枪械播放射击动画以及音效,可以从任意状态切换到开火状态,且没有等待按下R键,当前枪械播放换弹匣动画以及音效,可以从任意状态切换到换弹匣状态,且没有等待按下移动键,当前枪械播放持枪移动动画以及音效,如在移动中开火或者换弹匣,应当优先播放对应的动画,且没有等待无按下时,播放持枪站立动画按下Q键时,切换为下一把枪械,并播放一次切换音效动画控制器-An原创 2021-10-15 14:24:21 · 969 阅读 · 0 评论 -
Unity笔记-06
Unity笔记-06Input(仅键盘和鼠标的输入部分)鼠标输入代码:Input.GetMouseButton(0)鼠标左键按下时,返回true,参数为0则是鼠标左键,参数为1则是鼠标右键,参数为2则是鼠标中键,后续不再赘述代码:Input.GetMouseButtonDown(0)鼠标左键按下时的第一帧,返回true只有一瞬间上述两种方法的区别在于:第一种鼠标一直按着,那么就一直返回true,只有鼠标松开才会返回false;但是第二种鼠标一直按着,却只在第一帧的时候返回true也就是按下的原创 2021-09-14 20:55:23 · 237 阅读 · 0 评论 -
Unity笔记-29-ARPG游戏项目-11-完善运动
Unity笔记-29-ARPG游戏项目-11-完善运动之前的文章已经介绍了如何让人物动起来,但是之前的代码和思路仍然存在一些问题,这里对其进行完善如何控制运动如果是对通过对刚体的速度进行控制,那么就必须要考虑到跳跃等动作对垂直方向速度的影响,角色移动如果直接通过赋予速度,那么角色就无法跳跃了。因此,这里我改为使用力来控制,并且为了体现角色运动上的惯性,例如在角色快速跑出悬崖时,下坠的同时需要继续向前运动一段路程而不是直接垂直下落。对于斜坡运动的考虑此外当运动的地形为倾斜时,运动方向就不再是水平的了原创 2022-02-24 14:58:44 · 189 阅读 · 0 评论 -
Unity笔记-11-物理引擎
Unity笔记-11-物理引擎刚体(Rigidbody)Mass (质量)设置物体的质量Drag (阻力)设置物体移动时候受到的空气阻力Angular Drag (角阻力)设置角阻力,旋转时受到的阻力Use Gravity (使用重力)若激活,物体受重力影响Is Kinematic (使用运动学)若激活物体不再受物理引擎控制,而只能通过变换组件控制,也就是说虽然能被物理引擎检测到,但是不会受到反作用力的影响这里注意理解,以下面的场景为例,三个球体其中,第一个球体Is Kinema原创 2021-09-27 20:10:07 · 395 阅读 · 0 评论 -
Unity笔记-25-简单的商城系统&数据库操作
Unity笔记-25-简单的商城系统&数据库操作要求与分析英雄属性界面展示英雄头像,英雄名称,英雄属性(AD,AP,AR,SR,自左向右,自上向下),金币数量商店界面展示可购买的物品,点击即可购买背包界面展示背包中的五瓶,点击即可出售数据库(数据库为**Sqlite**本地数据库)英雄表:存储英雄名称,英雄属性,金币数量,背包物品商店表:存储物品名称,物品属性,物品价格UI搭建运行完成图展示UI对象的父子级关系如图。英雄属性,Bag,Shop添加了布局组件以方便网格布局原创 2021-11-01 15:54:17 · 3665 阅读 · 0 评论 -
Unity笔记-29-ARPG游戏项目-04-攀爬系统优化与IK动画
Unity笔记-29-ARPG游戏项目-04-攀爬系统优化与IK动画上一篇,IK没有讲,这一篇补充一下IK动画以及一些其他优化部分为什么要加IK动画首先,如果没有IK动画会导致动作穿模,通过代码的距离设置可以一定程度解决问题,但不能彻底解决,因此IK动画是必要的。其次,尤其是攀到墙顶,没有IK动画的情况下,人物的手通常是浮空的,这对于玩家来说是十分糟糕的,就好像浮空攀顶一样,是否奇怪其次,做了一些优化,先讲优化,再讲IK攀顶代码优化上一篇的攀墙顶的检测代码经过优化,不再通过头顶的辅助坐标来检测,原创 2021-11-22 19:08:44 · 3982 阅读 · 0 评论 -
Unity笔记-29-ARPG游戏项目-10-完善攀爬
Unity笔记-29-ARPG游戏项目-10-完善攀爬之前的文章已经说明了攀爬系统的基本思路,这篇文章主要完善一下攀爬在一些场景下的攀爬效果对于以下这种凸起的地形过渡之前的攀爬系统只能做到对于比较平滑的凸起地形的过渡,角度一般要小于45度,但是像这种90度的凸起,是无法过度的,并且会卡模型导致bug,因此这种情况要特殊处理思路解析正常来看,我们需要从墙面过渡到另外一个墙面 ,如果是弧形的话之前的攀爬系统就足够做到了,但是现在是直的,因此,首先我们需要先判断当前的情况,墙面过渡凸起的角度问题,角度原创 2022-02-24 14:55:37 · 615 阅读 · 0 评论 -
Unity笔记-02
Unity笔记-02Time代码:Time.time 项目从开始到现在的运行时间,会受到时间缩放影响,只读代码:Time.unscaledTime 项目才开始到现在的运行时间,不会受到时间缩放的影响,只读代码:Time.realtimeSinceStartup 项目从开始到现在的真正的运行时间,排除卡顿影响的时间,不会受到时间缩放的影响,只读代码:Time.deltaTime 渲染帧的时间,也就是每一帧的时间,不同性能的硬件会对渲染效率造成影响,性能越差,每帧的渲染时间就越长,反之越短。会受到时原创 2021-09-09 09:50:47 · 204 阅读 · 0 评论 -
Unity笔记-30-Shader初级篇-01
自学笔记,学习教材《UnityShader入门精要》,摘录原创 2021-12-10 08:29:36 · 2318 阅读 · 0 评论 -
Unity笔记-03
Unity笔记-03Animation&&AnimationState首先要录制动画:首先在需要录制动画的对象下添加Animation组件,再点击对象在Animation栏目点击Create创建动画,对需要变换的组件,通过Add Property按钮添加,会出现类似AE的时间条,通过添加移动关键帧来操作时间,点击红点(录制按钮),在对关键帧进行操作,操作完毕,在此点击红点,完成录制。录制完毕,需要将素材添加到对象Animation组件下,方可使用。Animation播放模式:On原创 2021-09-10 08:40:58 · 156 阅读 · 0 评论 -
Unity笔记-15-2048小游戏
水原创 2021-12-20 19:32:57 · 1774 阅读 · 0 评论 -
Unity笔记-29-ARPG游戏项目-13-打击感(卡肉)与僵直感
Unity笔记-29-ARPG游戏项目-13-打击感(卡肉)与僵直感效果演示基本思路打击感来源于停顿感,通过近战武器打中敌人的瞬间对角色动作进行瞬间的停顿以达到的效果,停顿时间越长则效果越明显,但是如果太长那么会给人一种很卡的感觉,另外增加打击感体验的还有,音效,击打特效,例如图中的白色炸裂效果(黑色的是剑身挥动的拖尾效果),而同样的,僵直感也是停顿,不过他的触发是在被敌人攻击达到时触发,同样也是进行短暂的停顿,仅仅是短暂的停顿就能带来强大的打击感,配合音效以及特效就能提高这种打击感。通过对动作停原创 2022-02-24 15:32:47 · 3085 阅读 · 0 评论 -
Unity笔记-34-FSM(有限状态机)
Unity笔记-34-FSM(有限状态机)前言模仿Unity动画状态机写一个简易的状态机框架,用于状态管理思路分析状态对于每一个状态,它都有以下属性:状态名称当前是否在运行状态转换的目标状态与转化条件一二两点很容易 //状态名称 public string StateName { get; set; } /// <summary> /// 标记当前状态是否正在运行 /// </summar原创 2022-03-09 20:36:58 · 3778 阅读 · 0 评论 -
Unity笔记-33-AStarPathFinding算法
Unity笔记-33-AStarPathFinding算法前言本篇主要讲解AStarPathFinding算法核心与在Unity中的简单应用,仅限于2D场景。AStarPathFinding的估量代价算法核心的寻路依据是估量代价,本算法中使用F表示F = G + HG表示当前点到起始点的估量代价,H表示当前点到终点的估量代价地图网格化对于一个平面地图,对其进行网格化,将其分解为多个格子蓝色表示障碍物红色表示起点绿色表示终点地图格子对于每一个地图格子,它都有F,G,H原创 2022-03-08 10:03:47 · 4806 阅读 · 0 评论 -
Unity笔记-32-UI框架(实现)
Unity笔记-32-UI框架(实现)资源统一调配单例模版public class Singleton<T> where T:class//class表示是引用类型{ private static T _singleton; //单例属性 public static T Instance { get { if (_singleton == null) {原创 2022-03-06 19:24:15 · 1673 阅读 · 1 评论 -
Unity笔记-31-UI框架(思路)
Unity笔记-31-UI框架(思路)不用框架所面临的问题 游戏UI中出现多个窗口,窗口与窗口之间的模态关系当出现多个窗口,上面的窗口是当前只能操作的窗口下面的窗口是模态的,看不清的,也是不能操作的 经常需要找对象,找组件,找组件里的方法或属性【重复性非常高的体力活】通过对所有模块对象的统一管理组件的统一设置事件的统一调配 本地化语言问题【中文/英文】 消息机制管理UI窗口与模态处理定义:什么是窗口?开发者自定义,可以是一个Panel管理或者是一个空对象管理原创 2022-03-06 19:23:35 · 1717 阅读 · 0 评论