[DB-AL] Déplacer un objet à une certaine distance.

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
cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

[DB-AL] Déplacer un objet à une certaine distance.

Message par cortoh » 25 Août 2017 22:39

Bonjour,
J'ai ici un code en javascript pour déplacer un cube que je voudrais modifier mais je ne sais pas comment coder cela, ici en cliquant sur le cube celui-ci ce déplace indéfiniment sur l'axe Z, je souhaiterais lui demander de s'arreter à une certaine distance.
Merci à vous pour votre aide.

Code : Tout sélectionner

function OnMouseDown(){

	cubeSelection = 1;

	}

function FixedUpdate() {

	if (cubeSelection == 1){

	transform.Translate(Vector3(0,0,2) * Time.deltaTime);

	}
	}

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

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par Max » 26 Août 2017 12:25

Bonjour,
cortoh a écrit :
25 Août 2017 22:39
je souhaiterais lui demander de s'arreter à une certaine distance.
à une distance par rapport à quoi ?
Tu as une fonction simple pour tester la distance qui sépare deux positions: Vector3.Distance.

Sinon, en question subsidiaire, pourquoi passer par 'FixedUpdate' (dévolu surtout à l'emploi des fonctions physique) ?
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

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par cortoh » 26 Août 2017 18:53

Bonjour Max,
Pour la distance et bien c'est à partir de la position actuelle du cube.
Pour Le FixedUpdate c'est une erreur, désolé.

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

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par Max » 26 Août 2017 19:14

cortoh a écrit :
26 Août 2017 18:53
Pour Le FixedUpdate c'est une erreur, désolé.
pas grave, c'était juste pour savoir en fait.
cortoh a écrit :
26 Août 2017 18:53
Pour la distance et bien c'est à partir de la position actuelle du cube.
ben si c'est connaitre la distance entre la positon de départ et la position courante, comme suggéré plus haut, tu peux passer par Vector3.Distance, entre le point de départ (mémorisé) et la positon courante de ton cube. Si distance est supérieure à la valeur souhaité, alors tu stoppes la progression de ton cube.
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

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par cortoh » 27 Août 2017 09:25

Alors j'ai avancé mais ce n'est pas encore ça, je n'ai pas trouvé la façon de récupérer la position de départ et de la comparer à la position en action.

Code : Tout sélectionner

static var cubeSelection: int = 0;
public var cubeJaune: Transform;

function OnMouseDown(){

cubeSelection = 1;

}

function Update () {

if (cubeJaune){

var dist = Vector3.Distance(cubeJaune.position, transform.position);

}

if (dist > 2) {

cubeSelection = 0;

}

if (cubeSelection == 1)	{

transform.Translate(Vector3(0,0,2) * Time.deltaTime);

}
}

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

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par Max » 27 Août 2017 11:09

Bonjour,
cortoh a écrit :
27 Août 2017 09:25
je n'ai pas trouvé la façon de récupérer la position de départ et de la comparer à la position en action.
il faut mémoriser la position de ton cube au départ.
Exemple:

Code : Tout sélectionner

var initialPosition : Vector3;

function Start() {
	initialPosition = transform.position;
}
après il te suffit de faire dist = Vector3.Distance(initialPosition, transform.position); pour avoir la différence entre la position de départ et la position actuelle.

PS: évite les 'static' sur tes variables, cela t'éviteras bien des désagrément ;)
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

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par cortoh » 27 Août 2017 14:12

Salut Max,

Comme je ramais pas mal ce matin J'ai bidouillé ce code pour tenter d'arriver à ce que je voulais, alors je ne sais pas si la façon d'avoir codé cela ressemble à du bidouillage mais ça fonctionne parfaitement, à chaque clique mon cube se déplace d'une unité comme escompté, je dois ajouter par la suite un test dans ma fonction OnMouseDown pour vérifier qu'il n'y a pas d'obstacle devant mon cube pour l'autoriser à avancer ou pas, tu en pense quoi ?

Code : Tout sélectionner

public cubeSelection: int = 0;
public var cubeJaune: Transform;
public var posi_cubeJaune: int = 0;
public var posi_enCours: int = 0;

function OnMouseDown(){

posi_cubeJaune = cubeJaune.transform.localPosition.z; // Je recupère la position du cube
cubeSelection = 1;

}

function Update () {

posi_enCours = cubeJaune.transform.localPosition.z

if (posi_enCours > posi_cubeJaune) {

cubeSelection = 0; // Arrêt du cube

cubeJaune.transform.position.z = posi_enCours; // Correction précise de la position

}

if (cubeSelection == 1){

transform.Translate(Vector3(0,0,2) * Time.deltaTime);

}
}

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

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par Max » 27 Août 2017 15:32

cortoh a écrit :
27 Août 2017 14:12
je dois ajouter par la suite un test dans ma fonction OnMouseDown pour vérifier qu'il n'y a pas d'obstacle devant mon cube pour l'autoriser à avancer ou pas, tu en pense quoi ?
ben là je ne sais pas ce que tu cherches à faire, et dans quel contexte, donc difficile de répondre.
Il parait normal de vérifier que le chemin qu’emprunte ton cube soit libre (si il n'est pas seul dans ta scène). Tu peux regarder du coté des Raycasts par exemple. Les tuto sont nombreux, à commencer par le Learn.
Et la fonction OnMouseDown n'est pas voué à ce type de test.
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

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par cortoh » 27 Août 2017 18:48

Non en fait la fonction OnMouseDown me servira à vérifier l'état d'une variable suite à un OnTriggerEnter, le but final est de cliquer sur l'une des quatres faces du cube pour le faire avancer d'une case par une case sur un plateau qui contient d'autres cubes similaire, la premiere étape est ma fois atteinte, maitenant j'aurais souhaité trouver le moyen de déclarer qu'elle face du cube a été cliquée pour indiquer la direction à lui donner, mais je ne sais pas si sc'est faisable, si tu a des infos sur comment faire je suis preneur, en tout cas merci beaucoup pour ton aide ça à été très constructif.

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

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par Max » 27 Août 2017 19:00

Tiens, lien direct avec le sujet que tu avais ouvert en octobre 2015 --> viewtopic.php?t=11176
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

Verrouillé

Revenir vers « (Js) Javascript »