Unity角色卡墙问题深度解析:从物理摩擦到代码优化的全方案
1. 项目概述当你的角色“粘”在了墙上在Unity里做角色移动尤其是带物理碰撞的几乎每个开发者都踩过这个坑角色明明在正常移动一靠近墙壁或者墙角就像被强力胶水粘住了一样要么瞬间卡死动弹不得要么以一种诡异的、不受控制的“滑步”方式贴着墙边蹭。这个问题新手会归咎于“Bug”老手则会立刻想到一个词——摩擦力。没错这个看似诡异的“卡墙”问题其物理本质就是Unity物理引擎PhysX中角色碰撞器通常是CapsuleCollider与环境碰撞器如BoxCollider之间由物理材质Physics Material定义的摩擦力相互作用产生的结果。它不是一个代码逻辑错误而是物理模拟在特定条件下的必然表现。理解并解决它是区分“会写移动脚本”和“真正理解Unity物理角色控制”的关键一步。本文将彻底拆解Unity中角色因碰撞摩擦力导致的卡墙问题。我们会从物理引擎的基础原理讲起一步步分析问题产生的根源然后提供从理论到实践、从快速修复到深度优化的全套解决方案。无论你是在制作一款3D平台跳跃游戏还是一款需要精确角色控制的RPG处理好这个问题都将直接提升你游戏的操作手感和专业度。2. 核心原理PhysX引擎与摩擦力的“爱恨情仇”要解决问题必须先理解问题背后的物理引擎是如何工作的。Unity默认使用NVIDIA的PhysX引擎来处理刚体动力学和碰撞检测。2.1 物理材质摩擦力的指挥官物理材质Physics Material是附着在碰撞体Collider上用于定义表面物理属性的资产。它有两个核心参数直接决定了“卡墙”问题的严重程度动态摩擦力Dynamic Friction物体在表面上滑动时产生的摩擦力。静态摩擦力Static Friction阻止物体从静止状态开始滑动的力。当你的角色碰撞器比如一个胶囊体与墙壁的碰撞器接触时引擎会取两者物理材质的摩擦力值通过某种公式默认是取平均值计算出一个综合的摩擦系数。如果这个系数不为零那么当角色试图沿平行于墙面的方向移动时摩擦力就会作为一个阻力作用在角色上。2.2 卡墙问题的动力学分析为什么会导致“卡住”而不是“滑开”这涉及到角色控制器的常见实现方式。很多开发者会使用Rigidbody.AddForce或直接修改Rigidbody.velocity来移动角色。力的对抗你给角色一个向前X-Z平面的力使其靠近墙壁。当接触发生时除了向前的力摩擦力开始产生一个与运动趋势方向相反、大小与摩擦系数和正压力通常来自重力或角色向墙的挤压力相关的力。速度的分解与抵消如果你的移动力持续施加角色可能会有一个微小的、切入墙面的速度分量。物理引擎为了解决穿透会施加一个修正脉冲Correction Impulse将角色“推”出墙面。这个修正方向与墙面法线方向有关。在某些角度下特别是墙角两面墙的交线这些力驱动力、摩擦力、修正力的方向会变得非常复杂容易相互抵消或形成循环导致角色在某个位置振荡或完全丧失水平移动能力看起来就是“卡住”了。墙角陷阱墙角是问题的高发区。角色同时接触两个垂直表面受到来自两个方向的摩擦力和修正力。这些力很容易在水平面上形成一对平衡甚至锁死的力偶让角色寸步难行。这就是为什么角色常常在转角处卡得最死。简单来说物理引擎忠实地模拟了“粗糙表面”的效应而游戏中的墙壁在物理层面通常被设定为“无限粗糙”高摩擦力这导致了现实世界中不会出现的、违反玩家直觉的卡顿。3. 解决方案一物理材质调优——最直接的干预最直观的解决方案就是从摩擦力的源头入手调整物理材质。3.1 创建并应用低摩擦材质创建物理材质在Project视图中右键 - Create - Physics Material。我习惯命名为“LowFriction”或“PlayerMaterial”。参数配置将Dynamic Friction和Static Friction都设置为一个极低的值例如0.01或0。同时可以将Bounciness弹力设置为0避免角色碰墙后弹开。应用材质角色将创建好的低摩擦材质拖拽赋值给角色胶囊体碰撞器CapsuleCollider的Material属性。环境为所有可能导致角色卡住的环境碰撞体墙壁、障碍物也应用一个低摩擦材质。通常可以为环境创建一个专用的“Environment_LowFriction”材质。注意只修改角色的摩擦力是不够的。因为最终摩擦系数是两者共同作用的结果。如果墙壁的摩擦力仍然是默认的0.4Unity默认创建的物理材质值即使角色摩擦力为0综合摩擦力仍可能达到0.2左右卡顿问题依然可能存在。最彻底的做法是同时降低接触双方的摩擦力。3.2 摩擦组合模式详解在物理材质的Friction Combine属性中你可以选择当两个物体接触时如何组合它们的摩擦系数。这决定了你调整策略的侧重点。Average平均默认模式。取两个摩擦值的平均值。这是最常用的模式意味着你需要同时关注角色和环境的材质。Minimum取小取两个摩擦值中较小的那个。这是一个非常实用的技巧如果你将角色的摩擦力设为0.1并将Friction Combine设为Minimum那么无论墙壁的摩擦力多高哪怕是1.0最终生效的摩擦力都将是0.1。这让你可以只通过调整角色就控制全局摩擦上限。Maximum取大取较大值。通常会加剧卡顿不推荐。Multiply相乘两个摩擦值相乘。如果两者都小于1结果会更小。实操心得对于角色控制器我强烈推荐将角色物理材质的Friction Combine设置为Minimum并将其动态/静态摩擦力设为一个很小的值如0.05。这样你只需要管理好角色自身的这一个材质就能确保在任何表面上都不会产生过大的摩擦阻力极大简化了工作流。4. 解决方案二角色控制器方案选型与避坑调整物理材质是基础但有时我们还需要从角色移动的实现方式上做文章。Unity提供了几种主流的角色控制方案它们对摩擦力的敏感度截然不同。4.1 Character Controller组件物理的“局外人”Character Controller是一个专用的、不基于物理力学的角色移动组件。它通过SimpleMove或Move方法来位移内部使用胶囊体进行碰撞检测和解析但完全绕过了PhysX的动力学摩擦力计算。优点绝对不会有因物理摩擦力导致的卡墙问题。移动精准响应迅速是很多RPG、ACT游戏的选择。缺点需要自己实现重力、跳跃、斜坡处理等所有物理效果。与其他动力学刚体的交互比较生硬比如被车撞飞需要额外编码。适用场景需要完全掌控、手感要求精确、且角色与复杂物理环境交互不多的游戏。4.2 Rigidbody 力/速度控制灵活但需精细调校这是最物理正确、也最灵活的方式但也是坑最多的。Rigidbody.AddForce模拟真实的力驱动。需要小心处理力的大小和模式Force/Impulse。卡墙问题在此方案下表现明显必须配合低摩擦物理材质使用。直接设置Rigidbody.velocity直接赋予速度简单粗暴。这相当于“覆盖”了物理引擎当前帧的速度计算可以部分克服摩擦阻力。但需要每帧设置并且要处理好与重力等其他力的叠加。关键技巧使用Rigidbody时务必将其Collision Detection模式设置为Continuous Dynamic连续动态检测。这对于高速移动的角色避免穿透薄墙体至关重要。同时将Interpolation插值设置为Interpolate可以显著平滑移动带来的视觉抖动。4.3 混合方案Rigidbody的Kinematic模式将Rigidbody的Is Kinematic属性勾选上此时物理引擎不会自动驱动该刚体运动但其他动态刚体可以推动它。你仍然可以通过脚本每帧修改其position就像Character Controller那样同时它又能与物理世界进行“单向”的碰撞交互。优点移动控制像Character Controller一样稳定无摩擦力问题同时又能被其他物理对象如爆炸冲击波、移动平台影响。缺点实现复杂的物理交互如真实的摔倒、翻滚会更困难。这是目前许多3A大作角色控制的常见底层方案结合动画状态机和根运动Root Motion来使用。我的选择建议对于原型快速验证和小型项目用Character Controller最省心。对于需要丰富物理交互比如《塞尔达传说荒野之息》中物体被炸飞影响角色、或追求更真实物理反馈的中大型项目推荐使用Kinematic Rigidbody方案它提供了控制力与物理交互间的最佳平衡点。5. 解决方案三代码层面的“外科手术”即使调整了物理参数在某些极端情况下如非常复杂的网格碰撞体、多个碰撞体重叠可能仍需要代码辅助。这里提供几个立即可用的技巧。5.1 动态摩擦力覆写你可以在运行时根据角色状态临时修改其物理材质的摩擦力。例如当玩家按下冲刺键时将摩擦力降得更低以获得更滑溜的手感当玩家站立不动时恢复摩擦力以防止在斜坡上滑动。// 假设已获取到角色碰撞器和物理材质引用 private CapsuleCollider playerCollider; private PhysicsMaterial originalMaterial; private PhysicsMaterial lowFrictionMaterial; void Start() { playerCollider GetComponentCapsuleCollider(); originalMaterial playerCollider.material; // 创建一个运行时使用的超低摩擦材质 lowFrictionMaterial new PhysicsMaterial(); lowFrictionMaterial.dynamicFriction 0.02f; lowFrictionMaterial.staticFriction 0.02f; lowFrictionMaterial.frictionCombine PhysicsMaterialCombine.Minimum; } void Update() { if (Input.GetKey(KeyCode.LeftShift)) { // 冲刺时 playerCollider.material lowFrictionMaterial; } else { playerCollider.material originalMaterial; } }5.2 接触点分析与法线排斥在OnCollisionStay或FixedUpdate中你可以检测角色当前的碰撞情况并施加一个微小的排斥力来主动对抗“卡住”的状态。private Rigidbody rb; void Start() { rb GetComponentRigidbody(); } void FixedUpdate() { // 这是一个简化的思路检测水平速度是否异常低同时是否接触物体 if (rb.velocity.magnitude 0.1f IsTouchingWall()) { // 假设我们通过某种方式如射线获得了接触点的平均法线 Vector3 avgNormal GetAverageContactNormal(); // 计算一个与接触法线垂直的、指向玩家希望移动方向的“助推”力 Vector3 moveInput new Vector3(Input.GetAxis(Horizontal), 0, Input.GetAxis(Vertical)).normalized; Vector3 tangentForce Vector3.ProjectOnPlane(moveInput, avgNormal).normalized * 5f; // 5f是助推力大小 rb.AddForce(tangentForce, ForceMode.Impulse); } }这个方法需要更精细的碰撞信息处理实现起来较复杂但它是一种“治本”的思路直接干预了导致卡住的力学平衡。5.3 使用OverlapBox检测并提前规避对于已知的“问题墙角”你可以使用Physics.OverlapBox或Physics.SphereCast在角色移动前进行预检测。如果检测到前方即将进入一个可能导致卡住的狭窄区域或墙角可以自动调整移动向量让角色稍微绕开一点或者临时降低移动速度。public float avoidDistance 0.5f; public LayerMask obstacleLayer; Vector3 GetAdjustedMovement(Vector3 desiredMovement) { Vector3 futurePos transform.position desiredMovement.normalized * avoidDistance; Collider[] hits Physics.OverlapSphere(futurePos, playerCollider.radius, obstacleLayer); if (hits.Length 1) { // 同时碰到多个碰撞体可能是墙角 // 简化处理直接减少移动输入量让角色“蹭”过去 return desiredMovement * 0.3f; } return desiredMovement; }6. 高级排查与性能优化当上述常规方法都试过后问题依旧或者在大场景中出现了性能相关的卡顿你需要深入排查。6.1 物理更新频率与时间步长进入Edit - Project Settings - Time找到Fixed Timestep。这个值决定了物理更新的频率默认为0.02秒即50Hz。降低这个值如改为0.016666秒即60Hz可以提高物理模拟的精度有时能缓解因更新不够快导致的“抖动式”卡墙。但注意更低的Fixed Timestep意味着更频繁的FixedUpdate调用会增加CPU负担。如果游戏帧率Update波动较大而物理更新固定可能导致视觉上的不连贯。可以启用Maximum Allowed Timestep最大允许时间步长来限制一帧内用于追赶物理模拟的最长时间防止卡顿帧时物理模拟“雪崩”。6.2 碰撞体几何与网格复杂性环境碰撞体的形状复杂度直接影响物理计算开销和碰撞检测的准确性。避免使用Mesh Collider对于静态环境如墙壁、地面永远优先使用原始的Box Collider、Capsule Collider、Sphere Collider。Mesh Collider虽然形状精确但性能开销巨大且在某些情况下会产生意想不到的碰撞法线加剧卡顿。如果必须使用如复杂地形务必勾选Convex凸包选项并尽可能简化网格。碰撞体不要过度重叠多个碰撞体重叠会产生大量持续的接触点计算是性能杀手和物理不稳定的根源。确保你的关卡设计中碰撞体之间是恰好衔接而不是相互嵌入的。6.3 可视化调试工具Unity提供了强大的物理调试可视化功能在Play模式下非常有用Gizmos菜单在Scene视图右上角的Gizmos下拉菜单中可以勾选显示Colliders。这样你能清晰地看到所有碰撞体的轮廓。Physics Debugger在Window - Analysis - Physics Debugger中你可以以不同颜色查看静态、动态、睡眠状态的刚体以及碰撞体之间的接触点和法线。这是分析卡墙位置受力情况的终极工具。手动绘制射线/区域在代码中使用Debug.DrawRay或Debug.DrawLine来绘制你用于检测的射线或区域确保你的检测逻辑和预期一致。7. 实战案例一个抗卡墙的Rigidbody角色控制器框架最后分享一个我项目中经过验证的、基于Kinematic Rigidbody的简易角色控制器框架它集成了低摩擦材质、连续检测和简单的防卡处理。using UnityEngine; [RequireComponent(typeof(Rigidbody), typeof(CapsuleCollider))] public class AdvancedPlayerController : MonoBehaviour { [Header(Movement Settings)] public float walkSpeed 5f; public float sprintSpeed 8f; public float acceleration 10f; public float jumpForce 6f; public LayerMask groundLayer; [Header(Anti-Stick Settings)] public float antiStickForce 3f; // 防卡助推力 public float stuckVelocityThreshold 0.2f; // 判定为卡住的速度阈值 private Rigidbody rb; private CapsuleCollider col; private PhysicsMaterial playerPhysicsMaterial; private bool isGrounded; private Vector3 moveInput; void Start() { rb GetComponentRigidbody(); col GetComponentCapsuleCollider(); // 配置Rigidbody rb.isKinematic false; // 我们使用动力学刚体但通过速度控制 rb.freezeRotation true; // 冻结旋转防止摔倒 rb.collisionDetectionMode CollisionDetectionMode.ContinuousDynamic; // 连续动态检测 rb.interpolation RigidbodyInterpolation.Interpolate; // 插值平滑 // 创建并应用防卡物理材质 playerPhysicsMaterial new PhysicsMaterial(PlayerMat); playerPhysicsMaterial.dynamicFriction 0.05f; playerPhysicsMaterial.staticFriction 0.05f; playerPhysicsMaterial.bounciness 0; playerPhysicsMaterial.frictionCombine PhysicsMaterialCombine.Minimum; // 关键 col.material playerPhysicsMaterial; } void Update() { // 获取输入 float horizontal Input.GetAxisRaw(Horizontal); float vertical Input.GetAxisRaw(Vertical); moveInput (transform.right * horizontal transform.forward * vertical).normalized; // 跳跃检测简单版 if (Input.GetButtonDown(Jump) isGrounded) { rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); } } void FixedUpdate() { // 地面检测胶囊体底部球体检测 Vector3 bottomSphere transform.position Vector3.up * (col.radius); isGrounded Physics.CheckSphere(bottomSphere, col.radius - 0.05f, groundLayer); // 计算目标速度 float targetSpeed Input.GetKey(KeyCode.LeftShift) ? sprintSpeed : walkSpeed; Vector3 targetVelocity moveInput * targetSpeed; // 保持垂直速度重力 targetVelocity.y rb.velocity.y; // 通过VelocityChange进行平滑加速忽略质量 Vector3 velocityChange (targetVelocity - rb.velocity); velocityChange.y 0; // 不干预垂直速度 rb.AddForce(velocityChange * acceleration, ForceMode.VelocityChange); // 防卡墙处理如果水平速度异常低且玩家有输入施加一个切线方向的助推力 if (moveInput.magnitude 0.1f rb.velocity.magnitude stuckVelocityThreshold) { // 简单的向前方发射射线检测近距离障碍 if (Physics.Raycast(transform.position, moveInput, col.radius 0.2f, groundLayer)) { // 假设障碍物法线近似为射线命中点法线这里简化计算一个切线方向 Vector3 tangent Vector3.Cross(moveInput, Vector3.up).normalized; // 随机选一个切线方向施加一个小力打破平衡 rb.AddForce(tangent * antiStickForce, ForceMode.Impulse); } } } // 可选在Scene视图绘制地面检测球体便于调试 void OnDrawGizmosSelected() { if (col null) col GetComponentCapsuleCollider(); Gizmos.color Color.green; Vector3 bottomSphere transform.position Vector3.up * (col.radius); Gizmos.DrawWireSphere(bottomSphere, col.radius - 0.05f); } }这个框架的核心思路是通过Minimum摩擦组合模式确保摩擦力上限使用VelocityChange进行精准的速度控制以部分克服阻力并在检测到可能卡住时施加一个微小的切线方向扰动来打破力学僵局。它不是一个万能解决方案但为构建一个手感扎实、不卡墙的角色控制器打下了坚实的基础。你可以在此基础上根据游戏的具体需求添加更复杂的斜坡处理、空中控制、动画集成等功能。

相关新闻

弹簧操动机构深度解析:原理、调试与维护实战指南

弹簧操动机构深度解析:原理、调试与维护实战指南

1. 项目概述:从“咔哒”一声说起如果你在变电站或者高压开关柜旁边待过,一定听过那种清脆而有力的“咔哒”声,那是高压断路器完成一次分闸或合闸的标志。这声音的背后,十有八九站着的是一位“大力士”——弹簧操动机构。它不像电磁…

2026/10/9 9:46:38 阅读更多 →
弹簧操动机构原理深度解析:从储能到释放的机械艺术与运维实践

弹簧操动机构原理深度解析:从储能到释放的机械艺术与运维实践

1. 项目概述:从“啪嗒”一声说起如果你拆开过家里的老式开关,或者观察过工厂里那些大型断路器的内部,大概率会听到过一种清脆有力的“啪嗒”声。这声音背后,往往就藏着一个机械与电气完美结合的经典设计——弹簧操动机构。它不是什…

2026/10/11 13:44:45 阅读更多 →
从工具适配到Agent优先:构建企业级AI智能体的语义接口设计范式

从工具适配到Agent优先:构建企业级AI智能体的语义接口设计范式

1. 从“工具适配Agent”到“Agent定义工具”的范式转变 最近在设计和落地企业级AI智能体系统时,我遇到了一个普遍且棘手的问题:工具调用。我们团队基于大模型构建的智能体,在处理复杂业务流程时,需要调用大量的内部系统API&#x…

2026/10/15 12:46:03 阅读更多 →

最新新闻

OpenTelemetry Instrumentation for VoyageAI:为 Embedding 与 Rerank 调用接入可观测性

OpenTelemetry Instrumentation for VoyageAI:为 Embedding 与 Rerank 调用接入可观测性

LLMOps可观测性 【免费下载链接】openllmetry Open-source observability for your GenAI or LLM application, based on OpenTelemetry 项目地址: https://gitcode.com/gh_mirrors/op/openllmetry 点击查看 免费下载 这篇技术指南以 openllmetry 仓库中的 opentel…

2026/10/15 15:19:02 阅读更多 →
高校实训Day1:从环境初始化到最小可行闭环的工程启蒙

高校实训Day1:从环境初始化到最小可行闭环的工程启蒙

1. 项目概述:一场面向真实工程场景的入门实战“山东大学实训 Day1”这个标题看似简单,但背后承载的是高校工科教育中最具实操张力的一环——从理论课堂到工程现场的首次跨步。我带过不下二十期校企联合实训项目,几乎每届学生在第一天都会经历…

2026/10/15 15:19:02 阅读更多 →
Java养老院管理系统开发实践与技术解析

Java养老院管理系统开发实践与技术解析

1. 项目概述:养老院管理系统的核心价值养老院管理系统是针对养老机构日常运营需求开发的专业化信息管理平台。这个基于Java技术栈的系统整合了养老院从入住管理到日常护理的全流程业务,解决了传统纸质记录效率低下、信息孤岛严重、数据统计分析困难等行业…

2026/10/15 15:19:02 阅读更多 →
MCP协议安全解析:AI模块化连接的风险与防御

MCP协议安全解析:AI模块化连接的风险与防御

1. 项目概述:当AI生态遇上"万能接口"隐患去年参与某金融AI系统对接时,我第一次见识到MCP协议的威力——只需简单配置,三个不同厂商的AI模块就像乐高积木一样咔嗒对接成功。但庆祝酒会还没结束,安全团队就发来了警报&…

2026/10/15 15:19:02 阅读更多 →
VC++与OpenGL加载3ds模型:从chunk解析到场景漫游全攻略

VC++与OpenGL加载3ds模型:从chunk解析到场景漫游全攻略

简介:VC结合OpenGL与lib3ds库实现3ds模型导入、渲染及交互式漫游的完整工程源码,面向具备C基础、希望深入图形编程与三维模型处理的开发者。工程共102个文件,压缩包1.73MB,涵盖24个C/C头文件、20个C源文件、18个C源文件&#xff0…

2026/10/15 15:19:02 阅读更多 →
非负矩阵分解NMF详解:MATLAB手写代码与调参实践

非负矩阵分解NMF详解:MATLAB手写代码与调参实践

简介:这份非负矩阵分解MATLAB代码包较为完整地涵盖了基础NMF及常见扩展与优化实现,适合机器学习、图像处理、文本挖掘和生物信息学方向的研究者、学生及工程人员使用。包内围绕VWH的分解目标,提供了乘法更新、交替最小二乘等主流优化算法实现…

2026/10/15 15:18:01 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →