Как реализовать покраску стен в 2d игре на unity
Всем добрый день! В Google play есть игра "house paint".В ней, как я понял, нужно закрашивать стены, и когда все стены закрашены игрок переходит на новый уровень. Вот в моей игре должна быть похожая механика, но у меня нет идей как можно её реализовать. Если вы знаете как можно это решить, то пожалуйста напишите или дайте ссылку на форум с решением. Заранее спасибо.
Ответы (1 шт):
Автор решения: Kireface Frost
→ Ссылка
вот это покраска одного блока стены
`public class PaintingOver : MonoBehaviour
{
private PaintingManager _wallsSorting;
private Color _defaultColor;
public bool isPainted = false;
private void Start()
{
_defaultColor = GetComponent<SpriteRenderer>().color;
_wallsSorting = GameObject.Find("Walls").GetComponent<PaintingManager>();
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Sponge")
{
Color SpongeColor = collision.gameObject.GetComponent<SpriteRenderer>().color;
gameObject.GetComponent<SpriteRenderer>().color = SpongeColor;
isPainted = true;
_wallsSorting.PaintedWallsSorting(isPainted);
}
}
}`
а это счётчик покрашенных стен, но он работает не корректно в плане того, что если кисть соприкасается со стеной, то стена будет добавлятся в список бесконечно
`
public class PaintingManager : MonoBehaviour
{
public PaintingOver[] walls;
public List<PaintingOver> _paintedWalls;
public void PaintedWallsSorting(bool isPainted)
{
foreach (var wall in walls)
{
if (!wall.isPainted)
{
continue;
}
_paintedWalls.Add(wall);
}
Debug.Log(_paintedWalls.Count);
}
}`