【獲取旋轉(zhuǎn)角度】
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()方法獲取控制器旋轉(zhuǎn)角度
然后
if (Math.abs(movement_forward) > Math.abs(movement_right)) {//判斷前后左右 搖桿移動距離 判斷用哪個偏移
avatar.translateZ(Math.abs(movement_forward));
} else {
avatar.translateZ(Math.abs(movement_right));
}