У меня есть рабочий Unity-скрипт с мультитач, который обнаружит касание, посмотрите, удалось ли нажатие на коллайдер (часть объекта gameObject), а затем проверьте, является ли он правильным коллайдером и уничтожает его. Вот рабочий код:Как добавить таймер?
using UnityEngine.UI;
using UnityEngine;
using System.Collections;
public class GameController : MonoBehaviour
{
void Update() // Updates every frame
{
if (Input.touchCount != 0) // Triggered by a touch
{
foreach (Touch touch in Input.touches) // Triggered as many times as there are touches.
{
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(touch.position), Vector2.zero);
if (hit && touch.phase == TouchPhase.Began && hit.collider.gameObject.tag ==("Fish")) // Triggered if touch hits something, when touch just begins, and if the object hit was tagged as a "Fish"
{
hit.collider.gameObject.GetComponent<FishScript>().TappedOut(); // Fish script activated
}
}
}
}
}
Это рабочий код. Теперь я хочу добавить там таймер, и я хочу, чтобы это время прикосновения. Я хочу сделать так, чтобы игрок мог нажать, и переместить палец над рыбой, и это будет считаться, пока движется пальцем по рыбе за 1 секунду. Вот сценарий, который я написал и нуждаюсь в помощи:
using UnityEngine.UI;
using UnityEngine;
using System.Collections;
public class GameController : MonoBehaviour
{
void Update() // Updates every frame
{
if (Input.touchCount != 0) // Triggered by a touch
{
foreach (Touch touch in Input.touches) // Triggered as many times as there are touches.
{
if (touch.phase == TouchPhase.Began)
{
float touchTimer = Time.time;
int i = touch.fingerId;
}
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(touch.position), Vector2.zero);
if (hit && hit.collider.gameObject.tag ==("Fish")) // Triggered if touch hits something, when touch just begins, and if the object hit was tagged as a "Fish"
{
hit.collider.gameObject.GetComponent<FishScript>().TappedOut(); // Fish script activated
}
}
}
}
}
Это все, что у меня есть до сих пор. Я попытался использовать оператор return, и это не работает в функции Void Update(). Я попытался сделать еще одну функцию с циклом while, который будет ждать, пока каждый кадр не закончится, прежде чем переходить через другой цикл. Это не сработало. Будет ли эта идея работать?
Я не уверен, как будет обрабатываться этот код. Прежде чем начать тестирование, я расскажу вам, как этот код может работать или не работать. Итак, сразу с места в карьер, мы определяем частные переменные. Эти переменные должны были быть продублированы для каждого касания. Эти коды также должны оставаться постоянными в каждом кадре void update(). Я думаю, что это может быть плохая идея, чтобы попытаться добавить фактор времени внутри функции void update(). То, что я могу попробовать, это void update(), которое запускает другую функцию при обнаружении касания. Другая функция будет IEnumerator, и остальная часть кода в ней. –