Здравствуйте. Снова мучаю свой тетрис и никак не могу понять в чём ошибка. На этот раз моя проблема в сообщении скриптов. Скрипт привязанный к кубу фигуры (CubeController) должен изменять переменную скрипта привязанного к самой фигуре (FigureController), предупреждать его о препятствиях.
Я испробовал много способов но самый действенный этот:
public class CubeController : MonoBehaviour
{
void FixedUpdate()
{
transform.parent.GetComponent<FigureController>().rightWall = true; //Предупредим родителя о препятствии справа
}
}
Но проблема в том, что, не смотря на то, что все кубы одинаковы (префаб) и на них одинаковые скрипты, работает из них только один. Вся фигура уходит за край, пока работающий куб в него не упрётся. Если удалить работающий кубик, то начнёт работать один из оставшихся. И мне кажется что это странно - почему бы им не работать всем одновременно?
Помогите мне закончить этот проект, пожалуйста.
:)
:)
Принятый ответ
Возможно порядок вызова отрабатывает не правильно. Я бы сделал немного иначе. Внутри фигуры запрашивал бы данные от кубов.
var cubeComponents = GetChildrenComponents<CubComponent>(); // получаем список дочерних компонентов типа CubeComponent
var isRightCollision = cubeComponents.Any(cube => cube.isRight); // проверяем у каждого флаг isRight и если хотя бы у одного стоит, то возврашаем true
// .. остальные действия
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован alexprey
Читал про обращение к компонентам, но не смог до конца разобраться. Вас не затруднит закомментировать строчки?