书接上回,实现第一人称控制器!!!
以下步骤,缺一不可
- 相机相关设置
camera.applyGravity = true; // 应用重力
camera.checkCollisions = true; // 开启碰撞检测
const camera = new FreeCamera("camera",new Vector3(0,1,0));
camera.minZ = 0.5
// 相机的移动速度
camera.speed = 0.2
// 相机角度敏感值
camera.angularSensibility = 4000
// 将场景的重力应用于相机
camera.applyGravity = true;
// 开启碰撞检测
camera.checkCollisions = true;
// 定义相机的碰撞椭球 默认Vector3(0.5,1,0.5)
camera.ellipsoid = new Vector3(0.5,1,0.5)
// 修改控制器,使用wasd 控制
camera.keysUp.push(87); //w
camera.keysLeft.push(65)//a
camera.keysDown.push(83)//s
camera.keysRight.push(68)//d
// 相机添加控制器 可以使用方向键控制相机
camera.attachControl()
2. 定义场景重力
scene.collisionsEnabled = true; // 开启碰撞检测
scene.gravity = new Vector3(0, gravity / framesPersecond, 0) // 定义Y轴上的重力
const framesPersecond = 60; // 设置帧率60
const gravity = -9.81; // 设置重力
// y轴设置重力,可以施加一个平滑运动的重力效果
scene.gravity = new Vector3(0, gravity / framesPersecond, 0);
scene.collisionsEnabled = true; // 开启碰撞检测
3. 网格开启碰撞检测
mesh.checkCollisions = true // 场景中所有网格都应该开启该属性
meshs.map((mesh) => {
mesh.checkCollisions = true; //开启碰撞检测
});