Skip to content

Releases: hh-hang/three-player-controller

v0.4.8

Choose a tag to compare

@hh-hang hh-hang released this 13 Jun 10:03

新增

  • 自定义键位:新增 keyMap 配置和 setKeyMap() 方法,可以自己设置每个操作用哪个键——换成别的键、一个操作绑多个键,或者把某个操作关掉(传 null)。例如 keyMap: { toggleFly: null } 即可禁用飞行,keyMap: { forward: "KeyQ } 把前进改成按 Q。
  • 加减速参数:PlayerModelOptions 新增 acceleration / deceleration(默认 30),控制 XZ 方向的加速 / 减速响应,。
  • 弹簧相机:PlayerControllerOptions 新增 springCameraTime(默认 0.15),配合 enableSpringCamera 调节跟随平滑度。

移除

  • 移除 flyEnabled:PlayerModelOptions.flyEnabled 已删除;如需禁用飞行,改用 keyMap: { toggleFly: null }

优化

  • 速度驱动移动:位移由「按键直接驱动」改为「按键计算速度驱动」。
  • 飞行前进方向:飞行时前进方向改为与相机朝向一致。

修复

  • 修复速度被二次叠加导致重力变为 2× 的问题 (#6)。

v0.4.7

Choose a tag to compare

@hh-hang hh-hang released this 26 May 09:14

新增

  • 时间缩放系数PlayerControllerOptions 新增 timeScale 字段(默认 1),乘以每帧 delta,可用于慢动作或快进效果

修复

  • 修复飞行模式切换时未清零下落速度的 bug,切入飞行模式时不再保留之前的下落惯性
  • 页面失焦(window blur)时自动重置所有按键状态

v0.4.6

Choose a tag to compare

@hh-hang hh-hang released this 22 May 06:43

新增

  • 三段跳跃动画jumpAnim 支持传入 [起跳, 循环, 落地] 三元素数组,落地后自动衔接移动动画
  • 飞行悬停方向动画:新增 6 个方向的飞行悬停动画字段(flyHoverForwardAnim / flyHoverBackAnim / flyHoverLeftAnim / flyHoverRightAnim / flyHoverUpAnim / flyHoverDownAnim),不配置时自动使用 flyIdleAnim
  • 第三人称鼠标模式 4 / 5thirdMouseMode 新增两种模式,人物朝向实时跟随相机水平方向,适合 ARPG / TPS 风格控制
  • 新增 getActiveDynamicCollider() 接口,返回当前玩家站立的动态碰撞体
  • 新增 getCurrentLocomotionSet() 接口,返回当前移动动作组名

变更

  • 去除掉落自动重置逻辑,位置超出边界后的处理改由用户自行调用 reset() 自行控制

示例

  • 新增FPS Game 示例
  • gltf示例新增加ue小白人模型

v0.4.5

Choose a tag to compare

@hh-hang hh-hang released this 13 May 03:10

新增

新增 CameraSystem.lookAtHeightRatio(默认 0.8),看向点 Y 坐标由胶囊几何直接计算(0=胶囊底部,1=顶部)。支持初始化时通过 camLookAtHeightRatio 传入,运行时通过 setCamLookAtHeightRatio(v) 动态调整。

v0.4.4

Choose a tag to compare

@hh-hang hh-hang released this 03 May 09:36

配置变更

  • 实例化方式变更playerController 现在是类,需要使用 new

    // 之前
    const player = playerController();
    
    // 现在
    const player = new playerController();
  • PlayerControllerOptions 碰撞体字段变更:移除 colliderMeshUrl,改用 staticCollider / dynamicCollider

    // 之前
    await player.init({ colliderMeshUrl: "./map.glb", ... });
    
    // 现在
    await player.init({ staticCollider: mapMesh, ... });

新API

动态碰撞体

方法 说明
addDynamicCollider(source) 注册动态碰撞体(如可移动平台、电梯)。
removeDynamicCollider(source) 移除已注册的动态碰撞体。
clearDynamicColliders() 移除所有动态碰撞体。

init 时也可通过 dynamicCollider 字段批量注册:

await player.init({
    staticCollider: groundMesh,
    dynamicCollider: [platformA, platformB],
    ...
});

碰撞体重建

方法 说明
buildStaticCollider(sources?) 运行时重建静态碰撞体;不传则遍历整个场景。

示例

  • glTF Scene示例添加动态碰撞体(飞行云朵)

v0.4.2

Choose a tag to compare

@hh-hang hh-hang released this 25 Apr 09:56

v0.4.2

新增

  • 新增自定义动画扩展能力,支持 registerAnimationplayAnimationregisterLocomotionSetswitchLocomotionSet
  • 新增更多运行时状态与查询接口,包括 getVelocity()getIsFirstPerson()getIsFlying()getIsOnGround()getControllerMode()getPlayerModel()getPlayerCapsule()getCollider()getCurrentPlayerAnimationName()getCenterScreenRaycastHit()
  • 新增事件回调接口,包括 onBeforeViewChangeonViewChangeonGroundChangeonVehicleEnteronVehicleExitonTowardChange
  • 新增运行时控制能力,支持 setPlayerScale() 动态缩放角色。
  • 新增第一人称初始化与相机偏移配置,支持 isFirstPersonfirstPersonCameraOffset,方便更细致地控制第一人称体验。

修改

  • 初始化配置项由 playerModel 调整为 playerModelConfig,与当前控制器实现保持一致。
  • 角色头部节点字段由 headObjName 调整为 headBoneName

示例

  • 新增蜡笔小新(ShinChan)场景demo

v0.4.1

Choose a tag to compare

@hh-hang hh-hang released this 11 Apr 02:49

v0.4.1

修复

  • 修复移动端摇杆控制时动画响应不及时

变化

  • 移除 nipplejs 依赖
  • 为移动端控制按钮新增显示/隐藏参数支持

v0.4.0

Choose a tag to compare

@hh-hang hh-hang released this 27 Mar 09:34

修复

添加楼梯检测

v0.3.9

Choose a tag to compare

@hh-hang hh-hang released this 26 Mar 09:11

修复

  • 修复视角切换时第一视角方位错误的 bug

示例

  • gltf 场景示例添加"更换场景"功能,可自定义场景模型加载到示例中
  • 3dtiles 场景示例添加区域加载功能,只加载人物周边 tiles,优化性能

v0.3.8

Choose a tag to compare

@hh-hang hh-hang released this 12 Mar 04:43

修复

加强读取人物尺寸的相关逻辑

新增

新增getCurrentPersonAnimationName、registerAnimation、playAnimation等自定义动画API,这些目前处于测试阶段,为后续执行用户自定义动画做准备