前言
两年前,接触Three.js时,那会刚学习前端,有一个需求就是做一个第一人称漫游的功能,当时翻遍很多学习资料,发现想要实现得考虑很多方面:碰撞、人物动画切换、相机跟随等等。也参考过许多示例,最后找到three-mesh-bvh上的示例,发现比八叉树快不少,最后在该示例上进行许多次修改、优化,做出来一个初步的人物控制器。
随着对各种三维框架 、引擎了解,发现人物控制功能在Untiy、UE已经有成熟的方案,能够直接开箱使用。我在想,Three.js为什么不能呢,所以,我在之前的控制器上进行大改,准备制作一个通用版本,所以就有了three-player-controller。
功能
人物控制
1.视角切换:支持第一人称和第三人称视角,提供沉浸式场景浏览体验。可在场景中自由行走、跑步、跳跃、飞行。
2.碰撞检测:通过 three-mesh-bvh 提供高效的碰撞检测和射线查询,保证大规模场景中的性能。
3.相机避障:自动处理相机与场景物体的碰撞,避免相机穿模,确保稳定的第三人称视角。
车辆控制
1.视角切换:支持第一人称和第三人称视角。可在场景中驾驶、漂移。
2.物理引擎: 通过 Rapier 物理引擎实现车辆各种参数更新。