private Tweener DoBlockTween(Block block, RotateTweenParam param) { Debug.Log(string.Format("{0}: x = {1}, xEase = {2}, y = {3}, yEase = {4}", block, param.x, param.xEase, param.y, param.yEase)); Tweener tweener = null; if (param.x != 0) { tweener = block.transform.DOLocalMoveX(Block.BLOCK_SIZE * param.x, tweenDuration) .SetRelative(true).SetEase(param.xEase); } if (param.y != 0) { tweener = block.transform.DOLocalMoveY(Block.BLOCK_SIZE * param.y, tweenDuration) .SetRelative(true).SetEase(param.yEase); } return(tweener); }
private void CheckRotate() { if (!InputManager.Instance.RotateClick || m_Tweener != null || InputManager.Instance.DownPress) { return; } RotateTweenParam slaveParam = null; RotateTweenParam masterParam = null; // 贴左边界,从下往左旋转的情况 switch (RotateType) { case ERotateType.Up: if (CanHorizontalMove(false)) { slaveParam = new RotateTweenParam() { x = 1, y = -1, xEase = OUT_EASE_TYPE, yEase = IN_EASE_TYPE }; } else if (CanHorizontalMove(true)) { slaveParam = new RotateTweenParam() { x = 0, y = -1, yEase = OUT_EASE_TYPE }; masterParam = new RotateTweenParam() { x = -1, y = 0, xEase = OUT_EASE_TYPE }; } break; case ERotateType.Right: Vector2 blockPos = GetMapPosition(MasterBlock); Vector2 testPos1 = new Vector2(blockPos.x, blockPos.y - Block.BLOCK_SIZE); Vector2 testPos2 = new Vector2(blockPos.x + Block.BLOCK_SIZE, blockPos.y - Block.BLOCK_SIZE); if (TestPositionValid(testPos1) && TestPositionValid(testPos2)) { slaveParam = new RotateTweenParam() { x = -1, y = -1, xEase = IN_EASE_TYPE, yEase = OUT_EASE_TYPE }; } else { slaveParam = new RotateTweenParam() { x = -1, y = 0, xEase = OUT_EASE_TYPE }; masterParam = new RotateTweenParam() { x = 0, y = 1, yEase = OUT_EASE_TYPE }; } break; case ERotateType.Down: if (CanHorizontalMove(true)) { slaveParam = new RotateTweenParam() { x = -1, y = 1, xEase = OUT_EASE_TYPE, yEase = IN_EASE_TYPE }; } else if (CanHorizontalMove(false)) { slaveParam = new RotateTweenParam() { x = 0, y = 1, yEase = OUT_EASE_TYPE }; masterParam = new RotateTweenParam() { x = 1, y = 0, xEase = OUT_EASE_TYPE }; } break; case ERotateType.Left: slaveParam = new RotateTweenParam() { x = 1, y = 1, xEase = IN_EASE_TYPE, yEase = OUT_EASE_TYPE }; break; } if (slaveParam != null) { m_Tweener = DoBlockTween(SlaveBlock, slaveParam); } if (masterParam != null) { m_Tweener = DoBlockTween(MasterBlock, masterParam); } if (m_Tweener != null) { m_Tweener.OnComplete(OnRotateTweenCompleted); } if (slaveParam != null || masterParam != null) { RotateType = (ERotateType)(((int)RotateType + 1) % 4); } }