limiter une zone de touche

Toutes les questions sur le développement Mobile, y compris la partie script.
Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: limiter une zone de touche

Message par boubouk50 » 05 Juin 2020 07:51

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).
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: limiter une zone de touche

Message par djulio74 » 05 Juin 2020 12:54

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.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Répondre

Revenir vers « Développement plateformes mobile Iphone et Android »