
Unity
Unity
RJPRondo
我一路向北
展开
-
【Unity】StreamingAssets和PersistentData文件夹
StreamingAssets(区分大小写)的文件夹中的所有文件逐字复制到目标计算机上的特定文件夹。StreamingAssets :不能写入,随包发包,适合存放一些初始化的AssetBundle资源。PersistentData :适合存放、运行程序下载的AssetBundle资源。原创 2022-11-14 12:06:45 · 1783 阅读 · 0 评论 -
【Unity】【UGUI】拖拽放置的实现思路
背包物品拖拽、武将布阵是怎么实现的原创 2022-09-24 16:06:28 · 1414 阅读 · 0 评论 -
【Unity】【TextMesh Pro】常用知识点总结
TextMesh Pro 常用知识点 思维导图原创 2022-09-19 18:39:05 · 1098 阅读 · 0 评论 -
【Unity】【Timeline】添加 Animation Track 角色自动移动到世界位置 0,0,0
Character with Animation: back to the original position in Timeline preview在timeline中 ,添加一个动画clip ,发现角色的位置回到了(0,0,0)。添加轨道设置位置也无效。。。解决方法原创 2021-10-05 01:17:23 · 2289 阅读 · 0 评论 -
【Unity】【TestMeshPro】基础
什么是TestMeshProTextMesh Pro是Unity中文字渲染的终极解决方案,原本是一个第三方插件,后被Unity收购后并入Unity,现在可以免费使用。和UGUI-Text的区别UGUI的Text使用了一张字体贴图,Unity把所有需要显示的字符放到了一张图集中,字符的形状是通过像素定义的。当我们放大时,像素不够用就会出现文字变模糊的情况。TextMesh Pro的Text使用了不同的技术来渲染文字,叫做Signed Distance Field。和UGUI类似,这个技术同样需要原创 2021-09-17 19:23:11 · 951 阅读 · 0 评论 -
【Unity】【Layout Elements】忽略自动布局
当把组件添加到Layout布局下时 , 会自动布局 。 改变位置 ,这时候会手动设置位置。可以在目标对象中添加layout element 组件 ,勾选 ignore layout 忽略自动布局 , 进行忽略。原创 2021-09-16 14:35:37 · 776 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【二】【07】利用Playable Director & Timelline Asset实现动画联动
攻动画与被攻击动画如何联动、衔接呢?可以使用Playable Director & Timelline Asset解决。【导演】Playable DirectorPlayable Director 简单理解为导演,它存储了Timeline实例(Timeline instance)与Timeline资源(Timeline Asset)间的连接。控制Timeline何时播放,如何更新时钟(clock)等。Timeline则控制了Timeline Asset的联动进行。关于组件属性Unity原创 2021-08-09 12:06:20 · 463 阅读 · 1 评论 -
【Unity】【ARPG开发日志】【二】【06】攻防有效性的几何角度判定
攻击者对于攻击者,判断攻击有效性。 我们需要判断攻击者的forward向量与攻击者-防御者的向量夹角是否在攻击范围角度内。防御者对于防御者,判断防御有效性。我们需要判断盾牌是否与攻击者的攻击方向近似正对。(攻击者forward向量与防御者forward向量近似正对)首先我们可以判断防御方向与受攻击方向的夹角是否近似180,但条件不够 ,攻击防御者背对背同样满足条件。因此增加一条判定条件。我们可以判断防御者forward向量与 攻击者-防御者位置向量的夹角是否在防御角度内。...原创 2021-08-05 10:33:29 · 234 阅读 · 2 评论 -
【Unity】【ARPG开发日志】【二】【05】骨骼变形(octopus现象)的原因及修改技巧
章鱼现象当某些动画类型转成人形时,由于源骨骼与标准人形骨存在差异,有些骨骼无法被unity识别,无法自动调变,没法进行移动和旋转。因此产生了像章鱼一样骨骼变形的现象。影响骨骼主要是这些 Twist扭转骨 无法被识别,它们主要用于拉弓箭、开门等用力时肌肉动作模拟。修改技巧将这些 Twist扭转骨 移动到哥哥兄弟节点下。...原创 2021-08-04 11:47:01 · 1012 阅读 · 4 评论 -
【Unity】【ARPG开发日志】【二】【04】利用Generics泛型实现组件&脚本的绑定
有时候在一个脚本中需要绑定多个脚本,使用下面这种方式会造成了大量的代码冗余。可以使用泛型方法进行简化。冗余的绑定方法void Awake() bm = sensor.GetComponent<BattleManager>(); if (!bm) { bm = sensor.AddComponent<BattleManager>(); } bm.am = this;原创 2021-08-03 12:12:14 · 237 阅读 · 2 评论 -
【Unity】【ARPG开发日志】【二】【03】深度遍历搜索组件
为了方便节点的寻找,可以使用脚本遍历搜索的方法。获取需要的目标节点。 public static Transform DeepFind(this Transform parent , string targetName) { foreach (Transform child in parent) { //Debug.Log(child.name); if (child.name == targetNa原创 2021-07-30 17:40:38 · 274 阅读 · 1 评论 -
【Unity】【ARPG开发日志】【二】【02】动画器AnyState的使用
当大多数动画都能过渡到某种状态时,添加该动画往往需要增加数条过度线。特别容易使动画网变得错乱与发杂。如角色受击、死亡动画。此时可以使用AnyState进行过渡。原创 2021-07-29 14:49:03 · 676 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【二】【01】创建攻击子状态机
为了简化状态网, Mecanim 允许将一组状态折叠为状态机图中的单个指定项。这些折叠的状态组称为子状态机。创建子状态机 attack,将攻击动画纳入其中。创建过渡可以发现,外部允许指定过渡到子状态机内部的某一状态。在子状态机内部页允许过渡到外部的任意状态中。...原创 2021-07-29 10:15:04 · 284 阅读 · 1 评论 -
【Unity】对话系统的技术基础与思路
内容的读取TestAsset通过Split方法分割文本的每一行。如需更换对话框的头像,可以在文本中配置特殊关键字。读取到则换头像的方式实现。逐字显示协程 StartCoroutine原创 2021-07-27 18:08:48 · 492 阅读 · 4 评论 -
【Unity】【ARPG开发日志】【62-64】锁定目标的显示与摆脱
锁定目标的显示获取目标的半高锁定目标的ui使用Image组件。需要将世界坐标转换成屏幕坐标注意锚点在左下角锁定摆脱可以使用Distance api进行距离判断。原创 2021-07-27 14:59:36 · 277 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【56-61】目标锁定时的角色运动
目标锁定通过锁定角色的transform.forward 。transform.right也会随之改变。按住左、右移动键,角色会以锁定目标为圆心,绕圆周进行运动。 Dvec = Dright2 * transform.right + Dup2 * transform.forward;动画的修改因锁定目标,固定角色朝向。所以需要对动画进行修改 。使用2d混合树 , 增加左、右、后发现的走和跑。2D 混合...原创 2021-07-27 12:06:36 · 232 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【54-55】目标锁定实现思路
很简单通过碰撞实现。原创 2021-07-26 17:49:52 · 134 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【52-53】double click 双击 和 long press 长按实现思路
存在长按后快速点击,仍然视为双击的情况。 可以增加个参数判断解决该问题。以下是我的解决方案。 public float lastPressTime; public bool DoubleClick = false; if (OnPressed && IsExtending) { DoubleClick = lastPressTime < longPressDuration; last.原创 2021-07-26 12:00:44 · 286 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【51】如何通过GetKey实现GetKeyDown、GetKeyUp
很简单,可以通过记录当前状态和上次状态比对实现。MyButtonpublic class MyButton{ public bool IsPressing = false; public bool OnPressed = false; public bool OnReleased = false; private bool curState = false; private bool lastState = false; public void Ti原创 2021-07-23 17:12:35 · 249 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【49-50】光标修改
通过Cursor设置光标。 可以设置纹理!!lockState 接收CursorLockMode类型 , 有三种状态。将光标锁定隐藏在游戏窗口中心。Cursor.lockState = CursorLockMode.Locked;原创 2021-07-23 16:15:06 · 251 阅读 · 1 评论 -
【Unity】【ARPG开发日志】【48】新增防御状态
根据需要可以选择AvatarMask 。使用后左手AvatarMask后,预览的y坐标会有问题?而实际运行却不会位移y。不清楚什么原因。先记录一下。原创 2021-07-22 15:50:49 · 95 阅读 · 2 评论 -
【Unity】【ARPG开发日志】【47】新增盾牌
通过OnAnimatorIK微调骨骼的旋转。需要勾选动画图层的IK处理图层碰撞修改 可以取消武器与底部的碰撞旋转相关Quaternion.Euler后续学习原创 2021-07-22 10:32:39 · 129 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【46】摄像机抖动优化
尝试修改Animator更新模式平缓动画Root Motion的偏移RootMotionControl private void OnAnimatorMove() { SendMessageUpwards("OnUpdateRM", anim.deltaPosition); }Controller public void OnUpdateRM(Vector3 _deltaPos) { if(CheckState("attack原创 2021-07-22 09:42:40 · 208 阅读 · 1 评论 -
【Unity】【ARPG开发日志】【42-45】配置手柄、抽象类
配置手柄通过项目设置的输入管理器进行手柄按键的配置抽象类略原创 2021-07-21 17:27:58 · 95 阅读 · 2 评论 -
【Unity】【ARPG开发日志】【41】动画水平镜像
可以通过bool参数进行动态修改。原创 2021-07-21 14:09:26 · 1032 阅读 · 1 评论 -
【Unity】【ARPG开发日志】【40】Root Motion
通过使用Animator.deltaPosition获取动画中的位移量。在脚本中实现OnAnimatorMove则默认开启根运动。遗留问题 AvatarMask 会对 Root Motion 产生影响?( fullbody ?)原创 2021-07-21 13:45:39 · 281 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【38-39】连击调教
问题连续点击 攻击按键,会出先trigger堆积。很容易使出二段连击。解决思路通过在动画中添加事件进行ResetTrigger。去除堆积。动画事件事件会传到Animator所挂在的节点。需要在改节点挂在脚本接收事件。...原创 2021-07-20 18:10:26 · 530 阅读 · 2 评论 -
【Unity】【ARPG开发日志】【37】动画权重线性内插
private float lerpTarget; public void OnAttack1hAEnter() { pi.inputEnable = false; lerpTarget = 1.0f; } public void OnAttackIdleEnter() { pi.inputEnable = true; lerpTarget = 0f; } private vo...原创 2021-07-20 16:52:43 · 192 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【36】制作二段攻击动画
状态机中添加动画添加二段攻击的动画注意修改第一段攻击中的过渡排序未按照排序进行过渡是什么原因?查看相关过渡路径的退出时间。应该是先退出先过渡,相同退出时间才是按照设定的排序进行。动画衔接调整两段攻击动画如何让他们衔接自然?1.修改混合时间线2.对单个动画时间进行调整...原创 2021-07-20 15:45:43 · 448 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【35】更换物理材质
创建物理材质右击新建物理材质属性功能Dynamic Friction作用于运动中的对象的摩擦力,通常设为0到1之间的值。值为0时,对象像冰块一样光滑;值为1时,不受力(合力为0)的对象将很快停止运动。Static Friction作用于静止在其他物体表面的对象的摩擦力,通常设为0到1之间的值。值为0时,对象像冰块一样容易滑动;值为1时,需要施加很大的力才能使对象开始运动。Bouncinessn对象的表面弹性。值为0时,对象完全没有弹力;值为1时,对象变为具有完全原创 2021-07-20 14:39:42 · 201 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【31-34】角色攻击动画
动画创建创建一个攻击动画图层,结构更加清晰。根据动画与审美选择合适的遮罩。AvatarMask 参考:【Unity & Mecanim】Avatar基础使用Trigger 进行攻击的触发, 注意回到idle时,进行ResetTrigger的处理,防止Trigger堆积。优化在上图动画结构中,当人物移动时,Base Layer播放的移动动画会被Attack Layer的idle所覆盖,所以需要动态进行图层权重的修改。通过SetLayerWeight修改动画图层的权重使用原创 2021-07-20 11:52:02 · 358 阅读 · 0 评论 -
【Unity & Mecanim】Avatar基础
什么是“Mecanim”?Mecanim 是集成到 Unity 中的动画软件的名称。unity集成的动画系统。由于人形骨架在骨骼结构上的相似性,用户可以将动画效果从一个人形骨架映射到另一个人形骨架,从而实现动画重定向功能。除了极少数情况之外,人物模型均具有相同的基本结构,即头部、躯干、四肢等。Mecanim 动画系统正是利用这一点来简化骨架绑定和动画控制过程。创建模型动画的一个基本步骤就是建立一个从 Mecanim 动画系统的简化人形骨架到用户实际提供的骨架的映射,这种映射关系称为 Avatar原创 2021-07-19 17:51:14 · 1783 阅读 · 4 评论 -
【Unity】【ARPG开发日志】【27-30】摄像机镜头控制
区分控制水平和垂直的转向CameraController public PlayerInput pi; public float horizontalSpeed = 120.0f; public float verticalSpeed = 50.0f; private GameObject playerHandle; private GameObject cameraHandle; private float tempEulerX; // Star原创 2021-07-19 15:30:38 · 205 阅读 · 1 评论 -
【Unity】【ARPG开发日志】【23-26】角色翻滚、后跳动画
角色翻滚通过速度forward值判断是跑跳还是翻滚。注意调整过渡队列的先后顺序。角色后跳如果是不带位移的动画,在播放后跳动画时,通过(State machine behaviours)状态机行为的OnStateUpdate方法给角色增加一个向后的冲量。Controller public float jumpBackVelocity = 3.0f; public void OnJumpBackUpdate() { thrustVec = model.tran.原创 2021-07-19 11:04:20 · 988 阅读 · 2 评论 -
【Unity】【ARPG开发日志】【18-22】角色掉落动画
1. 利用Physics.OverlapCapsule进行地面站立(isGround)的检测2. 学习使用中断源 打断动画3.如何去除动画的位移 (Mixamo)Apply Root Motion 勾选去除开启循环动作Mixamo原创 2021-07-16 16:45:20 · 375 阅读 · 2 评论 -
【Unity】【ARPG开发日志】【12- 17】角色跳跃
添加跳跃动画 ,通过settrigger触发跳跃。PlayerInputpublic bool jump; void Update(){ jump = Input.GetKeyDown(KeyJump);}Controlleranim.SetTrigger("jump");频繁触发 trigger需要做复位处理 。在状态机中添加脚本, 通过ResetTrigger解决连续触发跳跃问题。...原创 2021-07-15 17:20:00 · 219 阅读 · 1 评论 -
【Unity】【ARPG开发日志】【11】椭圆映射法 解决斜向移动速度过快问题
在同时按下右和上 , 斜向移动的情况下,会出现速度大于1的情况。使用椭圆映射法解决问题。 private Vector2 SquareToCircle(Vector2 input) { Vector2 output = Vector2.zero; output.x = input.x * Mathf.Sqrt(1 - (input.y * input.y) / 2.0f); output.y = input.y * Mathf.Sqrt(1.原创 2021-07-15 15:45:09 · 845 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【10】利用插值解决角色转向和跑步突兀问题
Vector3.Lerp在两个点之间进行线性插值。public static Vector3 Lerp (Vector3 a, Vector3 b, float t);Vector3.Slerppublic static Vector3 Slerp (Vector3 a, Vector3 b, float t);在两个向量之间进行球形插值。修改Controller void Update() { float targetRunMulit = ((pi.r原创 2021-07-15 15:28:47 · 207 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【09】角色奔跑
增加奔跑动画public string KeyRun;public bool run;void Update(){ run = Input.GetKey(KeyRun);}增加奔跑案件原创 2021-07-15 14:59:37 · 120 阅读 · 0 评论 -
【Unity】【ARPG开发日志】【07-08】角色行走
角色原地行走动画和转向根据键入形成的向量,对速度进行赋值。向量的方向控制角色转向。ArthurController Dmag = Mathf.Sqrt((Dup * Dup) + (Dright * Dright)); Dvec = Dright * transform.right + Dup * transform.forward; PlayerInput void Update() { anim.SetFloat("forward", pi.Dmag);原创 2021-07-15 11:51:19 · 472 阅读 · 3 评论