【问题标题】:Unity3D: Moving GameObjects with mouse and check containsUnity3D:用鼠标移动游戏对象并检查包含
【发布时间】:2013-03-14 03:12:14
【问题描述】:

如何通过鼠标单击/触摸网格来移动对象(例如使用 GUITexture 的游戏对象填充颜色)并检查每个图块是否包含填充颜色?

如果使用 Camera.main.ScreenToWorldPoint 则无法检查包含。当前我要检查的代码可以正常工作,但游戏对象不能随鼠标移动:(

链接图片:http://i.imgur.com/cHoS0YV.png

我的代码如下:

void OnMouseDown()
    {
        Vector2 mousePos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y);
        transform.position = mousePos;
        Debug.Log("OnMouseDown: transform.position: " + transform.position);
    }
    void OnMouseDrag()
    {
        Vector2 mousePos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y);
 
        transform.position = mousePos;
        Debug.Log("transform.position: " + transform.position);
 
        foreach (var x in GameBoard.Instance.listTileInGrid)
        {
            if (x.RectTile.Contains(mousePos))
            {
                Debug.Log("change color");
                x.ColorId = 1;
            }
        }
    }

提前致谢!

更新:

我改变:

transform.position = mousePos;

transform.guiTexture.transform.position = Camera.main.ScreenToViewportPoint(Input.mousePosition);

【问题讨论】:

  • 统一标签是为 Microsoft Unity 保留的。请不要滥用它。
  • 感谢回复,我已经解决了这里的问题:transform.guiTexture.transform.position = Camera.main.ScreenToViewportPoint(Input.mousePosition); answers.unity3d.com/questions/416536/…
  • 请创建一个答案并将其标记为已回答,这样这个问题就不会一直悬而未决。
  • 如果你自己解决了,如果你能写下你的发现和解决方案作为答案,这样其他面临同样问题的人也能看到,那就太好了。

标签: unity3d touch mouse game-physics gameobject


【解决方案1】:

这很简单。您可以使用 Vector3.Lerp 函数来实现这一点。使用光线投射获取鼠标点击位置或触摸位置。然后在 lerp 函数中使用初始和最终位置。初始位置是游戏对象现在所在的位置,最终位置是点击/触摸位置。 您可以在这里找到 The Game Contriver 的文章

Move to Touch / Click Position - The Game Contriver

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多