30-10-2013, 01:13 PM
Trovata la soluzione al problema, o almeno per me è risultata esserlo.
La scrivo dunque qui sotto così se qualcun altro si dovesse trovare nella stessa situazione almeno può uscirne agevolmente.
Non era un problema di codice... il frammento riportato sopra è corretto e funzionante, il problema era che questo pezzo di codice andava poi ad attivare delle Forze che agivano sui rigidbody, per questo motivo avevo inserito il tutto in FixedUpdate() {come suggerivano numerosi totorial e forse anche la documentazione di unity stesso.} Peccato però che le TouchPhase sviluppino non pochi problemi con FixedUpdate(), perchè dal momento che le fasi vengono analizzate ad ogni frame, capitava ogni tanto che venisse perso proprio quel frame in cui si valutava la touchphase.ended causando la mancata esecuzione del blocco di codice al suo interno :\
Per quanto riguarda invece le mancate interazioni con alcuni oggetti credo sia solo un problema di collider piccolini che ogni tanto vengono mancati dal Raycast, perchè di fatto quando si tocca lo schermo è possibile che anche se si sta "toccando" l'oggetto, la prima molecola del dito che entra in contatto con lo schermo in realtà sia fuori dal collider dell'oggetto interessato, causando così il miss visto che il raggio è di sezione puntiforme. Ora quindi stò lavorando ad una funzione che consenta un po' più di lasco sul raycast.
tl;dr: Non inserire controlli sulle fasi di tocco all'interno di FixedUpdate().
La scrivo dunque qui sotto così se qualcun altro si dovesse trovare nella stessa situazione almeno può uscirne agevolmente.
Non era un problema di codice... il frammento riportato sopra è corretto e funzionante, il problema era che questo pezzo di codice andava poi ad attivare delle Forze che agivano sui rigidbody, per questo motivo avevo inserito il tutto in FixedUpdate() {come suggerivano numerosi totorial e forse anche la documentazione di unity stesso.} Peccato però che le TouchPhase sviluppino non pochi problemi con FixedUpdate(), perchè dal momento che le fasi vengono analizzate ad ogni frame, capitava ogni tanto che venisse perso proprio quel frame in cui si valutava la touchphase.ended causando la mancata esecuzione del blocco di codice al suo interno :\
Per quanto riguarda invece le mancate interazioni con alcuni oggetti credo sia solo un problema di collider piccolini che ogni tanto vengono mancati dal Raycast, perchè di fatto quando si tocca lo schermo è possibile che anche se si sta "toccando" l'oggetto, la prima molecola del dito che entra in contatto con lo schermo in realtà sia fuori dal collider dell'oggetto interessato, causando così il miss visto che il raggio è di sezione puntiforme. Ora quindi stò lavorando ad una funzione che consenta un po' più di lasco sul raycast.
tl;dr: Non inserire controlli sulle fasi di tocco all'interno di FixedUpdate().