Здравствуйте. Снова мучаю свой тетрис и никак не могу понять в чём ошибка. На этот раз моя проблема в сообщении скриптов. Скрипт привязанный к кубу фигуры (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 // .. остальные действия
Смотрите также:
Комментарии
Возможно порядок вызова отрабатывает не правильно. Я бы сделал немного иначе. Внутри фигуры запрашивал бы данные от кубов.
var cubeComponents = GetChildrenComponents<CubComponent>(); // получаем список дочерних компонентов типа CubeComponent var isRightCollision = cubeComponents.Any(cube => cube.isRight); // проверяем у каждого флаг isRight и если хотя бы у одного стоит, то возврашаем true // .. остальные действия
alexprey:
Читал про обращение к компонентам, но не смог до конца разобраться. Вас не затруднит закомментировать строчки?
Возможность добавлять комментарии была ограничена
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]