2017-07-29 3 views
0

Je développe en Unity, C#, et j'ai un peu de code qui vérifie l'activité des joueurs en fonction de la position de la souris et qui fonctionne bien mais je dois aussi vérifier l'activité du lecteur sur un écran tactile (pas un écran tactile de téléphone portable, mais un écran tactile attaché à un pc). Comment dois-je modifier le code que j'ai ci-dessous pour travailler également avec le toucher?Conversion de la fonctionnalité de position de la souris pour travailler avec l'écran tactile

private void Start() 
    { 
     InvokeRepeating("LastMousePosition", 0, _checkMousePositionTimingInterval); 
    } 

    private void Update() 
    { 
     _currentMousePosition = Input.mousePosition; 
    } 

    void LastMousePosition() 
    { 
     _prevMousePosition = Input.mousePosition; 
    } 

    void CheckPlayerIdle() 
    { 
     if (_currentMousePosition != _prevMousePosition) 
      UserActive = true; 
     else if (_currentMousePosition == _prevMousePosition) 
      UserActive = false; 
    } 
+0

Ne fonctionne pas pour l'écran tactile connecté? Qu'est-ce qui ne fonctionne pas exactement? – Programmer

+0

Eh bien, j'ai un minuteur d'inactivité qui instancie après un certain nombre d'inactivité qui décompte et réinitialise le jeu. Cela fonctionne avec une souris, mais pas avec le toucher. J'ai juste supposé qu'il n'enregistrait pas la position parce qu'il cherchait l'activité de la souris et ne touchait pas l'activité – greyBow

+0

Que diriez-vous de 'Input.touches [0] .position'? – Programmer

Répondre

0

Bien pour le toucher, vous démarrez votre minuteur d'inactivité si vous n'avez pas d'entrées tactiles et attendez x durée. par exemple:

private void Update() 
{ 
    if(Input.touchCount == 0) 
    { 
    if(!checkingForInactivity) 
    { 
     checkingForInactivity = true; 
     myRoutine = StartCoroutine(CheckForInactivity()); 
    } 
    } 
    else 
    { 
    if(checkingForInactivity) StopCoroutine(myRoutine); 
    } 
} 

Ienumrable CheckForInactivity() 
{ 
    yield new waitForSecond(3.0f); 
    //user is inactive 
} 
} 
+0

Vous comprenez que vous démarrez une coroutine chaque image quand il n'y a pas de contact sur l'écran? Ce n'est pas une bonne chose. En outre, ce n'est pas comment arrêter une coroutine. Vous devez stocker la référence puis arrêter la référence. C'est imparfait à bien des égards. – Programmer

+0

Merci, l'a réparé. –