Page 2 sur 2

Re: limiter une zone de touche

Publié : 05 Juin 2020 07:51
par boubouk50
Tu n'as pas compris ce que je t'ai recommandé:

Code : Tout sélectionner

if (Input.touchCount > 0 && Input.touches[0].phase == TouchPhase.Began)
Si tu mets la phase dans la 1e condition, alors tu ne pourras pas accéder aux autres phases.
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();
		}
	}
}
EDITE D'APRES LE COMMENTAIRE DE DJULIO

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).

Re: limiter une zone de touche

Publié : 05 Juin 2020 12:54
par djulio74
J'ai rajouterai que la condition du hit.collider n'est pas utile je pense. C'est déjà dans la condition du raycast, donc si la condition est vrai. (objet touché) alors obligatoirement il y a un collider défini dans hit.