带物理交互的CharacterController设计与实现

本文也是PhysX物理引擎系列的番外篇。介绍了笔者基于CharacterController(CCT)设计的一个新的角色控制器,在修补Unity/PhysX的CCT的缺陷外,还增添了若干和物理交互相关的有趣特性。代码已经过实际项目验证,这里仅保留和具体业务无关的部分。 背景和需求 前文结尾处提到一些PhysX自带的CCT(Unity也是基于此二次封装出CharacterController组件)在实际游戏开发中的缺点,这里再次总结: CCT不参与碰撞系统的检测。仅当CCT自身移动时会判断是否被其他刚体或CCT阻挡。这就造成一个BUG:CCT自身静止时,其他运动物体会穿过CCT且没有事件触发。官方论坛上有苦主持续8年向Unity反馈这个问题但无法解决,目前已知的唯一绕过方式是每帧给CCT附加一个微小的位移(下文中的SlightMove)。 Unity提供的接口CharacterController.isGrounded效果很不稳定。其内部只是判断CCT上次运动后底部是否触碰物体。即collisionFlags & eCOLLISION_DOWN::eCOLLISION_DOWN。但在上下坡或崎岖地形时,很容易出现侧面触碰或短暂浮空。如果用该接口驱动动画表现甚至跑跳逻辑,效果很差。需要自行基于SceneQuery封装出更加稳定的判定着地的函数。 Unity没有暴露CCT.upVector,角色总是竖直向上的。要实现反重力鞋在任意斜面上行走或像马里奥银河那样在曲面上跑跳穿梭,只能放弃使用CCT但也放弃了其在操作手感上的改善。其实拿到Unity的源码后,只用了十分钟将底层字段暴露到C#层就解决了该问题。 新的角色控制器需要增加的物理交互特性有: ...

March 18, 2024 · 8 min

深入 LossyScale

本文是PhysX物理引擎系列的番外篇,其实要弄明白一个3D数学问题:如何处理父节点带有非均匀缩放、子节点带有旋转时,子节点的最终大小和形态。 问题源自笔者在修改物理引擎为其添加scale属性时遇到的一个bug。解决后对WorldScale为什么叫做LossyScale、空间变换和基变换有了更深的理解。 ...

July 19, 2023 · 7 min

洞见·为什么佛学是真的

当看到书名时,我承认内心有一丝挑战欲。受过系统的科研训练的人,往往对“真的”有“洁癖”。作者Robert Wright也认识到这一点,所以在开头便说,本书可以看作佛学观点的进化心理学解释。并不探讨轮回、神明这些超自然的部分,而探讨自然主义部分。并不探讨佛教各分支的细枝末节,而探讨核心思想。不要用佛教教义使自己成为更好的佛教徒,用它来做更好的自己。正是这句话让我有了继续读下去的意愿。 ...

June 6, 2023 · 8 min

Generative AI Toolkit (5.12)

“There are decades where nothing happens; and there are weeks where decades happen.” ― Vladimir Lenin 基于大语言模型的AI在这个月带给人们的感受,用列宁的这句话概括再贴切不过了。作为普通人,去拥抱这些AI工具,就像会使用智能手机和搜索引擎;对人类来说,就像学会用电,学会用火。 ...

March 26, 2023 · 2 min

凤凰项目

市面上以DevOps为主题的书,以及和项目攻关的影视作品有不少了,但这本小说读起来依然紧张刺激。除了揭示管理现代IT组织与管理传统工厂的共通之处,书里更强调了以一种全局的视角来重新看待自己的工作环境,和自己在工作中扮演的角色,并且,其包含的问题分析方法、实践方法也或多或少可用于个人效能的优化。 ...

March 21, 2023 · 8 min

贫穷的质感(王梆)

近日读完《贫穷的质感·王梆的英国观察》(豆瓣读书,Goodreads)一书后,将只言片语组合起来作一点记录。此书说了很多英国普通人的事情、社会传统,但相信我们读起来应该不会太陌生。透过诸多生活中的观察,自然引申出养老、医疗、社会制度、逆全球化等话题。 只言片语 英国政府曾推出大量廉租房,老旧了便拿来卖钱。由于是市面价格的一半,非常受炒房客的欢迎。有钱人买来继续出租,租金比原来还要高。但由于政府不再负责修缮,这些房子逐渐变得又贵又脏。 ...

March 3, 2023 · 2 min

经济机器如何运行(达利欧)

本文总结自Ray Dalio: How the Economic Machine Works,原视频地址 核心概念简述 什么是交易 买方使用货币、信用(也叫信贷)向卖方交换商品、服务、金融资产。 交易首先是由人的天性驱动的。 买方的支出总额(而不是其他)是经济的驱动力,所有的经济周期和动力都是交易造成的。 交易的主体通常有:个人、企业、银行、政府。 政府如何参与交易 政府其实同时是最大的买方和卖方。 政府主要由两部分:中央政府,负责收税;中央银行,负责花钱。 中央银行通过利率和印钱控制经济中的货币和信用(信贷数量)。 什么是信贷 信贷也是一种交易。比如你找银行借钱,你是借款人,银行是贷款人。你是交易的卖方,银行是买方。 这种交易的特殊之处在于:交易是延迟完成的,即借款人保证将来偿还贷款和利息,直到那个时候,交易才算完成。 交易未完成前的状态,即债务。债务是贷款人的资产,借款人的负债。 只有交易完成时,这些资产和负债才会消失。 什么是价格 $$ 价格 = \frac{买方支出总额}{产销总量} =\frac{(货币 + 信贷)} {产销总量} $$什么是市场 一种市场,包含同一种商品的所有买方和所有卖方。有千千万万种商品或服务对应千千万万种市场。 ...

February 16, 2023 · 5 min

GP-GPU编程:CUDA介绍

February 28, 2015 · 5 min

我是查理

February 15, 2015 · 2 min

Scientific Thinking? No, 杂谈です

November 20, 2014 · 3 min