0

オブジェクト (たとえば、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);
4

1 に答える 1

0

これはとても簡単です。これを実現するには、Vector3.Lerp 関数を使用できます。レイキャスティングを使用して、マウスのクリック位置またはタッチ位置を取得します。次に、lerp 関数で初期位置と最終位置を使用します。初期位置はゲームオブジェクトの現在の位置であり、最終位置はクリック/タッチ位置です。The Game Contriver の記事はこちら

タッチ/クリック位置に移動 - The Game Contriver

于 2014-10-22T05:54:07.943 に答える