世界の X、Z 軸にボードがあります。下向きまたは上向きに回転し、ワールド Y 軸を使用して左から右に回転できるカメラがあります。
カメラの回転コードは次のとおりです。
float angle = (mouseX_Current - mouseX_ActionStart) * camRotationSpeedMod;
Camera.main.transform.Rotate(0.0f, angle, 0.0f, Space.World);
angle = (mouseY_Current - mouseY_ActionStart) * camRotationSpeedMod;
Camera.main.transform.Rotate(angle, 0.0f, 0.0f, Space.Self);
マウス ボタン ダウンとマウス位置入力 (ドラッグ アンド ドロップ) を使用して、カメラをワールド内で移動させます。マウス (ドラッグ & ドロップ) 操作の X 値と Y 値を含む 2D ベクトルを受け取ります。私が使用するメソッドのコードは次のとおりです。
private void CameraOnPlaneTranslation(Vector2 myVector)
{
float cameraYPos = Camera.main.transform.position.y;
Camera.main.transform.Translate(new Vector3(myVector[0], 0.0f, myVector[1]));
Camera.main.transform.position = new Vector3(Camera.main.transform.position.x, cameraYPos, Camera.main.transform.position.z);
}
問題 : カメラが Z 軸 (0.0f, Z, 0.0f) に直接向けられていない場合、計算した平行移動ベクトルが正しくありません。カメラがワールドの Y 軸上を移動しないように、ベクトルの Y 値を変更する必要があります。
ありがとう