У меня есть поезд, которые двигается по горизонтали. Имеется слайдер, который должен отвечать за скорость передвижения поезда. Как прописать данный код? Вот код который у меня уже есть:
public bool flag = false;
float speed = 0.2f;
public GameObject cub;
public Text text;
public Light l;
public void button(){
if (flag)
flag = false;
else
flag = true;
}
void Update() {
if (flag) {
transform.Translate (new Vector3 (speed, 0, 0));
}
}
void OnTriggerEnter(Collider col) {
Debug.Log ("Сработал триггер и остановился поезд");
if (col.gameObject.name == "Cube") {
flag = false; // остановится
}
}
Картинка для наглядности.
В данном случае не совсем понятно, слайдер будет сам отвечать за скорость (то есть его значение и есть speed) или слайдер будет влиять на скорость speed.
Предположим, что у нас изначально управление идет кнопками влево/вправо. Движение будет такое:
void Update () {
transform.Translate(new Vector3(Input.GetAxis("Horizontal") * speed * Time.deltaTime, 0, 0));
}
Чтобы воспользоваться значением слайдера нужно это значение оттуда взять. Это можно сделать тысячей способов и всё зависит от ситуации и сложности игры и пр.
Способ — сделать публичную переменную в скрипте
public Slider slider;
Она потребует импорта пространства имен using UnityEngine.UI;
И далее в эту переменную в инспекторе перенести сам слайдер из канваса
Способ — тоже сделать переменную в скрипте, но при этом найти слайдер при старте программы
void Start () {
slider = GameObject.Find("Canvas/Slider").gameObject.GetComponent<Slider>();
}
Как работать с Find можно посмотреть в документации.
Способ — еще куча вариантов...
В итоге в переменной slider будет ссылка на объект. Теперь просто смотрим на его параметры и банально применяем его переменную value.
void Update () {
// var x = new Vector3(Input.GetAxis("Horizontal") * slider.value * Time.deltaTime;
var x = new Vector3(Input.GetAxis("Horizontal") * speed * slider.value * Time.deltaTime;
transform.Translate(x, 0, 0));
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости