three-player-controller 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,7 @@ npm install three-player-controller
8
8
 
9
9
  # 示例
10
10
 
11
- [Player Controller](https://hh-hang.github.io/three-player-controller/)
11
+ [glbScene](https://hh-hang.github.io/three-player-controller/index.html)
12
12
 
13
13
  ### 控制
14
14
 
@@ -22,7 +22,6 @@ npm install three-player-controller
22
22
 
23
23
  ![3DTiles 漫游](https://github.com/hh-hang/three-player-controller/blob/master/example/public/gif/4.gif)
24
24
 
25
-
26
25
  # 使用
27
26
 
28
27
  ```js
@@ -51,6 +50,107 @@ player.init({
51
50
  player.update();
52
51
  ```
53
52
 
53
+ # API
54
+
55
+ ## 一、初始化
56
+
57
+ ### 导出函数
58
+
59
+ ```ts
60
+ export function playerController(): {
61
+ init: (opts: PlayerControllerOptions, callback?: () => void) => void;
62
+ changeView: () => void;
63
+ reset: (pos?: THREE.Vector3) => void;
64
+ update: (dt?: number) => void;
65
+ destroy: () => void;
66
+ };
67
+ ```
68
+
69
+ ### 方法说明
70
+
71
+ - `init(opts, callback?)`
72
+ 初始化控制器。`callback` 在资源加载完成后调用。
73
+ - `update(dt?)`
74
+ 每帧调用。
75
+ - `changeView()`
76
+ 在第一/第三人称间切换。
77
+ - `reset(pos?)`
78
+ 复位玩家到指定位置。
79
+ - `destroy()`
80
+ 销毁控制器。
81
+
82
+ ---
83
+
84
+ ## 二、事件
85
+
86
+ ### 全局事件开关
87
+
88
+ ```ts
89
+ export function onAllEvent(): void; // 打开所有输入事件
90
+ export function offAllEvent(): void; // 关闭所有输入事件
91
+ ```
92
+
93
+ ### 说明
94
+
95
+ - `onAllEvent()`:确保控制器存在并打开输入监听。
96
+ - `offAllEvent()`:关闭输入监听(用于显示 UI 或暂停时禁止玩家输入)。
97
+ - 默认处理包括:WASD 移动、奔跑、跳跃、鼠标视角等。
98
+
99
+ ---
100
+
101
+ ## 三、配置与参数说明
102
+
103
+ ### 类型定义
104
+
105
+ ```ts
106
+ type PlayerControllerOptions = {
107
+ scene: THREE.Scene;
108
+ camera: THREE.PerspectiveCamera;
109
+ controls: OrbitControls;
110
+ playerModel: {
111
+ url: string;
112
+ idleAnim: string;
113
+ walkAnim: string;
114
+ runAnim: string;
115
+ jumpAnim: string;
116
+ leftWalkAnim?: string;
117
+ rightWalkAnim?: string;
118
+ backwardAnim?: string;
119
+ flyAnim?: string;
120
+ flyIdleAnim?: string;
121
+ scale: number;
122
+ gravity?: number;
123
+ jumpHeight?: number;
124
+ speed?: number;
125
+ };
126
+ initPos?: THREE.Vector3;
127
+ mouseSensity?: number;
128
+ minCamDistance?: number;
129
+ maxCamDistance?: number;
130
+ colliderMeshUrl?: string;
131
+ };
132
+ ```
133
+
134
+ ### 关键字段说明
135
+
136
+ | 字段 | 类型 | 默认 / 说明 |
137
+ | ------------------------------------------------------------ | ------------------------: | ---------------------------------------------- |
138
+ | `scene` | `THREE.Scene` | three.js 场景(必填) |
139
+ | `camera` | `THREE.PerspectiveCamera` | three.js 相机(必填) |
140
+ | `controls` | `OrbitControls` | 外部相机控制器(必填) |
141
+ | `playerModel.url` | `string` | 人物模型路径(GLB/GLTF,必填) |
142
+ | `playerModel.scale` | `number` | 人物模型缩放(必填) |
143
+ | `playerModel.idleAnim` / `walkAnim` / `runAnim` / `jumpAnim` | `string` | 人物动画名,需与人物模型中动画名称一致(必填) |
144
+ | `playerModel.speed` | `number` | 基准速度,默认约 `4.0` |
145
+ | `playerModel.gravity` | `number` | 重力加速度,默认 `9.8` |
146
+ | `playerModel.jumpHeight` | `number` | 跳跃高度 |
147
+ | `initPos` | `THREE.Vector3` | 初始位置,默认 `(0,0,0)` |
148
+ | `mouseSensity` | `number` | 鼠标灵敏度 |
149
+ | `minCamDistance` / `maxCamDistance` | `number` | 第三人称相机距离限制 |
150
+ | `colliderMeshUrl` | `string?` | 自制碰撞体模型路径 |
151
+
152
+ ---
153
+
54
154
  # 感谢
55
155
 
56
156
  [three-mesh-bvh](https://github.com/gkjohnson/three-mesh-bvh)
Binary file
Binary file
Binary file
Binary file
package/dist/index.d.mts CHANGED
@@ -1,41 +1,40 @@
1
1
  import * as THREE from 'three';
2
2
  import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
3
3
 
4
+ type PlayerControllerOptions = {
5
+ scene: THREE.Scene;
6
+ camera: THREE.PerspectiveCamera;
7
+ controls: OrbitControls;
8
+ playerModel: {
9
+ url: string;
10
+ idleAnim: string;
11
+ walkAnim: string;
12
+ runAnim: string;
13
+ jumpAnim: string;
14
+ leftWalkAnim?: string;
15
+ rightWalkAnim?: string;
16
+ backwardAnim?: string;
17
+ flyAnim?: string;
18
+ flyIdleAnim?: string;
19
+ scale: number;
20
+ gravity?: number;
21
+ jumpHeight?: number;
22
+ speed?: number;
23
+ };
24
+ initPos?: THREE.Vector3;
25
+ mouseSensity?: number;
26
+ minCamDistance?: number;
27
+ maxCamDistance?: number;
28
+ colliderMeshUrl?: string;
29
+ isShowMobileControls?: boolean;
30
+ };
4
31
  declare function playerController(): {
5
- init: (opts: {
6
- scene: THREE.Scene;
7
- camera: THREE.PerspectiveCamera;
8
- controls: OrbitControls;
9
- playerModel: {
10
- url: string;
11
- idleAnim: string;
12
- walkAnim: string;
13
- runAnim: string;
14
- jumpAnim: string;
15
- leftWalkAnim?: string;
16
- rightWalkAnim?: string;
17
- backwardAnim?: string;
18
- flyAnim?: string;
19
- flyIdleAnim?: string;
20
- scale: number;
21
- gravity?: number;
22
- jumpHeight?: number;
23
- speed?: number;
24
- };
25
- initPos?: THREE.Vector3;
26
- mouseSensity?: number;
27
- minCamDistance?: number;
28
- maxCamDistance?: number;
29
- }, callback?: () => void) => Promise<void>;
32
+ init: (opts: PlayerControllerOptions, callback?: () => void) => Promise<void>;
30
33
  changeView: () => void;
31
- createBVH: (url?: string) => Promise<void>;
32
- createPlayer: () => void;
33
34
  reset: (pos?: THREE.Vector3) => void;
34
35
  update: (dt?: number) => Promise<void>;
35
36
  destroy: () => void;
36
- displayCollider: boolean;
37
- displayPlayer: boolean;
38
- displayVisualizer: boolean;
37
+ setInput: (i: any) => void;
39
38
  };
40
39
  declare function onAllEvent(): void;
41
40
  declare function offAllEvent(): void;
package/dist/index.d.ts CHANGED
@@ -1,41 +1,40 @@
1
1
  import * as THREE from 'three';
2
2
  import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
3
3
 
4
+ type PlayerControllerOptions = {
5
+ scene: THREE.Scene;
6
+ camera: THREE.PerspectiveCamera;
7
+ controls: OrbitControls;
8
+ playerModel: {
9
+ url: string;
10
+ idleAnim: string;
11
+ walkAnim: string;
12
+ runAnim: string;
13
+ jumpAnim: string;
14
+ leftWalkAnim?: string;
15
+ rightWalkAnim?: string;
16
+ backwardAnim?: string;
17
+ flyAnim?: string;
18
+ flyIdleAnim?: string;
19
+ scale: number;
20
+ gravity?: number;
21
+ jumpHeight?: number;
22
+ speed?: number;
23
+ };
24
+ initPos?: THREE.Vector3;
25
+ mouseSensity?: number;
26
+ minCamDistance?: number;
27
+ maxCamDistance?: number;
28
+ colliderMeshUrl?: string;
29
+ isShowMobileControls?: boolean;
30
+ };
4
31
  declare function playerController(): {
5
- init: (opts: {
6
- scene: THREE.Scene;
7
- camera: THREE.PerspectiveCamera;
8
- controls: OrbitControls;
9
- playerModel: {
10
- url: string;
11
- idleAnim: string;
12
- walkAnim: string;
13
- runAnim: string;
14
- jumpAnim: string;
15
- leftWalkAnim?: string;
16
- rightWalkAnim?: string;
17
- backwardAnim?: string;
18
- flyAnim?: string;
19
- flyIdleAnim?: string;
20
- scale: number;
21
- gravity?: number;
22
- jumpHeight?: number;
23
- speed?: number;
24
- };
25
- initPos?: THREE.Vector3;
26
- mouseSensity?: number;
27
- minCamDistance?: number;
28
- maxCamDistance?: number;
29
- }, callback?: () => void) => Promise<void>;
32
+ init: (opts: PlayerControllerOptions, callback?: () => void) => Promise<void>;
30
33
  changeView: () => void;
31
- createBVH: (url?: string) => Promise<void>;
32
- createPlayer: () => void;
33
34
  reset: (pos?: THREE.Vector3) => void;
34
35
  update: (dt?: number) => Promise<void>;
35
36
  destroy: () => void;
36
- displayCollider: boolean;
37
- displayPlayer: boolean;
38
- displayVisualizer: boolean;
37
+ setInput: (i: any) => void;
39
38
  };
40
39
  declare function onAllEvent(): void;
41
40
  declare function offAllEvent(): void;