Code : Tout sélectionner
if (Input.touchCount > 0 && Input.touches[0].phase == TouchPhase.Began)
Cette condition est déjà définie plus loin dans le code, sers-t-en.
Pour le collider, tu le récupères déjà, qu'est ce qui t'empêche de le traiter?
Tu peux tester le nom de l'objet, du rigidbody, le tag, etc pour savoir quel collider est touché.
Code : Tout sélectionner
private bool isValidDrag = false;
private void Update()
{
//Si un Touch
if (Input.touchCount > 0)
{
//Récupérer le touch
touch = Input.GetTouch(0);
//Si premier touch
if (touch.phase == TouchPhase.Began)
{
//Definir si le touch a touché un collider valide
Ray ray = Camera.main.ScreenPointToRay(Input.touches[0].position);
RaycastHit hit;
//Par défaut, la touch n'est pas valide, on va chercher à le valider
isValidTouch = false;
if (Physics.Raycast(ray, out hit))
{
//Ici ta condition sur le collider
if (/*hit.collider.CompareTag ("truc")*/)
{
isValidTouch = true;
DragStart();
}
}
}
//Drag -> Tu devrais utiliser des Else pour ne pas tester cette condition si tu es en phase Began
if (touch.phase == TouchPhase.Moved && isValidTouch)
{
Dragging();
}
//Drop -> Tu devrais utiliser des Else pour ne pas tester cette condition si tu es en phase Began ou Moved
if (touch.phase == TouchPhase.Ended && isValidTouch)
{
DragRelease();
}
}
}
Attention, ceci est un code fait à la volée non testé, il semble correct mais peut contenir des erreurs (d'ailleurs il te faut définir la condition de validation du collider).