Unity: добавьте дополнительное время к слайдеру - PullRequest
0 голосов
/ 20 мая 2018

Итак, я играю в эту дверь, где вам нужно разгадать загадку, чтобы пройти через дверь.Я добавил в игру ползунок обратного отсчета, и теперь я хочу наградить игрока дополнительным временем, когда загадка будет решена.

Как я могу сказать, когда кто-то ответит правильно на моей загадке, будут добавлены 20 секунд на обратном отсчете.Спасибо за вашу помощь!

У меня есть два сценария.Первый для двери и загадки:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.Characters.FirstPerson;

public class cakeriddle : MonoBehaviour {

public GameObject door;
public GameObject NextButton;
public GameObject riddleUI;
public Transform Player;

private string answer;
private string answerTwo;
private string guess;

void Awake()
{
sliderChanger = GameObject.FindObjectOfType<Slidertid>();
}

[SerializeField]
private InputField input;

[SerializeField]
private Text text;

void OnTriggerEnter(Collider other)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
riddleUI.SetActive(true);
answer = "cupcake";
answerTwo = "worldcup";
text.text = "What kind of cup can’t hold water?";
Player.GetComponent<FirstPersonController>().enabled = false;
}


public void GetInput(string guess)
{
CompareGuesses(guess);
input.text = "";
}

public void Next()
{
Time.timeScale = 1f;
Player.GetComponent<FirstPersonController>().enabled = true;
Cursor.visible = false;
}



void CompareGuesses(string guess)
{
if (guess.ToLower() == answer.ToLower())
{
text.text = "You Guessed Correctly";
NextButton.gameObject.SetActive(true);
GetComponent<Animator>().SetTrigger("DoorATrigger");
input.gameObject.SetActive(false);
door.GetComponent<BoxCollider>().enabled = false;
}
else if (guess.ToLower() == answerTwo.ToLower())
{
text.text = "You Guessed Correctly";
NextButton.gameObject.SetActive(true);
GetComponent<Animator>().SetTrigger("DoorATrigger");
input.gameObject.SetActive(false);
door.GetComponent<BoxCollider>().enabled = false;
}
else
{
text.text = "Wrong! Try look around for clues";
}
}
}

Следующий для слайдера:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.Characters.FirstPerson;

public class SliderChanger : MonoBehaviour {

public Slider slider;
private float time = 50f;
public Transform Player;

public GameObject gameOverUI;

void Start()
{
slider.maxValue = 50f;
slider.minValue = 0f;
}

void Update()
{
time -= Time.deltaTime;
slider.value = time;


if (slider.value <= 0)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
gameOverUI.SetActive(true);
Player.GetComponent<FirstPersonController>().enabled = false;
}

1 Ответ

0 голосов
/ 20 мая 2018

Есть много способов сделать это.Подходя для предоставленного вами кода, вы можете использовать это простое решение.Измените ваше значение времени на public.

public float time = 50f;

И в вашем методе запуска установите максимальное значение ползунка на значение переменной.

slider.maxValue = time;

Затем, после правильного предположения, добавьте20 секунд до времени

sliderChanger.time += 20f;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...