/// <summary> /// 将方块撤回的移动信息存入operation中 /// </summary> void SaveMove(bool isChanged, string name, GameObject sourBoard, GameObject endBoard) { Operation operation = Operation.GetInstance(); MoveInf move = new MoveInf(); move.blockName = name; move.endBoard = endBoard; move.sourBoard = sourBoard; move.sourPos = transform.position; move.sourRoa = transform.eulerAngles; move.isChanged = isChanged; operation.AddMoveInf(move); }
void FixedUpdate() { if (isMouseLeftDown) { Ray ray = cam.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (pickupItem == null) { // 提取拼图 Physics.Raycast(ray, out hit, maxRayDistance, blockBoardMask | UILayerMask); if (hit.collider != null) { GameObject hitObject = hit.collider.gameObject.GetComponentInParent <blockController>().gameObject; pickupBlock(hitObject); pickupItem = hitObject; Operation.CreateNewInstance(); operation = Operation.GetInstance(); move = new MoveInf(); move.blockName = pickupItem.name; move.sourPos = pickupItem.transform.position; move.sourRoa = pickupItem.transform.eulerAngles; move.isChanged = false; Undo.instance.AddOperation(operation); // 如果在拼图面板,则需要恢复原来的点集 if (pickupItem.GetComponent <blockController>().isAtJigsawBoard) { AddPointToList(pickupItem, JigsawBoard); pickupItem.GetComponent <blockController>().isAtJigsawBoard = false; move.sourBoard = JigsawBoard; } else { move.sourBoard = pickupBoard; } } } else { // 放置拼图 Physics.Raycast(ray, out hit, maxRayDistance, jigsawBoardMask | pickupBoardMask | UILayerMask); if (hit.collider != null) { GameObject hitObject = hit.collider.gameObject; if (CanDrop(pickupItem, hitObject)) { dropBlock(pickupItem); pickupItem.transform.position = hitObject.transform.position + InWhichBoardArea(pickupItem.transform.position, hitObject.transform.position); if (hitObject.layer == LayerMask.NameToLayer("jigsawBoard")) { DeletePointFromList(pickupItem, hitObject); pickupItem.GetComponent <blockController>().isAtJigsawBoard = true; } mouse.isRelay = true; move.endBoard = hitObject; operation.AddMoveInf(move); pickupItem = null; } } //else //{ // dropBlock(pickupItem); // pickupItem.transform.position = pickupItem.GetComponent<blockController>().initBlockPos; // pickupItem = null; //} } isMouseLeftDown = false; } }