【问题标题】:Unity Player movement wasd and player rotates to face mouseUnity Player 移动失败并且玩家旋转面对鼠标
【发布时间】: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


【解决方案1】:

clamp 函数很好地阻止了播放器翻转。

但我最终使用了检测来获取武器高度,然后在跳跃时调整以使其保持直线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多