【发布时间】:2019-01-08 13:50:22
【问题描述】:
我正在尝试围绕一个角色旋转我的相机,使其需要面对的特定方向。例如,我希望我的相机围绕我的角色旋转,并在它面向另一个对象的正轴时停止旋转。 所以我认为我需要 RotateAround() 和 LookRotation() 之间的组合。 RotateAround() 围绕角色旋转相机,LookRotation() 使相机也朝向该对象。
问题是:我不希望我的相机移动或旋转远离我的角色。
我尝试了几件事,最深思熟虑的是:
private void RotateCamera()
{
Quaternion currentCameraRotation = _camera.transform.rotation;
Quaternion futureCameraRotation = Quaternion.LookRotation(_hitObstacleStartingPoint.transform.forward);
float rotationAngle;
Vector3 rotationAxis;
Quaternion.FromToRotation(currentCameraRotation.eulerAngles, futureCameraRotation.eulerAngles).ToAngleAxis(out rotationAngle, out rotationAxis);
_camera.transform.RotateAround(_character.transform.position, _camera.transform.up, rotationAngle);
}
但这最终导致我的相机到处旋转..
提前致谢!
【问题讨论】:
-
我认为这需要澄清一下。您“不希望 [您的] 相机移动或旋转远离 [您的] 角色”,并且您还希望使相机也面向另一个对象。你的意思是你想要两个对象都在视图中,但角色应该总是直接居中?您还可以先说“我希望我的相机围绕我的角色旋转,并在它面向另一个对象的前轴时停止旋转。”这听起来有点不同。您能否绘制一张图表或制作一些屏幕截图来更好地确定您想要的具体内容?
-
@Foggzie 很抱歉给您带来不便,我添加了一张图片以更好地解释我的意思。
-
您可能需要按 Time.deltaTime 缩放旋转角度
-
@MichaelG 我试过了,它确实会旋转,但是一旦相机与前方物体对齐,它就不会停止旋转。
标签: c# unity3d camera rotation