Как мне воспроизвести логику оценки и условие, когда объект меняет цвет при просмотре нескольких объектов?

Так что я играл с картонной демосценой, которая идет вместе с картонной SDK. Обычная функциональность - это плавающий куб красного цвета, который меняется на зеленый при взгляде и восстанавливается в новом месте при нажатии на картонный магнит. Этот скрипт прикреплен к предмету коллекционирования. Я изменил объект и добавил логику оценки. Я только что включил немного картона для этого вопроса.

Теперь это прекрасно работает для одного объекта. Но, скажем, я хочу, чтобы на местности было несколько экземпляров коллекционирования, и я хочу, чтобы одна и та же логика изменения цвета работала для них, помимо увеличения количества очков при их сборе. Как мне это сделать? Я попытался присвоить всем предметам коллекционирования одно имя и явно найти игровой объект с таким именем. Но логика не распространяется на другие предметы коллекционирования. Пожалуйста помоги.

void start()
{
            head = Camera.main.GetComponent<StereoController> ().Head;
            startingPosition = transform.localPosition;
            CardboardGUI.IsGUIVisible = true;
            CardboardGUI.onGUICallback += this.OnGUI;
}

// Это логика для изменения цвета объекта, и после этого я добавил логику увеличения счета и уменьшения таймера

void Update() {


RaycastHit hit;
        bool isLookedAt = GetComponent<Collider>().Raycast(head.Gaze, out hit, Mathf.Infinity);
        GetComponent<Renderer>().material.color = isLookedAt ? Color.green : Color.white;
        if (Cardboard.SDK.CardboardTriggered && isLookedAt) {
            // Teleport randomly.
            Vector3 direction = Random.onUnitSphere;
            direction.y = Mathf.Clamp(direction.y, 0.5f, 1f);
            float distance = 2 * Random.value + 1.5f;
            transform.localPosition = direction * distance;

//Score logic
}
//For placing the coconut back to original position on selecting reset.

void OnGUI() {
        if (!CardboardGUI.OKToDraw(this)) {
            return;
        }
        if (GUI.Button(new Rect(50, 50, 200, 50), "Reset")) {
            transform.localPosition = startingPosition;
            //reset count and seconds
            count=0;
            Seconds=60;
        }
        if (GUI.Button(new Rect(50, 110, 200, 50), "Recenter")) {
            Cardboard.SDK.Recenter();
        }
}

0 ответов

Другие вопросы по тегам