/// <summary> /// 方块旋转,踢墙和踢地板 /// </summary> public void Rotation() { if (dropStat != DropStat.Dropping) { return; } Vector2Int[] newpos = new Vector2Int[4]; // 计算原地旋转后的坐标 for (int i = 0; i < blocks.Length; i++) { newpos[i] = Vector2Util.RotateClockWise(blocks[i].Coord, pivot.localPosition); } //踢墙检测 for (int j = 0; j < TickOffsetPoint.Length; j++) { Vector2Int[] kickpos = new Vector2Int[4]; for (int i = 0; i < blocks.Length; i++) { kickpos[i] = newpos[i] + Vector2Int.up; } if (CanAction(newpos)) // 能转 { nextDroptime = 0f; for (int i = 0; i < blocks.Length; i++) { blocks[i].Coord = newpos[i]; } return; } } }