Unity3D:用鼠标移动GameObjects并检查包含

时间:2013-03-14 03:12:14

标签: unity3d touch mouse game-physics gameobject

如何通过鼠标单击/触摸到网格来移动对象(例如使用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);

1 个答案:

答案 0 :(得分:0)

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

Move to Touch / Click Position - The Game Contriver