controls控制器角度 自定义角度第三人称

【获取旋转角度】
controls.addEventListener('change', changeControls)
function changeControls(event) {
console.log(camera.position)
let nem = controls.getAzimuthalAngle()
}
【自定义角度1】avatar是人物模型 turn 左右摇杆滑动距离 forward 前后摇杆滑动距离
// 圆盘上触点与x轴正方向之间的夹角
let angle = Math.atan2(turn, forward);
// //相机->人物之间的向量
let targetVecCameraPlayer = new Vector3().subVectors(avatar.position, doc.camera.position).normalize();
let angle2 = Math.atan2(-targetVecCameraPlayer.z, targetVecCameraPlayer.x)
//方向向量为targetVecNorm
let targetVecNorm = new Vector3(Math.cos(angle2 - angle), 0, -Math.sin(angle2 - angle)).normalize();
// avatar.rotation.y = Math.PI+rotateCountX;
let ball = new Vector3(100 * Math.cos(angle2 - angle), 0, -100 * Math.sin(angle2 - angle))
avatar.lookAt(ball.x, 0, ball.z)
【自定义角度2】controls是轨道控制器 需要引入js

利用controls.getAzimuthalAngle()方法获取控制器旋转角度
然后
if (Math.abs(movement_forward) > Math.abs(movement_right)) {//判断前后左右 摇杆移动距离 判断用哪个偏移
avatar.translateZ(Math.abs(movement_forward));
} else {
avatar.translateZ(Math.abs(movement_right));
}

你可能感兴趣的:(controls控制器角度 自定义角度第三人称)