コード例 #1
0
        void Update()
        {
            if (!isMoving)
            {
                return;
            }

            if (currentTime < 0)
            {
                SetPosition(currentPosition);

                currentPathIndex++;

                if (currentPathIndex >= path.Length)
                {
                    isMoving = false;

                    // сменим позицию куба в сетке
                    _grid.MoveCube(oldPosition, newPosition);
                }
                else
                {
                    currentPosition = path[currentPathIndex];
                    currentTime     = movingTime;
                }

                return;
            }

            SetPosition(Vector3.Lerp(transform.position, currentPosition, Time.deltaTime / currentTime));
            currentTime -= Time.deltaTime;
        }
コード例 #2
0
    private void ProcessTargetClick()
    {
        switch (PreviousEditorMode)
        {
        case EditorModes.Move: {
            if (!_selectedObject)
            {
                break;
            }
            _grid.MoveCube(_selectedObject.transform.position, _markerPosition);
            break;
        }

        case EditorModes.Connect: {
            BoxClasses.BaseBox component = _selectedObject.GetComponentInChildren <BoxClasses.BaseBox>();
            if (component.CanBeConnected())
            {
                GameObject targetObject = _grid.GetCubeAt(_markerPosition);
                component.ConnectTo(targetObject);
            }
            break;
        }
        }

        EditorMode = PreviousEditorMode;
    }