【发布时间】:2020-02-09 00:51:40
【问题描述】:
大家好,我是统一的新手。我正在尝试制作一个带有可以移动的角色控制器的飞机,当你移动鼠标时,玩家会面向那个方向。 我在使用带有箭头键的lookat 方面取得了成功,但鼠标非常接近我可以看到但不知道如何修复的一个错误。
它是一个 3D 环境,摄像头在玩家身后的某个角度。 到目前为止,我有: 制造了一架“新飞机” 我对它进行光线投射 一切正常,但玩家可以俯身翻转,因为我的光线投射在地板上,从使用 Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
有没有一种方法可以使用光线投射,但让播放器保持直立,而线投射保持在设定点而不是落地?
float dist;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (plane.Raycast(ray, out dist))
{
Vector3 point = ray.GetPoint(dist);
transform.LookAt(point);
Debug.DrawLine(transform.position, point, Color.red);
}
我希望玩家不要向上和向下看并且玩家可以旋转以查看鼠标位置。
相机是固定角度的,所以它的 3d
【问题讨论】:
-
您的意思是您希望播放器根据鼠标角度旋转?例如,它不应该向上或向下看,而是向左和向右看?
-
@Saif 我希望玩家用 wasd 和鼠标移动到它可以射击的方向。玩家不能向上或向下看,所以它更多的是方向而不是 Y 角我猜我正在使用characterController = GetComponent
();运动作品跳跃作品旋转以在 3D 相机角度上面对鼠标对我来说失败 -
你知道函数Mathf.Clamp()吗?在这里你可以限制你的旋转角度,这样玩家就不会超过一个角度(正的和负的)。我现在不在电脑前,但看看 Mathf.Clamp() 函数。
-
@Saif 谢谢,我会看看。玩家可以旋转 360 度进行射击,因为它们会在屏幕中间上下我不需要
-
然后 Mathf.Clamp() 函数适用于您的逻辑。它包含您可以为 Y 轴角度设置的最小值和最大值。
标签: unity3d raycasting