Déplacer un objet

Toutes les questions sur le développement Mobile, y compris la partie script.
Avatar de l’utilisateur
A_cube
Messages : 63
Inscription : 08 Juil 2011 08:50

Déplacer un objet

Message par A_cube » 05 Août 2011 16:10

Bonjour à tous,

J'ai utiliser ce code sur pc pour quand on cliquait sur un objet et que l'on bougeait la souris, l'objet la suivait.

Maintenant je dois passer mon application sur Ipad mais je n'arrive pas à modifier mon code pour que cela marche.

Quelqu'un peut m'aider?

Merci

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class Fonction_Mesure : MonoBehaviour 
{
	public Vector3 screenSpace;
    public Vector3 offset;

    //Declaration des spheres
    public GameObject Sphere1 ;
    public GameObject Sphere2 ;


	
    void  OnMouseDown (){
       //translate the cubes position from the world to Screen Point
       screenSpace = Camera.main.WorldToScreenPoint(transform.localPosition);
       
       //calculate any difference between the cubes world position and the mouses Screen position converted to a world point
       offset = transform.localPosition - Camera.main.ScreenToWorldPoint( new Vector2(Input.mousePosition.x,Input.mousePosition.y));
      
    }

    /*
    OnMouseDrag is called when the user has clicked on a GUIElement or Collider and is still holding down the mouse.
    OnMouseDrag is called every frame while the mouse is down.
    */

    void  OnMouseDrag (){

       //keep track of the mouse position
       Vector2 curScreenSpace = new Vector2(Input.mousePosition.x,Input.mousePosition.y);     
          

       //convert the screen mouse position to world point and adjust with offset
       Vector3 curPosition= Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;

       //update the position of the object in the world
       transform.localPosition = curPosition;
         
    }


}
Cherche à faire un blog pour mes projets, des suggestions ? Merci ;) || WIP (Aeourant) en préparation ... :D

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Déplacer un objet

Message par giyomuSan » 06 Août 2011 14:11

les fct de mouse ca marche pas sur le iphone, il faut gerer avec les Touch[]

de la tu peu recuperer la phase ( begin, stationary, move, cancel )

Donc dans l'ordre >

les detection de screen point etc ca devrai spas bouger , sauf que il faudra passer les coordonnees d'ecran via un Touch + phase.begin ( pour le onmouseDown )

le on mouse drag >> phase.move

etc..

regarde la doc sur la partie iphone et ses input ca devrais t 'aider

Avatar de l’utilisateur
A_cube
Messages : 63
Inscription : 08 Juil 2011 08:50

Re: Déplacer un objet

Message par A_cube » 09 Août 2011 09:51

Salut,

J'ai fait des modifications pour que le script marche à la fois avec la souris et avec l'Ipad.
Quand je suis sur l'unity, mais deux sphères se déplacent indépendamment. Donc tout va bien.
Mais quand je suis sur Ipad, dès que j'en bouge une, la seconde fait exactement pareil.
Je ne vois pas d'où ça peut venir.

Quelqu'un a une idée?

Merci

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class Fonction_Mesure : MonoBehaviour 
{
	public Vector3 offset;
	public Vector2 position;

	void Update () 
	{
		Touch f0;
		// one finger gestures
		if (Input.touchCount == 1) 
		{
			// finger data
			f0 = Input.GetTouch(0);
			if(position.x==f0.position.x && position.y==f0.position.y){
				return;
			}
			position=f0.position;
			
			// if finger moving
			if (f0.phase == TouchPhase.Moved) 
			{
				this.OnGestureDrag();
			}
			else
			{
				this.OnGestureDown();
			}	
		}
	}
	
	void OnMouseDown(){
		if(position.x==Input.mousePosition.x && position.y==Input.mousePosition.y){
			return;
		}
		position=Input.mousePosition;
		OnGestureDown();
	}
	
	void OnMouseDrag(){
		if(position.x==Input.mousePosition.x && position.y==Input.mousePosition.y){
			return;
		}
		position=Input.mousePosition;
		OnGestureDrag();
	}
    
	void  OnGestureDown ()
	{
       offset = transform.localPosition - Camera.main.ScreenToWorldPoint( position ); 
    }
   
    void  OnGestureDrag ()
	{
       Ray ray = Camera.main.ScreenPointToRay(position);
			
		if (Physics.Raycast(ray, 3)) 
		{
		   Vector3 curPosition= Camera.main.ScreenToWorldPoint(position) + offset;
	       transform.localPosition = curPosition;    
		}
	}
}
Cherche à faire un blog pour mes projets, des suggestions ? Merci ;) || WIP (Aeourant) en préparation ... :D

Répondre

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