Unity3D: Преместване на GameObjects с мишка и проверка съдържа

Как мога да преместя обект (цвят на запълване на обект от игра, използвайки например GUITexture) чрез щракване/докосване на мишката към мрежата и да проверя дали съдържа цвят на запълване за всяка плочка?

Ако използвате Camera.main.ScreenToWorldPoint, тогава не можете да проверите съдържа. Текущият ми код за проверка съдържа работи добре, но gameobject не се движи с мишката :(

Изображение за връзка: https://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;

to

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

person 691138    schedule 14.03.2013    source източник
comment
Етикетът за единство е запазен за Microsoft Unity. Моля, не злоупотребявайте с него.   -  person Lex Li    schedule 14.03.2013
comment
благодаря за отговора, реших проблема тук: transform.guiTexture.transform.position = Camera.main.ScreenToViewportPoint(Input.mousePosition); answers.unity3d.com/questions/416536/   -  person 691138    schedule 14.03.2013
comment
Моля, създайте отговор и го маркирайте като отговорен, така че този въпрос да не остане без отговор.   -  person Joetjah    schedule 14.03.2013
comment
Ако сте го решили сами, би било чудесно, ако можете да напишете вашите открития и решение като отговор, така че другите, които са изправени пред същия проблем, също да могат да го видят.   -  person Flexo    schedule 18.03.2013


Отговори (1)


Това е доста просто. Можете да използвате функцията Vector3.Lerp, за да постигнете това. Използвайте raycasting, за да получите позицията на щракване с мишката или позицията на докосване. След това използвайте началната и крайната позиция във функцията lerp. Първоначалната позиция е позицията, в която се намира игровият обект в момента, а крайната позиция е позицията на щракване/докосване. Можете да намерите статията от The Game Contriver за същото тук

Преместване до позиция на докосване/щракване - Играта Contriver

person gameOne    schedule 22.10.2014