轻量级THREE角色控制器(支持第一/第三人称、动画控制、键盘鼠标输入)
npm install @anov/3d-controller``bash`
npm install @anov/3d-controller
`typescript
import { Scene, PerspectiveCamera } from '@anov/3d-core';
import { UniversalControls, EControlMode } from '@anov/3d-controller';
// 创建场景和相机
const scene = new Scene();
const camera = new PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
// 初始化通用控制器
const controls = new UniversalControls(
scene,
camera,
document.body,
EControlMode.Orbit, // 初始模式:轨道控制
{
characterModelUrl: 'assets/character.glb', // 角色模型(用于第一/第三人称模式)
spawnPoint: {
position: new Vector3(0, 0, 0),
rotation: new Euler(0, Math.PI/2, 0)
}
}
);
// 切换控制模式
controls.setMode(EControlMode.Third); // 切换到第三人称模式
// 在动画循环中更新控制器
function animate() {
requestAnimationFrame(animate);
controls.update();
renderer.render(scene, camera);
}
animate();
// 资源清理
function dispose() {
controls.dispose();
}
`
#### 构造函数
`typescript`
constructor(
scene: Scene,
camera: PerspectiveCamera | OrthographicCamera,
domElement: HTMLElement,
mode: EControlMode = EControlMode.Orbit,
options = {}
)
#### 控制模式枚举
`typescript`
enum EControlMode {
Orbit = 0, // 轨道控制器
Map = 1, // 地图控制器
First = 2, // 第一人称控制器
Third = 3, // 第三人称控制器
Fly = 4 // 飞行控制器
}
#### 方法
- setMode(mode: EControlMode): void - 设置控制器模式update(): void
- - 更新控制器状态dispose(): void
- - 清理资源
'idle' - 空闲
'walking' - 行走
'running' - 跑步
``