【发布时间】:2013-08-05 19:19:29
【问题描述】:
我有一个玩家以第一人称在 Unity 地形上四处走动,我想将相机控制限制在 y 轴(左/右)并自动旋转 x 轴的相机。 所以向上/向下看应该不需要玩家输入,这取决于你是上坡还是下坡。
我不太确定要寻找什么。您可能可以使用 Raycast 来做到这一点,但我想有更简单的方法吗?
【问题讨论】:
-
如果你有控制器,你也可以得到你击中的对撞机和它的正常值。但我不知道你的具体设置是什么。 docs.unity3d.com/Documentation/ScriptReference/…
-
是的,应该写我使用字符控制器进行移动。
-
使用
yourTerrain.terrainData.GetInterpolatedNormal(normalizedPlayerPosition)获取地形法线。禁用相机上的 MouseLook 脚本。在您的 FPC 上,在LateUpdate()中,将 FPC 方向同步到正常:transform.rotation = Quaternion.LookRotation(Vector3.Cross(transform.right, normal), normal)。修改 FPS 上的 MouseLook 脚本以围绕这个新的 y 轴旋转:transform.RotateAround(transform.up, Input.GetAxis("Mouse X"))。您也可以使用Quaternion.Slerp(transform.rotation, lookRotation, (Time.deltaTime*2f))平滑旋转 -
如果你把这个写成答案而不是评论,我会接受。
标签: camera unity3d terrain unityscript