书接上回,实现第一人称控制器!!!
以下步骤,缺一不可
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; //开启碰撞检测
- });