three-player-controller 0.2.4 → 0.2.51
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 +34 -26
- package/dist/index.d.mts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +111 -183
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +111 -183
- package/dist/index.mjs.map +1 -1
- package/package.json +43 -43
package/README.md
CHANGED
|
@@ -1,26 +1,31 @@
|
|
|
1
|
+
[English](README_En.md)
|
|
2
|
+
|
|
1
3
|
# three-player-controller
|
|
2
4
|
|
|
3
|
-
轻量的第三人称 / 第一人称玩家控制器,开箱即用,基于 three.js 和 three-mesh-bvh 实现人物胶囊体碰撞、BVH
|
|
5
|
+
轻量的第三人称 / 第一人称玩家控制器,开箱即用,基于 three.js 和 three-mesh-bvh 实现人物胶囊体碰撞、BVH 碰撞检测、人物动画、第一/三人称切换与相机避障。
|
|
4
6
|
|
|
5
7
|
# 安装
|
|
6
8
|
|
|
9
|
+
```bash
|
|
7
10
|
npm install three-player-controller
|
|
11
|
+
```
|
|
8
12
|
|
|
9
13
|
# 示例
|
|
10
14
|
|
|
11
|
-
[
|
|
15
|
+
[glb 场景](https://hh-hang.github.io/three-player-controller/index.html)
|
|
16
|
+
[3dtiles 场景](https://hh-hang.github.io/three-player-controller/3dtilesScene.html)
|
|
12
17
|
|
|
13
|
-
###
|
|
18
|
+
### 普通控制
|
|
14
19
|
|
|
15
|
-

|
|
16
21
|
|
|
17
|
-
###
|
|
22
|
+
### 飞行控制
|
|
18
23
|
|
|
19
|
-

|
|
20
25
|
|
|
21
|
-
###
|
|
26
|
+
### 移动端控制演示
|
|
22
27
|
|
|
23
|
-

|
|
24
29
|
|
|
25
30
|
# 使用
|
|
26
31
|
|
|
@@ -70,12 +75,12 @@ export function playerController(): {
|
|
|
70
75
|
|
|
71
76
|
- `init(opts, callback?)`
|
|
72
77
|
初始化控制器。`callback` 在资源加载完成后调用。
|
|
73
|
-
- `update(dt?)`
|
|
74
|
-
每帧调用。
|
|
75
78
|
- `changeView()`
|
|
76
79
|
在第一/第三人称间切换。
|
|
77
80
|
- `reset(pos?)`
|
|
78
81
|
复位玩家到指定位置。
|
|
82
|
+
- `update(dt?)`
|
|
83
|
+
每帧调用。
|
|
79
84
|
- `destroy()`
|
|
80
85
|
销毁控制器。
|
|
81
86
|
|
|
@@ -94,7 +99,8 @@ export function offAllEvent(): void; // 关闭所有输入事件
|
|
|
94
99
|
|
|
95
100
|
- `onAllEvent()`:确保控制器存在并打开输入监听。
|
|
96
101
|
- `offAllEvent()`:关闭输入监听(用于显示 UI 或暂停时禁止玩家输入)。
|
|
97
|
-
|
|
102
|
+
|
|
103
|
+
默认处理包括:WASD 移动、奔跑、跳跃、鼠标视角等。
|
|
98
104
|
|
|
99
105
|
---
|
|
100
106
|
|
|
@@ -133,21 +139,23 @@ type PlayerControllerOptions = {
|
|
|
133
139
|
|
|
134
140
|
### 关键字段说明
|
|
135
141
|
|
|
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` |
|
|
145
|
-
| `playerModel.gravity` | `number` |
|
|
146
|
-
| `playerModel.jumpHeight` | `number` |
|
|
147
|
-
| `initPos` | `THREE.Vector3` |
|
|
148
|
-
| `mouseSensity` | `number` |
|
|
149
|
-
| `minCamDistance` / `maxCamDistance` | `number` |
|
|
150
|
-
| `colliderMeshUrl` |
|
|
142
|
+
| 字段 | 类型 | 默认 / 说明 |
|
|
143
|
+
| ------------------------------------------------------------ | ------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
144
|
+
| `scene` | `THREE.Scene` | three.js 场景(必填) |
|
|
145
|
+
| `camera` | `THREE.PerspectiveCamera` | three.js 相机(必填) |
|
|
146
|
+
| `controls` | `OrbitControls` | 外部相机控制器(必填) |
|
|
147
|
+
| `playerModel.url` | `string` | 人物模型路径(GLB/GLTF,必填) |
|
|
148
|
+
| `playerModel.scale` | `number` | 人物模型缩放(必填) |
|
|
149
|
+
| `playerModel.idleAnim` / `walkAnim` / `runAnim` / `jumpAnim` | `string` | 人物动画名,需与人物模型中动画名称一致(必填) |
|
|
150
|
+
| `playerModel.speed` | `number` | 基准速度,默认`400` |
|
|
151
|
+
| `playerModel.gravity` | `number` | 重力加速度,默认`-2400` |
|
|
152
|
+
| `playerModel.jumpHeight` | `number` | 跳跃高度,默认`800` |
|
|
153
|
+
| `initPos` | `THREE.Vector3` | 初始位置,默认`(0,0,0)` |
|
|
154
|
+
| `mouseSensity` | `number` | 鼠标灵敏度,默认`5` |
|
|
155
|
+
| `minCamDistance` / `maxCamDistance` | `number` | 第三人称相机距离限制,默认分别为`100`、`440` |
|
|
156
|
+
| `colliderMeshUrl` | `string` | 自制碰撞体模型路径,默认`""` |
|
|
157
|
+
| `isShowMobileControls` | `boolean` | 移动端运行时,是否自动显示移动端控制器,默认`true` |
|
|
158
|
+
| `thirdMouseMode` | `[0, 1, 2, 3]` | 第三人称视角下的不同鼠标控制模式 ,默认`1`(0: 隐藏鼠标控制朝向及视角,1: 隐藏鼠标仅控制视角,2: 显示鼠标拖拽控制朝向及视角, 3: 显示鼠标拖拽仅控制视角) |
|
|
151
159
|
|
|
152
160
|
---
|
|
153
161
|
|
package/dist/index.d.mts
CHANGED
|
@@ -20,13 +20,16 @@ type PlayerControllerOptions = {
|
|
|
20
20
|
gravity?: number;
|
|
21
21
|
jumpHeight?: number;
|
|
22
22
|
speed?: number;
|
|
23
|
+
rotateY?: number;
|
|
23
24
|
};
|
|
24
25
|
initPos?: THREE.Vector3;
|
|
26
|
+
intDirection?: THREE.Vector3;
|
|
25
27
|
mouseSensity?: number;
|
|
26
28
|
minCamDistance?: number;
|
|
27
29
|
maxCamDistance?: number;
|
|
28
30
|
colliderMeshUrl?: string;
|
|
29
31
|
isShowMobileControls?: boolean;
|
|
32
|
+
thirdMouseMode?: 0 | 1 | 2 | 3;
|
|
30
33
|
};
|
|
31
34
|
declare function playerController(): {
|
|
32
35
|
init: (opts: PlayerControllerOptions, callback?: () => void) => Promise<void>;
|
|
@@ -35,6 +38,7 @@ declare function playerController(): {
|
|
|
35
38
|
update: (dt?: number) => Promise<void>;
|
|
36
39
|
destroy: () => void;
|
|
37
40
|
setInput: (i: any) => void;
|
|
41
|
+
getposition: () => THREE.Vector3;
|
|
38
42
|
};
|
|
39
43
|
declare function onAllEvent(): void;
|
|
40
44
|
declare function offAllEvent(): void;
|
package/dist/index.d.ts
CHANGED
|
@@ -20,13 +20,16 @@ type PlayerControllerOptions = {
|
|
|
20
20
|
gravity?: number;
|
|
21
21
|
jumpHeight?: number;
|
|
22
22
|
speed?: number;
|
|
23
|
+
rotateY?: number;
|
|
23
24
|
};
|
|
24
25
|
initPos?: THREE.Vector3;
|
|
26
|
+
intDirection?: THREE.Vector3;
|
|
25
27
|
mouseSensity?: number;
|
|
26
28
|
minCamDistance?: number;
|
|
27
29
|
maxCamDistance?: number;
|
|
28
30
|
colliderMeshUrl?: string;
|
|
29
31
|
isShowMobileControls?: boolean;
|
|
32
|
+
thirdMouseMode?: 0 | 1 | 2 | 3;
|
|
30
33
|
};
|
|
31
34
|
declare function playerController(): {
|
|
32
35
|
init: (opts: PlayerControllerOptions, callback?: () => void) => Promise<void>;
|
|
@@ -35,6 +38,7 @@ declare function playerController(): {
|
|
|
35
38
|
update: (dt?: number) => Promise<void>;
|
|
36
39
|
destroy: () => void;
|
|
37
40
|
setInput: (i: any) => void;
|
|
41
|
+
getposition: () => THREE.Vector3;
|
|
38
42
|
};
|
|
39
43
|
declare function onAllEvent(): void;
|
|
40
44
|
declare function offAllEvent(): void;
|