public override void OnRelease() { if (cam == null) { cam = Camera.main; } RaycastHit2D hit = Physics2D.Raycast(cam.ScreenToWorldPoint(Input.mousePosition), Vector3.zero); if (hit) { PuzzleSlot newSlot = hit.collider.GetComponent <PuzzleSlot>(); if (newSlot != null) { newSlot.Put(this); } } else if (curSlot != null) { curSlot.Put(this); } isSelected = false; Ren.sortingOrder -= 1; OnPieceDeselect(); }
private void PuzzlePiece_OnPieceDeselect() { PuzzleSlot.DisableColliders(); PuzzlePiece.EnableColliders(); if (PuzzleSlot.IsAllMatch()) { print("hallelujah"); } }
public void PreparePuzzle() { foreach (PuzzleAssemblyPiece piece in Pieces) { piece.GrabMesh(); PuzzleSlot newSlot = Instantiate(SlotPrefab, piece.transform.position, piece.transform.rotation, this.transform); piece.matchingSlot = newSlot; Slots.Add(newSlot); newSlot.StartTrackingPiece(piece); } }
public void StartMagnetizing(PuzzleSlot goToMe) { isMagnetizing = true; magnetizingTarget = goToMe; GetComponent <Collider>().enabled = false; rigidbody.useGravity = false; rigidbody.velocity = Vector3.zero; rigidbody.angularVelocity = Vector3.zero; magSpeed = Vector3.Distance(transform.position, goToMe.transform.position) / 0.5f; rotationSpeed = Quaternion.Angle(transform.rotation, goToMe.transform.rotation) / 0.5f; }
void Update() { if (Input.GetMouseButtonDown(0)) { if (!EventSystem.current.IsPointerOverGameObject()) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { PuzzleSlot puzzleSlot = hit.transform.gameObject.GetComponent <PuzzleSlot>(); Puzzle puzzle = hit.transform.gameObject.GetComponent <Puzzle>(); PuzzlePieceCycler cycler = hit.transform.gameObject.GetComponent <PuzzlePieceCycler>(); Container container = hit.transform.gameObject.GetComponent <Container>(); PuzzlePiece piece = hit.transform.gameObject.GetComponent <PuzzlePiece>(); if (puzzleSlot != null) { puzzleSlot.UsePuzzleSlot(inventory); } else if (puzzle != null) { puzzle.PutPuzzlePiece(inventory); } else if (cycler != null) { cycler.CyclePieces(); } else if (container != null) { inventory.AddToInventory(container.TakePiece()); } else if (piece != null) { //inventory.ChangeSelected(piece); } } else {//Clicked on "nothing" } } else {//Clicked a UI element } } }
private void Start() { PuzzleParent pP = jigsawSlotPrefab.GetComponent <PuzzleParent>(); float startX = transform.position.x - pP.Width * (cols - 1) / 2.0f; float startY = transform.position.y - pP.Height * (rows - 1) / 2.0f; float gapX = pP.Width; float gapY = pP.Height; List <Sprite> tempSpriteList = new List <Sprite>(); foreach (var item in spriteList) { tempSpriteList.Add(item); } for (int y = 0; y < rows; y++) { for (int x = 0; x < cols; x++) { GameObject tempSlot = Instantiate(jigsawSlotPrefab, transform); tempSlot.transform.position = new Vector3(startX + x * gapX, startY + (rows - 1 - y) * gapY); PuzzleSlot pS = tempSlot.GetComponent <PuzzleSlot>(); pS.name = spriteList[y * cols + x].name; GameObject tempPiece = Instantiate(tempJigsawPiecePrefab, tempPiecesStorage); tempPiece.transform.position = new Vector3(startX + x * gapX, startY + (rows - 1 - y) * gapY); PuzzlePiece pPc = tempPiece.GetComponent <PuzzlePiece>(); pPc.Sprite = tempSpriteList.GetRandomAndRemove(); pS.Put(pPc); if ((y * cols + x) % 3 == 0) { pieces1.Add(pPc); pPc.Hide(); } } } int length = pieces1.Count / 2; for (int i = 0; i < length; i++) { pieces2.Add(pieces1.GetRandomAndRemove()); } }
private void PuzzlePiece_OnPieceSelect() { PuzzleSlot.EnableColliders(); PuzzlePiece.DisableColliders(); }