Creare Videogiochi - Game Developer
Rilevamento coordinate touch per calcolo inerzia - Versione stampabile

+- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi)
+-- Forum: Unity3D Italia (https://www.making-videogames.net/giochi/Forum-Unity3D-Italia)
+--- Forum: Richieste di Aiuto per Unity 3D (https://www.making-videogames.net/giochi/Forum-Richieste-di-Aiuto-per-Unity-3D)
+--- Discussione: Rilevamento coordinate touch per calcolo inerzia (/thread-Rilevamento-coordinate-touch-per-calcolo-inerzia)



Rilevamento coordinate touch per calcolo inerzia - Almiotti79 - 08-09-2016

Ciao a tutti, ho un piccolo problemino.. In pratica vorrei usare il touch per muovere la telecamera sul mio livello di gioco (mappa stile clash of clans) e al rilascio del touch applicare un inerzia alla camera.
Il problema che ho non sta nel muovere o applicare l'inerzia, ma tanto alla forza da darle e alla velocità. 
Questo perchè ho notato  che se io vado a calcolare lo spostamento del touch dalla posizione precedente a quella corrente (rilevando quindi velocità e direzione in cui applicherò l'inerzia) al rilascio ho spesso un balzo che non mi permette di applicare la velocità corretta in uscita, quindi invece di rallentare, la cam prima ha un accelerazione inutile e poi rallenta.

Esempio rilevazioni (distanza tra position e delta position) : 
0.4
0.2
0.3
0.7
0.6
3.4

.. quindi passa da una media bassa.. al rilascio mouse con uno scatto improvviso

PS: Volevo provare a cercare sul forum ma non mi accede alla casella di ricerca, Volevo allegare 2 screen dei risultati del debugger di unity ma non riesco ad allegarli, dici formato nn valido. Sono due jpeg da circa 300kb


Grazie a tuttii!!!!


RE: Rilevamento coordinate touch per calcolo inerzia - Blackg96 - 08-09-2016

Se riuscissi a mandarci il codice sarebbe meglio Smile


RE: Rilevamento coordinate touch per calcolo inerzia - Almiotti79 - 08-09-2016

globale : 
private Vector2?[] coordPrecedenti = { null, null }; // Array
private Vector2 coordCorrenti;
private Vector2 nuoveCoordinate;

in Update :


if (!Input.GetMouseButton (0) && Input.touchCount == 0) {
   coordPrecedenti [0] = null;
    coordPrecedenti [1] = null;
}

if ((Input.GetMouseButton (0) && Input.touchCount == 0) || Input.touchCount == 1) {

   if (coordPrecedenti [0] == null || coordPrecedenti [1] != null) {
       coordPrecedenti [0] = coordinateInput ();
       coordPrecedenti [1] = null;
       Debug.Log ("Single touch" + linea + "________________________");
    } else {
        coordCorrenti = coordinateInput ();
        nuoveCoordinate = ((Vector2)coordPrecedenti [0] - coordCorrenti);
        Debug.Log("Sposta di " + nuoveCoordinate);

.... 
La funzione coordinateInput :
Vector2 coordinateInput(int nrTocco = 0) {
    if (Input.touchCount > 0) {  
        int controllaTouch = ((Input.touchCount == (nrTocco + 1)) ? nrTocco : 0);
         return Input.GetTouch (nrTocco).position;
    } else {
        //Debug.Log ("Controllo tramite mouse ");
        return Input.mousePosition;
    }
}



Nulla di complicato insomma.. ma nn capisco xkè ha una irregolarità assurda ..   Comunque nn riesco a postare lo screen ..  in che formato e che dimensioni accetta qui ? Grazie


RE: Rilevamento coordinate touch per calcolo inerzia - Blackg96 - 15-09-2016

Scusa il ritardo della risposta, ma sono stato parecchio impegnato. Comunque ho controllato da me lo fa ogni tanto e non ho capito cosa sia Sad


RE: Rilevamento coordinate touch per calcolo inerzia - Almiotti79 - 16-09-2016

e si.. il senso effettivamente cè .. solo bisogna inventarsi un modo per ovviare a questi scatti improvvisi..