public void Raycast(Vector3 worldPoint) { var hit = Physics2D.Raycast(worldPoint, Vector3.zero, 0, _layerMask); if (hit.collider != null) { var checker = hit.collider.GetComponent <Checker>(); if (checker == null) { Debug.Log("Checker is not null"); var move = _ghosts[hit.collider.gameObject]; var moveResult = _board.TryMove(_ghosts[hit.collider.gameObject], !move.isKill); if (move.isKill) { var moves = _grabbedChecker.GetValidMoves(false); _locked = moves.Count > 0; if (!_locked) { ClearAvailableMoves(); _board.EndMove(); } else { ShowAvailableMoves(moves); } } else { ClearAvailableMoves(); } Debug.Log(moveResult ? "Move was successful" : "Move was NOT successful"); } else if (!_locked) { _grabbedChecker = checker; Debug.Log("Getting valid moves"); var moves = checker.GetValidMoves(true); ShowAvailableMoves(moves); } } }