[DB - AL] Plane.Raycast :'(

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
CharQ
Messages : 9
Inscription : 06 Août 2016 21:07

[DB - AL] Plane.Raycast :'(

Message par CharQ » 06 Août 2016 21:20

Bonjour a tous, j'ai commence a travailler sur Unity récemment en suivant des tutos sur Youtube et je rencontre aujourd'hui un problème lié au raycast que je "pense" comprendre et au Plane. J'explique mon projet :

Je sélectionne mon objet et une fois sélectionné je voudrais qu'il suive ma souris sans changer ses valeurs sur l'axeY.

Code : Tout sélectionner

#pragma strict

public var depth = 10.0;

function FollowMousePosition()
{
	var mousePos = Input.mousePosition;
    var wantedPos = Camera.main.ScreenToWorldPoint (Vector3 (mousePos.x, mousePos.y, depth));
    transform.position = wantedPos;
}

function Update()
{
    var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    var hit : RaycastHit;
	
    if(Physics.Raycast(ray,hit))
    {
        if(hit.collider.tag == "Player" && Input.GetMouseButtonDown(0))
        {
            Debug.Log(gameObject.name + " selected");
			
			var plane = Plane(Vector3.up, transform.position);
			var point : float = 0f;
		
			if(plane.Raycast (ray, point))
			{
				FollowMousePosition();
			}
        }
    }
}
Je sais que ce code ne peut pas fonctionner, mais après moult recherche et essai j'ai décidé de vous demander de l'aide.

Merci d'avance ! :3

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB - AL] Plane.Raycast :'(

Message par Max » 07 Août 2016 10:59

Bonjour,

si j'ai bien compris, tu souhaite faire du Drag Object with mouse.
ce genre de tuto peut t'aider à avancer:

https://www.youtube.com/watch?v=pK1CbnE2VsI
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

CharQ
Messages : 9
Inscription : 06 Août 2016 21:07

Re: [DB - AL] Plane.Raycast :'(

Message par CharQ » 07 Août 2016 11:24

Merci pour ta réponse, seulement ce n'ai pas exactement ça que je souhaite.

Avec le script OnMouseDrag un peu modifié, j'ai réussi a utilise le plane comme je souhaitais qu'il fonctionne ! :3

Je vais essayer d'expliquer étape par étape ce que je veux réaliser : (J'ai aussi vue que pour un portage mobile les fonctions OnMouse ne sont pas conseillées)

1) je sélectionne mon objet avec ma souris (un clic)
2) mon objet suis le mouvement de ma souris (sans changer son axe Y && sans reste appuyé sur le clic gauche)
3) je re-clic pour finir le positionnement de mon objet

Et après cette bonne nuit de sommeil, je me rend compte que ma condition

Code : Tout sélectionner

if(hit.collider.tag == "Player" && Input.GetMouseButtonDown(0))
n'est pas approprié pour ce que je veux faire ><

CharQ
Messages : 9
Inscription : 06 Août 2016 21:07

Re: [DB - AL] Plane.Raycast :'(

Message par CharQ » 07 Août 2016 15:54

C'est encore moi, j'ai bien avance seulement je suis toujours confronté a un simple problème de condition je pense :

Code : Tout sélectionner

#pragma strict

public var point : float = 0f;
private var targetPos : Vector3;
private var isMoving : boolean = false;

function FollowMousePosition()
{
	var plane = Plane(Vector3.up, transform.position);
	var ray : Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
		
	if(plane.Raycast (ray, point))
	{
		targetPos = ray.GetPoint(point);
	}	
	
	transform.position = targetPos;

	[glow=red]if(Input.GetMouseButton(0))[/glow]
	{
		transform.position = targetPos;
		isMoving = false;		
	}
}

function selectChar()
{
	var hit : RaycastHit;
	var ray : Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
	if(Physics.Raycast(ray, hit))
	{
		if(hit.collider.tag == "Player" && Input.GetMouseButton(0))
		{
			Debug.Log(gameObject.name + " selected");
			isMoving = true;
		}
	}
	
}

function Update()
{
	selectChar();
	if(isMoving)
	{
		FollowMousePosition();
	}	
}
Effectivement lorsque je sélectionne mon objet tout ce passe comme prévus ... jusqu’à la ligne que j'ai surligné en rouge qui désélectionne mon objet finalement en même temps que je le sélectionne -_-

Verrouillé

Revenir vers « (Js) Javascript »