Я пытаюсь расширить этот Roll-a-Ball tutorial, включив таймер и разрешив пользователю повторить попытку, нажав на сенсорную панель, выиграют ли они или не хватит времени.Ввод не распознан с сенсорной панели
Это работает, как ожидается, если время истекает (// case A
), но нет, если игрок выигрывает (// case B
ниже), где кран не распознается. Конечное сообщение появляется в обоих случаях, поэтому он определенно достигает этих частей, но я предполагаю, что программа не доходит до раздела с комментарием // reset on tap
, но я не уверен.
Любые идеи оценили.
PlayerController
Мой сценарий:
void Start()
{
timeLeft = 5;
rb = GetComponent<Rigidbody>();
count = 0;
winText.text = "";
SetCountText();
}
void Update()
{
if (!gameOver) {
timeLeft -= Time.deltaTime;
}
timerText.text = timeLeft.ToString ("0.00");
if(timeLeft < 0) {
winner = false;
GameOver(winner);
}
}
void GameOver(bool winner)
{
gameOver = true;
timerText.text = "-- --";
string tryAgainString = "Tap the touch pad to try again.";
if (!winner) { // case A
winText.text = "Time's up.\n" + tryAgainString;
}
if (winner) { // case B
winText.text = "Well played!\n" + tryAgainString;
}
// reset on tap
if (Input.GetMouseButtonDown (0)) {
Application.LoadLevel(0);
}
}
void FixedUpdate()
{
float moveHorizontal = Input.GetAxis ("Mouse X");
float moveVertical = Input.GetAxis ("Mouse Y");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.AddForce (movement * speed);
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag ("Pick Up")){
other.gameObject.SetActive (false);
count = count + 1;
SetCountText();
if (!gameOver) {
timeLeft += 3;
}
}
}
void SetCountText()
{
if (!gameOver) {
countText.text = "Count: " + count.ToString();
}
if (count >= 12) {
winner = true;
GameOver(winner);
}
}
Это, безусловно, достигает 12, как сообщение 'Ну Played..' отображается правильно. – Robert
Я вижу проблему. Вы всегда должны проверять вход игрока в «Обновление». Вы проверяете щелчок мыши в OnTirggerEnter> SetCountText-> GameOver(). Таким образом, вы в основном слушаете ввод в вызове FixedUpdate. Через минуту я отредактирую ответ с помощью решения. – Puneet
Отлично, спасибо. – Robert