예제 #1
0
    void Update()
    {
        //Если ячеек нужное количество, то присваиваем предмету место
        if (Places.Count == PlacesCountNeeded)
        {
            Place = Places[My.Closest(gameObject, Places)];
        }

        //Двигаем предмет по курсору
        if (GameMain.ItemInHand == gameObject.transform)
        {
            if (GameMain.Mouse)
            {
                ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            }
            else
            {
                ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
            }
            if (Physics.Raycast(ray, out hit, 10, LayerMask.GetMask("Table")))
            {
                transform.position = new Vector3(hit.point.x, 0.67f, hit.point.z);
            }
        }
        else //Если предмет не схвачен, то его либо в ячейку двигать, либо на место
        {
            if (Place)
            {
                transform.SetParent(Place.transform, true);
                transform.position = Vector3.Lerp(transform.position, Place.transform.position, 5 * Time.deltaTime);

                if (Vector3.Distance(transform.position, Place.transform.position) > 0.01f)
                {
                    moving = true;
                }
                else
                {
                    moving = false;
                }
            }
            else
            {
                transform.SetParent(null);
                transform.position = Vector3.Lerp(transform.position, Pos, 3 * Time.deltaTime);

                if (Vector3.Distance(transform.position, Pos) > 0.01f)
                {
                    moving = true;
                }
                else
                {
                    moving = false;
                }
            }
        }
    }