У меня есть игровая механика, в которой игрок может переключать фары автомобиля с помощью клавиши L
и подсветки с помощью клавиши S
, которая также контролирует движение назад.
Это показано в коде ниже.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class headLights : MonoBehaviour {
private Light frontLight;
private Light backLight;
// Use this for initialization
void Start () {
frontLight = GetComponent<Light>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.L))
{
frontLight.enabled = !frontLight.enabled;
}
if (Input.GetKeyDown(KeyCode.S))
{
backLight = GetComponent<Light>();
backLight.enabled = !backLight.enabled;
}
}
}
Проблема в том, что когда я нажимаю L
или S
, включаются и передний, и задний свет, потому что, как я полагаю, GetComponent ссылается на все дополнительные компоненты Light в сцене и обобщает их как единое целое.
Я хочу, чтобы клавиша S
включала «задние фонари», пока она нажата, и клавиша L
только для переключения «передних фонарей».
МЕТОДЫ, КОТОРЫЕ Я ИСПОЛЬЗУЛ, ЧТОБЫ ПОПРОБОВАТЬ ИСПРАВЛЕНИЕ ПРОБЛЕМЫ
frontLight = GameObject.Find("Player").GetComponent<Light>();
Этот код просто дает мне ошибки типа "игрок gameobject не имеет каких-либо легких компонентов, прикрепленных к нему (хотя он явно делает) бла-бла-бла.
Я также пытался использовать теги, но они меня сильно смущают и кажутся легким выходом. Я знаю, что в будущем мне придется научиться делать объектно-ориентированный синтаксис и кодирование, поэтому я очень хотел бы научиться ссылаться на него!
Пожалуйста, помогите мне, если сможете, это сделает мой день ~~:)
Пожалуйста, обратите внимание, что вам не нужно решать всю проблему для меня, если у вас мало времени, просто предоставление общего синтаксиса, который я могу просто поменять, очень мне поможет!