У меня есть игра, которая генерирует бесконечные блоки уровней, и всегда есть 3 блока, например, проблема в том, что у этих блоков уровня есть враги, которые двигаются, и иногда игрок слишком медленный или слишком быстрый, и враги находятся в положении, котороеих не должно быть (например, попасть в игрока и убить его мгновенно).
Решение, которое я думал, состоит в том, чтобы заморозить каждый добавленный блок (последний в списке текущих инстансированных блоков), и когда игрокпереходит к следующему блоку, размораживает его, поэтому враги начинают двигаться, как только игрок входит в блок, а не когда он генерируется.
Вот функции, которые замораживают и размораживают:
public void UnfreezeCurrentLevelBlockEnemies()
{
if(currentBlocks.Count == 3)
{
foreach (Rigidbody2D enemy in currentBlocks[1].transform)
{
enemy.constraints = RigidbodyConstraints2D.None;
Debug.Log("I'm in index 1 levelblock freezing" );
}
} else
{
Debug.LogWarning("Generating initial blocks, blocks will not be
frozen yet...");
}
}
public void FreezeLastLevelBlockEnemies()
{
if (currentBlocks.Count == 3)
{
foreach (Rigidbody2D enemy in currentBlocks[2].transform)
{
enemy.constraints = RigidbodyConstraints2D.FreezeAll;
Debug.Log("I'm in index 2 levelblock freezing" );
}
} else
{
Debug.LogWarning("Generating initial blocks, blocks will not be
frozen yet...");
}
}
Как я могу заморозить всех врагов и разморозить их должным образом?
Я хочу заморозить врагов (птиц и мышей), и это структура блока уровня:

Видео игры, чтобы вы лучше понимали проблему: https://www.youtube.com/watch?v=lXzOoEbo0Aw&feature=youtu.be