J'ai un script Unity fonctionnel avec multi-touch qui va détecter le toucher, voir si le toucher a frappé un collisionneur (partie d'un gameObject), puis vérifier pour voir si c'est le bon collisionneur, et le détruire. Voici le code de travail:Comment ajouter une minuterie?
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
}
}
}
}
}
Ceci est le code de travail. Maintenant, je veux ajouter une minuterie là-bas, et je veux que le temps de la touche. Je veux faire en sorte que le joueur puisse taper, et déplacer son doigt sur le poisson et cela comptera, tant que le joueur a déplacé son doigt sur le poisson en 1 seconde. Voici le script que j'ai écrit et j'ai besoin d'aide pour:
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
}
}
}
}
}
C'est tout ce que j'ai jusqu'ici. J'ai essayé d'utiliser une instruction return, et cela n'a pas fonctionné dans la fonction Void Update(). J'ai essayé de faire une autre fonction avec une boucle while qui attendrait que chaque image soit terminée avant de passer par une autre boucle. Cela n'a pas fonctionné. Cette idée va-t-elle marcher?
Je ne sais pas comment ce code sera géré. Avant de commencer les tests, je vais vous dire comment ce code peut ou non fonctionner. Donc, dès le départ, nous définissons des variables privées. Ces variables devraient pouvoir être dupliquées pour chaque touche. Ces codes doivent également rester cohérents sur chaque trame vide update(). Je pense que c'est peut-être une mauvaise idée d'essayer d'ajouter un facteur temps à l'intérieur d'une fonction void update(). Ce que je peux finir par essayer est une mise à jour vide() qui déclenche une autre fonction lorsque le toucher est détecté. L'autre fonction sera IEnumerator et aura le reste du code. –