示例#1
0
        private IEnumerator Move(Direction direction)
        {
            var nextTile = getTile(direction);

            if (nextTile == null || nextTile.isOccupied)
            {
                yield break;
            }
            _sounds.PlayNote();
            _input.PreventFurtherInput();
            nextTile.isOccupied = true;
            _master.numberStepsTaken++;

            float angleRotated = 0;

            while (angleRotated < 90)
            {
                var angleDelta = Speed * Time.deltaTime;
                if (angleRotated + angleDelta > 90)
                {
                    angleDelta = 90 - angleRotated;                                 //Make sure we don't rotate over 90
                }
                playerRenderer.transform.RotateAround(_keys[direction].RotateAxis(), _keys[direction].Move, angleDelta);
                angleRotated += angleDelta;
                yield return(null);
            }

            center.transform.position = playerRenderer.transform.position;
            _currentTile.isOccupied   = false;
            _currentTile = nextTile;
            _input.SetReadyForInput();
        }