dragging avec cube sur plane

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
juliuson
Messages : 102
Inscription : 03 Mai 2017 18:00

dragging avec cube sur plane

Message par juliuson » 08 Avr 2018 16:05

Coucou à tous,

ma question est la suivante :
comment déplacer un cube avec la souris, le long d'un plan incliné de 45° sur l'axe des Y (situé au centre de la scène)?

Votre aide est la bienvenue...

A+

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

Re: dragging avec cube sur plane

Message par Max » 08 Avr 2018 16:35

Bonjour,

première étape, arrives-tu déjà à bouger ton cube avec la souris ? (en faisant pour le moment abstraction du plan incliné).
Au cas où, la doc est ton amie avec par exemple ceci.
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

juliuson
Messages : 102
Inscription : 03 Mai 2017 18:00

Re: dragging avec cube sur plane

Message par juliuson » 08 Avr 2018 16:52

Salut à vous,

j'arrive bien à bouget le cube avec la souris (en gros).
Mon code est le suivant :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
//using System.Collections.Generic;

public class drag : MonoBehaviour {
	float Distance = 10;
	void OnMouseDrag (){
		Vector3 mousePosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, Distance);
		Vector3 objPosition = Camera.main.ScreenToWorldPoint (mousePosition);
		transform.position = objPosition;
		if(Input.GetKey(KeyCode.RightArrow))
			transform.Rotate(Vector3.up, 10f * Time.deltaTime);

	}
}
Merci à vous,

A+

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

Re: dragging avec cube sur plane

Message par Max » 08 Avr 2018 17:53

Cela te permet de 'capturer' ton élément. Pas sûr que cela t’amène ou tu veux aller par rapport à ce que tu sembles vouloir faire.
juliuson a écrit :
08 Avr 2018 16:05
comment déplacer un cube avec la souris, le long d'un plan incliné de 45° sur l'axe des Y (situé au centre de la scène)?
Ton cube est déjà sur la pente ?
D'instinct, je dirais un Plane normé à 45°, un ScreenPointToRay pour un raycast dessus.
Sinon, poste un screen/dessin qui permettrait de mieux comprendre la scène et ce que tu cherches à faire.

PS: met ces fichus balises code quand tu postes tes scripts, tu oublies à chaque fois, ça commence à être lourd. Merci.
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

juliuson
Messages : 102
Inscription : 03 Mai 2017 18:00

Re: dragging avec cube sur plane

Message par juliuson » 09 Avr 2018 17:41

Salut à tous,

Voici une image de mon projet :

https://www.dropbox.com/s/sukhzgx2esnywup/plan.png?dl=0

J'essaie de déplacer mon cube le long du plan.

Merci de votre aide,

A+

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

Re: dragging avec cube sur plane

Message par Max » 09 Avr 2018 18:30

Bonsoir,

voici le genre de code qui pourrait te servir (à placer sur ton cube):

Code : Tout sélectionner

public class PickCube : MonoBehaviour
{
    Vector3 norm = new Vector3(0, 0.707f, 0.707f); // normé pour une inclinaise de 45°
    Vector3 ipoint = new Vector3(0, 0, 0); // à adapter en fonction de la position du plan

    void OnMouseDrag()
    {
        Transform dragObject = transform;

        Plane plane = new Plane(norm, ipoint); // plan virtuel qui sert de base

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        float dist; // distance du raycast
        if (plane.Raycast(ray, out dist))
        {
            dragObject.position = ray.GetPoint(dist); 
        }
    }
}
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

juliuson
Messages : 102
Inscription : 03 Mai 2017 18:00

Re: dragging avec cube sur plane

Message par juliuson » 09 Avr 2018 19:45

Salut,

Merci pour ton code,

mais lorsque je clique sur le cube celui-ci apparait en dessous du plan et lorsque je le drag en bas à gauche, cela donne le résultat suivant :

https://www.dropbox.com/s/3ewma09qwa5z7 ... 1.png?dl=0

Merci de votre aide,

A+

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

Re: dragging avec cube sur plane

Message par Max » 09 Avr 2018 21:14

juliuson a écrit :
09 Avr 2018 19:45
mais lorsque je clique sur le cube celui-ci apparait en dessous du plan et lorsque je le drag en bas à gauche, cela donne le résultat suivant :
comme décrit dans le code, il te faut bien sûr adapter les valeurs de norm et ipoint en fonction de ton plan et de ta scène. A toi de trouver les bonne valeurs.
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

Répondre

Revenir vers « Scripting »