【问题标题】:Unity2d Player rotate in accordance with mouse positionunity2d Player 根据鼠标位置旋转
【发布时间】:2018-04-04 20:59:38
【问题描述】:

我试过Atan2,我试过欧拉角,我试过Unity3d的所有网站,我得到三个结果:

我可以慢慢移动我的鼠标,我可以以光速移动它,玩家的旋转是固定的,可以向上或向下看。

播放器旋转,但不看鼠标。就好像它在做自己的事情。

它在除 z 轴之外的任何东西上旋转。

我完全没有想法,完全没有。我已经尝试了所有方法,包括下载了几个slither.io 仿冒项目来弄清楚它们是如何完成任务的,但是它们都不起作用。

如果您无法理解我需要实现的目标,那么,我目前没有代码。但是有一个网站与我正在尝试完成的事情相同。

Play surviv.io 看看玩家如何随着鼠标旋转。这就是我想要完成的。

【问题讨论】:

    标签: unity3d rotation 2d


    【解决方案1】:

    我没有测试这个,但是....

    如果您有一个可以进行光线投射的背景屏幕,那么下面的代码应该可以工作,以便光线与它发生碰撞。然后在 Transform.LookAt() 中调整一下坐标。

    基本上它会执行这些步骤。

    1 - 从屏幕发射一条射线到鼠标位置,保存对“命中”变量中任何命中的引用。

    2 - 如果有任何东西被击中,旋转玩家变换以查看它击中的位置。

    public LayerMask RaycastCollidableLayers;
    public RaycastHit Hit;
    public float CheckDistance = 200f;
    public Transform Player;
    
    void PerformRaycast(){
    //Set up ray
    ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    //Fire ray
    Physics.Raycast(ray, out Hit, CheckDistance + 0.1f, RaycastCollidableLayers);
    if (Hit.collider == null)
    {
        //Debug.Log("Raycast hit nothing");
        return;
    }
    else //Ray hit something
        {
        //Look at Hit.point on x and y axes.
        Player.LookAt(new Vector3(Hit.point.x, Hit.point.y, 0f), Vector3.up); //Ignoring z axis, may need to be another axis. Vector3.up sets the up direction.
        }
    }
    

    来源:

    让我知道它是如何为你工作的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多