[DB]ne voir qu' à l'envers ?

Pour les scripts écrits en C#
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
Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

[DB]ne voir qu' à l'envers ?

Message par Kaloverian » 21 Avr 2019 03:30

bonjour,

Je ne comprends pas:
J'ai crée un scriptC# de translation et un autre C# de spawn en mouvement translaté de telle sorte qu'appliqués judicieusement, un objet se translate selon ce vecteur (1,0,0) et à chaque appui d'une touche,cet objet "spawn" depuis sa position sur sa trajectoire un autre objet translaté dont le vecteur de translation est (1,0,1)
J'ai bien pris les précautions de créer ces translations avec un choix judicieux de coordonnées locales ou mondiales(Space.Self ou Space.World)

Quand la camera est juste derrière l'objet spawnant en le suivant de près,on voit que le spawn à un vecteur directeur de (-1,0,1)
Il y a sûrement un problème de vue à régler chez Unity que je ne comprends pas dont j'aimerais bien connaître l'explication

merci de votre aide

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB]ne voir qu' à l'envers ?

Message par boubouk50 » 21 Avr 2019 17:15

Rien n'est magique, tout est programme...
On ne peut pas t'aider si on a pas le code entier. Tu pars du principe que ton code est juste et que Unity fait le taff à l'envers. Si on part du principe que ton code n'est pas bon, alors il nous faut le code pour le corriger.
"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

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: [DB]ne voir qu' à l'envers ?

Message par Kaloverian » 21 Avr 2019 17:43

Voici mes 2 scripts en C#
le 1er translate l'objet auquel est appliqué ce script

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

//ne surtourt pas créer une translation après l'appui d'une touche:son appui ne fera que translater d'un pas à chaque appui
//les translations de la moins rapide à la plus rapide sont:
//    translation_un
//    translation_deux
//    translation_trois

public class translation_un_world : MonoBehaviour
{
	//float temps=0;
	public float speed=5f;

	void Update()
	{   //temps += Time.deltaTime;
		// Move the object forward along its z axis 1 unit/second.
		//transform.Translate(0, 0, Time.deltaTime);

		//Attention !:par défaut,cette traansformztion est en locale donc si l'objet auquel est applqué ce script une composante de rotation
		//cela modfiera le vecteur de cette transsformation
		//transform.Translate(speed*Time.deltaTime*speed, 0,0,Space.Self);

		transform.Translate(speed*Time.deltaTime*speed, 0,0,Space.World);

		//transform.Translate(0, 0, temps);



		// Move the object upward in world space 1 unit/second.

	}
}
Le second script appliqué sur ce même objet spawn un objet translaté en (1,0,1) à la position du 1er objet translaté en (1,0,1) par le 1er script

Code : Tout sélectionner

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



public class spawn_self : MonoBehaviour
{
	public float moveSpeed = 2f;


	public GameObject cub;
	MeshRenderer Mesh_cub;

	List<Transform> allCreations1 = new List<Transform>();
	List<Transform> allCreations2 = new List<Transform>();
	List<MeshRenderer> allRender1 = new List<MeshRenderer>();
	List<MeshFilter> allMeshFilter1 = new List<MeshFilter>();
	List<MeshRenderer> allRender2 = new List<MeshRenderer>();
	List<MeshFilter> allMeshFilter2 = new List<MeshFilter>();
	




	// Use this for initialization
	void Start ()
	{




	}

	// Update is called once per frame
	void Update ()
	{


		//prendre la position du cube initial en mouvement:ce cube étant l'objet sur lequel est appliiqué le script
		transform.position = GetComponent<Transform>().position;

		if (Input.GetKeyDown (KeyCode.S)) {
			GameObject objet10 = new GameObject ("objet10");
			objet10.transform.position = transform.position;
			allCreations1.Add (objet10.transform);
			allRender1.Add (objet10.AddComponent<MeshRenderer>());
			allMeshFilter1.Add (objet10.AddComponent<MeshFilter>());


		}







		foreach (var creation1 in allCreations1) {
			if (creation1 != null)
				creation1.Translate (new Vector3(1,0,1) * moveSpeed*Time.deltaTime,Space.Self);
			    
			}


		foreach (var mesh1 in allMeshFilter1) {
			if (mesh1 != null)
				mesh1.mesh = cub.GetComponent<MeshFilter> ().mesh;
		}


	}

}


Dans le 2ème script,j'ai essayé aussi avec Space.World dans la translation.

Ces 2 scripts fonctionnent mais le rendu game donne un spawner éjectant à l'envers.,derrière et non devant le 1er objet ! Pourquoi?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB]ne voir qu' à l'envers ?

Message par boubouk50 » 21 Avr 2019 19:47

Dans le premier script, tu effectues une translation globale (World) en x.
Dans le second, tu effectues une translation locale (Self) en (1, 0, 1).
Ce sont 2 repères différents si un des gameobject a subi une transformation.
"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

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: [DB]ne voir qu' à l'envers ?

Message par Kaloverian » 21 Avr 2019 23:01

Désolé!
je viens de refaire le tout en diminuant la vitesse de translation du 1er objet et ça fonctionne
j'ai du avoir une illusion au début à cause de la bonne vitesse du 1er objet

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB]ne voir qu' à l'envers ?

Message par boubouk50 » 21 Avr 2019 23:44

C'est donc résolu?
Merci de le signaler si c'est le cas.
"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

Répondre

Revenir vers « (C#) CSharp »