【问题标题】:Mouse input and z-axis鼠标输入和 z 轴
【发布时间】:2016-04-21 09:54:52
【问题描述】:
void OnMouseDrag() {
        float distance = transform.position.z - Camera.main.transform.position.z;
        Vector3 pos = Input.mousePosition;
        pos.z = distance;

        Vector3 mousePosition = new Vector3(pos.x, pos.y, pos.z);
        Vector3 objPosition = Camera.main.ScreenToWorldPoint(mousePosition);
        transform.position = objPosition;

    }

这是代码 sn-p 帮助我在鼠标拖动时移动对象。它在 x 轴上通过鼠标拖动移动对象,而 z 轴移动使用鼠标无法正常工作。我基本上想使用鼠标输入在 x 和 z-Axis 上移动对象。 出了什么问题?我可以从鼠标输入中获取 z 位置,以便在 z 轴上正确移动对象

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    当你将光线投射到你的对象时,它会被多次计算,所以当它没有真正移动时它会返回你的球位置,你可以尝试这样的事情

    void OnMouseDrag() {
    
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    
        Debug.DrawRay(ray.origin, ray.direction * 10, Color.yellow);
        Debug.Log(ray);
    
        RaycastHit hit;
    
        if (Physics.Raycast(ray, out hit, Camera.main.farClipPlane))
        {
    
            if (hit.transform.gameObject.name == "CameraElasticPoint")
            {
                return;
            }
            else{
                transform.position = new Vector3(hit.point.x,hit.transform.position.y+1, hit.point.z);
                hitPoint = Input.mousePosition;
            }
    
        }
    }
    

    它将忽略您的对象,仅适用于其他命中信息,例如您的地板或您尝试拖动对象的任何其他表面,它将在 X 和 Z 轴上拖动您的对象,并沿 Y地板的位置,因此它将始终保持在地板或任何其他表面碰撞器的顶部 让我知道它是否有效 美好的一天

    【讨论】:

    • 感谢安华一大早帮我。我从过去 2 天开始就被这个问题所困扰。
    【解决方案2】:

    我建议在这里阅读 Unity 教程:

    http://unity3d.com/learn/tutorials/projects/survival-shooter-project

    它可能会给你一些关于如何解决鼠标x/z平面移动问题的想法。

    【讨论】:

    • 这是教程的哪个阶段包含输入?
    • 时间不长,几个小时就完成了,你会学到很多。真的很有帮助!
    【解决方案3】:

    没有。 screenpointtoray 在这里是非常不必要的,你只需要说 pos.z 等于 pos.x....

    像这样……

    Vector3 pos = Camera.main.ScreenToViewportPoint(Input.mousePosition - dragOrigin);
            pos.z = pos.x;
            Vector3 move = new Vector3(0, pos.y * dragSpeed, pos.z * -dragSpeed);
    

    总是很开心x

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 2016-06-11
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多