- Home /
Question by
I_C_YMakesGames · Feb 23, 2021 at 07:32 PM ·
2d gamematch
Using a tile prefab for a match 3 game can't figure out why adding Adjacent methods are blocking me from swapping
public class Tile : MonoBehaviour { private static Color selectedColor = new Color(.5f, .5f, .5f, 1.0f); private static Tile previousSelected = null;
private SpriteRenderer render;
private bool isSelected = false;
private Vector2[] adjacentDirections = new Vector2[] { Vector2.up, Vector2.down, Vector2.left, Vector2.right };
//private bool matchFound = false;
void Awake()
{
render = GetComponent<SpriteRenderer>();
}
private void Select()
{
isSelected = true;
render.color = selectedColor;
previousSelected = gameObject.GetComponent<Tile>();
}
private void Deselect()
{
isSelected = false;
render.color = Color.white;
previousSelected = null;
}
void OnMouseDown()
{
if (render.sprite == null || BoardManager.instance.IsShifting)
{
return;
}
if (isSelected)
{
Deselect();
}
else
{
if (previousSelected == null)
{
Select();
}
else
{
if (GetAllAdjacentTiles().Contains(previousSelected.gameObject))
{
SwapSprite(previousSelected.render);
previousSelected.Deselect();
}
else
{
previousSelected.GetComponent<Tile>().Deselect();
Select();
}
}
}
}
public void SwapSprite(SpriteRenderer render2)
{
if (render.sprite == render2.sprite)
{
return;
}
Sprite tempSprite = render2.sprite;
render2.sprite = render.sprite;
render.sprite = tempSprite;
}
private GameObject GetAdjacent(Vector2 castDir)
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, castDir);
if (hit.collider != null)
{
return hit.collider.gameObject;
}
return null;
}
private List<GameObject> GetAllAdjacentTiles()
{
List<GameObject> adjacentTiles = new List<GameObject>();
for (int i = 0; i < adjacentDirections.Length; i++)
{
adjacentTiles.Add(GetAdjacent(adjacentDirections[i]));
}
return adjacentTiles;
}
}
Comment
Best Answer
Answer by I_C_YMakesGames · Feb 23, 2021 at 09:31 PM
If any one else has the issue the raycast was hitting its own collider
screenshot-11.png
(44.8 kB)
Your answer
![](https://koobas.hobune.stream/wayback/20220613025702im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How can I change URP Bloom via code? 0 Answers
2D Lighting is not working in unity 2021.3.2f1 0 Answers
How to make a memory style matching game? 0 Answers