28-10-2013, 12:51 PM
(Questo messaggio è stato modificato l'ultima volta il: 28-10-2013, 07:52 PM da cuge89.)
Dunque il problema è questo.... sto sviluppando un giochino per Android, però sto riscontrando qualche problema nelle varie interazioni con gli oggetti: spesso fallisce il raycasting quindi bisogna provare e riprovare varie volte prima che l'interazione abbia successo, e questo può risultare un tantino scocciante per il giocatore, soprattutto se queste operazioni richiedono un certo tempismo; oppure ogni tanto lo script si perde una TouchPhase.Ended e quindi l'interazione rimane bloccata nella TouchPhase.Moved fino a quando non si tocca nuovamente lo schermo.
Anche questo può causare qualche fastidio.
Sono convinto che ci sia qualche problema a livello di codice/concettuale, anche perchè è la prima volta che sviluppo qualcosa per Mobile; diciamo che manca forse un qualche controllo in più per ottimizzare le operazioni e per assicurarsi che vadano a buon fine quando devono.
Metto qui parte dello script così magari da capirsi meglio...
La stessa cosa nella versione per PC funzionava senza problemi, usavo solo le funzioni del mouse, senza raycasting, quindi era molto più semplice la cosa. Poi ho fatto il porting per Android e chiaramente ho incontrato qualche problema.
Any idea ?
Anche questo può causare qualche fastidio.
Sono convinto che ci sia qualche problema a livello di codice/concettuale, anche perchè è la prima volta che sviluppo qualcosa per Mobile; diciamo che manca forse un qualche controllo in più per ottimizzare le operazioni e per assicurarsi che vadano a buon fine quando devono.
Metto qui parte dello script così magari da capirsi meglio...
Codice:
if (Input.touches.Length > 0) {
if (Input.GetTouch(0).phase == TouchPhase.Began) {
raggio = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
if (Physics.Raycast(raggio,out hit)) {
if (hit.transform.tag == "Pushable") {
goodHit = true;
myRB = hit.rigidbody;
}
startPos = Input.GetTouch(0).position;
}
}
if ((Input.GetTouch(0).phase == TouchPhase.Moved)&&(goodHit == true)) {
dragging = true;
intensity++;
if (intensity > 75) intensity = 75;
}
if ((Input.GetTouch(0).phase == TouchPhase.Ended)&&(goodHit == true)) {
dragging = false;
goodHit = false;
endPos = Input.GetTouch(0).position;
if (endPos.x > startPos.x) {
spinta.x = 1;
} else {
spinta.x = -1;
}
if (myRB.CompareTag("Pushable")) {
myRB.AddForce(spinta*intensity, ForceMode.Impulse);
intensity = 0;
}
}
}
La stessa cosa nella versione per PC funzionava senza problemi, usavo solo le funzioni del mouse, senza raycasting, quindi era molto più semplice la cosa. Poi ho fatto il porting per Android e chiaramente ho incontrato qualche problema.
Any idea ?