- 博客(25)
- 收藏
- 关注
原创 详解RVO算法与Flow Field:现代游戏中的群体运动模拟
RVO(Reciprocal Velocity Obstacles,互惠速度障碍)算法是由Jur van den Berg等人在2008年提出的,用于解决多智能体实时避障问题。它是VO(Velocity Obstacles)算法的改进版本,通过引入"互惠"概念,使得多个智能体能够协同避让,而不是单方面承担避让责任。Flow Field(流场)是一种高效的群体路径规划技术,特别适合RTS(即时战略)游戏中大量单位的移动。它通过预计算整个地图的"流向",使得所有单位可以共享同一路径数据,极大提高了计算效率。
2025-04-08 16:50:28
1035
原创 LOD技术深度解析:从原理到Unity实践的全方位优化方案
LOD(Level of Detail,细节层次)技术是3D图形学中一项核心优化手段,其核心思想是根据物体与摄像机的距离动态调整模型的细节程度,在保证视觉质量的前提下显著提升渲染性能。工作原理:高模减面算法中模减面算法低模减面算法对比:Mipmap技术实现:各向异性过滤:实现方案:4. 植被专用LOD技术Billboard转换阈值:标准配置:性能数据对比:使用Asset Store工具:3. 地形LOD特殊处理Terrain设置:实时计算方案:2. 结合Occlusion Culling
2025-03-28 18:05:00
904
原创 Unity性能优化全攻略:从原理到实践的深度解析
Unity性能优化是一个系统工程,需要开发者具备全局视角。测量优先:永远基于Profiler数据做优化决策瓶颈分析:区分CPU/GPU/内存瓶颈迭代验证:每次优化后测量效果平衡取舍:在画质与性能间找到平衡点通过本文介绍的技术组合应用,开发者可以显著提升Unity项目的运行效率。记住,没有放之四海皆准的优化方案,最适合项目的才是最好的优化策略。
2025-03-28 18:01:54
775
原创 观察者模式 vs 发布订阅模式:深入解析两种事件处理架构
观察者模式是一种对象间的一对多依赖关系的设计模式,当一个对象(被观察者/Subject)的状态发生改变时,所有依赖于它的对象(观察者/Observers)都会自动收到通知并更新。关键角色Subject(被观察者):维护观察者列表,提供注册/注销接口,状态变化时通知观察者Observer(观察者):定义更新接口,接收Subject通知fill:#333;stroke:1;fill:none;important;important;important;important;important;
2025-03-28 17:54:44
702
原创 行为树中的黑板:AI决策的智能数据枢纽
黑板作为行为树架构的中枢神经系统,其设计质量直接影响AI的表现力和可维护性。优秀的黑板实现应当像优秀的会议记录员一样:准确记录关键信息,及时更新变化,并且只分享给需要知道的人。掌握黑板技术的精髓,将使你的游戏AI从机械的脚本执行者蜕变为真正的情境感知智能体。
2025-03-28 17:42:19
705
原创 Unity 中 Animator 和 Ragdoll 冲突的分析与解决方案
当角色受到击倒、死亡或失去控制时,通常需要切换到 Ragdoll 模式,但 Unity 的。如果 Ragdoll 只是临时的(如短暂摔倒后需要爬起),可以在 Ragdoll 结束后。,让角色仍然保持部分动画控制(如上半身动画+下半身 ragdoll)。当角色进入 Ragdoll 模式(如被击飞或死亡),,帮助你流畅地在动画和 Ragdoll 之间切换!,让角色动画更自然、更具真实感!,让物理系统完全控制角色。当两者同时作用于角色时,之间经常会发生冲突。在 Unity 中,通过这些方法,你可以。
2025-03-19 16:41:00
596
原创 Unity 人物蹲下时射线检测是否落地失效分析
来判断是否站在地面上,从而决定是否可以跳跃、播放落地动画或应用重力。的问题,导致角色“悬空”或错误地检测到地面。直接缩小,其底部可能会“悬空”,使得。在 Unity 开发中,角色通常使用。通过这些优化,可以确保角色蹲下时。可能失效,导致地面检测异常。(站立 / 蹲下 / 跳跃)在 Unity 中,蹲下时。,从而可能无法检测到地面。✅ 扩展检测范围,减少误判。:当角色蹲下时,原本的。,让角色误判为悬空状态。时,射线检测可能会出现。当角色蹲下时,通常会。
2025-03-19 16:24:22
693
原创 Unity 使用 LineRenderer 实现抛物线
使其指向目标点(如鼠标点击处)。(如《CS:GO》、《PUBG》)脚本,实现抛物线轨迹绘制。(如《NBA 2K》):手雷投掷、弓箭轨迹。(如《塞尔达传说》)(如《超级马里奥》)
2025-03-19 16:19:56
1011
原创 Unity 事件中心(Event Center)详解
模块之间无需直接依赖,事件触发后自动通知所有监听者。,掌握它可以让你的游戏架构更加清晰,开发效率更高!事件中心(Event Center)是一种。:支持多种事件类型(UI、AI、游戏逻辑):新功能只需注册监听事件,不影响原有代码。有时会导致代码耦合过高,难以维护。(无法动态添加/移除事件类型)(UI、任务系统、音效管理等)的消息管理系统,核心思想是。,各个系统之间无需直接依赖。,可以方便地增加新的监听者。在 Unity 开发中,,可以用来构建事件中心。在 Unity 开发中,,可灵活管理游戏逻辑。
2025-03-19 16:13:41
981
原创 分层状态机(Hierarchical State Machine, HFSM)详解
HFSM 继承了 FSM 的基本结构,但增加了**子状态(Sub-States)**的概念。本篇博客将详细介绍 HFSM 的概念、优势、实现方式及在 Unity 中的应用。结合 HFSM,提高 AI 逻辑的可读性和可维护性。,传统 FSM 可能会导致代码混乱、难以维护。为了解决 FSM 的扩展性问题,我们可以使用。组织状态,使得状态切换更加清晰、可复用。在 Unity 中,我们可以使用。在 Unity 中,我们可以通过。:子状态可在不同父状态间复用。,无需处理太多状态切换逻辑。组件中,我们可以使用。
2025-03-13 00:37:39
548
原创 有限状态机(Finite State Machine, FSM)详解
本篇博客将详细介绍 FSM 的概念、基本组成、应用场景,以及如何在。,帮助开发者组织复杂的状态切换,使代码更清晰、可维护。是最常见的 AI 逻辑控制方式之一。FSM 是游戏开发中最常用的状态管理工具,适用于。掌握 FSM,能让你的游戏角色更具智能化!,使 AI 具有逻辑性和可控性。在 Unity 中,我们可以通过。有限状态机(FSM)是一种。组件中,我们可以使用。
2025-03-13 00:36:33
897
原创 Unity 行为树(Behavior Tree)各个节点解析
掌握行为树的各个节点,将有助于开发更加智能、灵活的 NPC 和游戏 AI。希望这篇博客能帮助你更好地理解和使用 Unity 行为树!根节点是行为树的起点,它没有输入,只能有一个子节点。控制节点是行为树的“分支结构”,用于管理子节点的执行逻辑。,行为树提供了更强的扩展性、可读性和复用性,因此被广泛应用于。,每个节点都有不同的功能,最终决定 AI 的行为。,帮助开发者理解行为树的基本结构及其应用场景。行为树是一种强大的 AI 控制方式,能够提供。的组合,使 AI 能够做出。,并提供良好的扩展性。
2025-03-13 00:31:20
680
原创 Unity 协程 vs 动画事件回调
在 Unity 中,协程是一种能够在多个帧之间暂停执行的机制。通过协程,我们可以将操作分割成若干个步骤,并在多个帧内延迟执行,方便处理时间相关的逻辑。暂停与恢复:可以在一段时间后暂停执行并在之后的某个时间点继续执行。易于处理延时任务:比如等待动画播放完成、延迟执行一些操作等。高效:协程非常适合用于周期性的、需要等待的任务,而不需要创建额外的线程。// 假设动画时间为2秒// 动画完成后的操作Debug.Log("动画播放完成!");
2025-02-11 14:54:25
792
原创 Unity Input System 强大的新输入系统
Unity 新输入系统是 Unity 引擎中一个全新的输入处理方案,它的设计目的是为开发者提供更多的灵活性和控制力。设备抽象:支持更多的输入设备,能够统一处理不同设备的输入。事件驱动:采用事件驱动的方式,能够更高效地响应输入事件。灵活的绑定和配置:支持动态的输入绑定,可以轻松处理各种不同的输入方式。平台无关性:支持跨平台的输入,适用于 PC、移动端、控制台、VR 等多种设备。
2025-02-09 17:20:11
1023
原创 Unity 中怪物 AI 的实现与应用分析
Patrol(巡逻):怪物在特定区域内来回移动。Chase(追击):怪物追踪玩家。Attack(攻击):怪物在接近玩家时进行攻击。
2025-02-09 17:16:14
1025
原创 Unity NavMesh 导航系统
NavMesh(导航网格)是一个由多个三角形网格组成的表面,它描述了游戏世界中所有可行走的区域。通过在场景中生成一个 NavMesh,Unity 可以计算出角色从一个位置移动到另一个位置的路径,避开障碍物并遵循场景的地形。NavMesh 的工作原理类似于一个地图,指示哪些区域是可行走的,哪些区域是不可达的。基于该网格,游戏角色可以进行路径寻找(pathfinding),并通过计算出最短路径来自动移动。
2025-02-09 17:11:30
724
原创 Unity 第一人称穿模问题及解决方案
穿模(Clipping)是指模型在渲染过程中,物体的表面被错误地穿透或渲染到其他物体的背后。在第一人称视角中,穿模通常发生在角色的手部、武器或其他物品与环境物体(如墙壁、地面或障碍物)接触时,导致这些物品穿透了物体或角色的视角。
2025-02-09 16:34:00
1319
原创 Unity 中的点乘(Dot Product)与叉乘(Cross Product)
点乘,也叫做内积(Scalar Product),是两个向量运算的基础操作之一。在三维空间中,点乘的结果是一个标量值,它反映了两个向量之间的关系。A⋅B∣A∣∣B∣cosθA⋅B∣A∣∣B∣cosθAAA) 和 (BBB) 是两个向量。∣A∣|A|∣A∣) 和 (∣B∣|B|∣B∣) 是向量的模(长度)。θ\thetaθ) 是两个向量之间的夹角。当点乘结果为 0 时,表示两个向量垂直。当点乘结果为正数时。
2025-02-09 16:26:31
948
原创 Unity Animation Rigging使用 IK 控制武器、角色、枪口朝向
是 Unity 提供的一个工具包,它使开发者能够通过骨骼动画(Rigging)和反向动力学(IK),更精确地控制角色的姿势和运动。通过 Rigging 和 IK,开发者可以在动画过程中实现动态调整,使得角色与道具的互动更加真实。反向动力学(IK)是一种数学技术,通常与前向动力学(FK)相对。在传统的 FK 动画中,角色的关节和骨骼会根据预设的旋转角度来进行动画,而 IK 则是通过指定目标位置或方向,自动计算和调整关节的位置来达到目标。
2025-02-09 15:41:58
812
原创 Unity 布娃娃系统(Ragdoll)
布娃娃系统利用物理引擎的碰撞检测和关节约束,模拟角色的各个部位如何根据外部力的作用进行自然反应。与传统的动画系统不同,布娃娃系统不依赖于预设的关键帧动画,而是允许角色的每个部位根据物理法则(如重力、碰撞、力等)独立运动。这种方式使得角色在动态情况下的表现更加自然,并且能够应对各种复杂和不可预测的物理交互。布娃娃系统通常由一系列互相连接的刚体和关节构成,每个刚体对应角色的一个骨骼部位,关节控制这些刚体之间的相对运动。通过这种方式,角色的动作和反应是完全由物理引擎来控制的。
2025-02-09 15:32:50
683
原创 Unity 性能优化之对象池(Object Pooling)
对象池是一种缓存复用机制,用于管理对象的创建和回收。预先创建一批对象,并存储在池中。当需要使用对象时,从池中取出,而不是重新创建。当对象不再使用时,将其重置并放回池中,而不是销毁。
2025-02-09 15:21:37
327
原创 Unity Blend Tree 在人物移动动画中的优势分析
Blend Tree 是 Unity Animator 中的一种动画混合技术,允许开发者基于参数动态混合多个动画片段,以实现更加自然、平滑的动画过渡。角色的行走、奔跑和站立动画的无缝切换。角度或速度变化时,动态调整动画过渡。
2025-02-09 15:12:56
766
原创 Unity 分层动画的优势分析
Unity 的 Animator 允许使用来组织动画,每个层级可以独立控制不同的动画片段,并通过权重(Weight)进行混合。这使得开发者可以更灵活地控制角色的不同部分,例如上半身播放攻击动画,而下半身继续执行行走动画。
2025-02-09 15:06:46
440
原创 Unity 落地检测:碰撞检测 vs 射线检测
在 Unity 开发过程中,落地检测(Ground Detection)是游戏角色控制中的关键部分。和。本文将对这两种方法进行对比,并分析射线检测中的和哪种更适合落地检测。
2025-02-09 14:57:36
693
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人