Trajet ITWEEN changé en trajet DOTWEEN

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
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Trajet ITWEEN changé en trajet DOTWEEN

Message par F@B » 07 Juil 2015 08:44

faut pas s’étonner si les perfs ne sont pas terrible si tu instancie des tween sur chaque frame! :D ça ,parait logique
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Trajet ITWEEN changé en trajet DOTWEEN

Message par freepl » 07 Juil 2015 09:28

oui, parfaitement, mais comment modifier le script pour ne pas le faire ?


Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Trajet ITWEEN changé en trajet DOTWEEN

Message par freepl » 07 Juil 2015 11:41

:lol:

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Trajet ITWEEN changé en trajet DOTWEEN

Message par cayou66 » 07 Juil 2015 13:49

Non mais c'est ta logique qu'il faut revoir. En général tu as un événement qui déclenche le Tween, comme par exemple un trigger, un délai, etc etc...Ou bien même au lancement du jeu.
Lorsque cet événement se produit tu lances tes tweens, une seule fois.

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Trajet ITWEEN changé en trajet DOTWEEN

Message par freepl » 07 Juil 2015 14:14

J'ai 2 utilisations.

1 Dès le départ, instanciation de voitures sur 8 trajectoires par création aléatoire de voitures par ce script

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
using System;


[Serializable]
public struct Trajets {
	public GameObject trajet;
	public float vitesse;
}

public class DebutRoute : MonoBehaviour {
	
	// script qui detruit le vl à la fin du parcours et l'instancie au départ
	// si true coché = début si false non coché = à fin
	
	
	/*Donc tu choisie dans l'inspector le nombre de vl que tu veux au lancement de ta maquette pour chaque trajet et le programme vas te les instancié automatiquement par rapport à la fraction et au trajet.

example :
ligne Vl depart 4 , car j'ai 4 voies
element 0  : 4 si je veux 4 vl affichés dès le lancement de la maquette sur cette voie
element 1  : 1 si je veux 1 vl affichés dès le lancement de la maquette sur cette voie
element 2  : 3 si je veux 3 vl affichés dès le lancement de la maquette sur cette voie 
element 3  : 10 si je veux 10 vl affichés dès le lancement de la maquette sur cette voie  

Pour element0 , on a mis 0. Il y aura 0 véhicuke sur le trajet à 0.0,  0.25,  0.5 et  0.75
Pour element3 , on a mis 10. Il y aura 10 véhicuke sur le trajet à 0,0.  0.1,  0.2,  0.3, ....., 0.9

Il n'y a acucun vl à 1 car il serait à la fin du trajet et donc invisible !


*/
	public Trajets[] trajets;
	public int choixTrajet;
	
	// temps apparition entre chaque voiture choisi au hasard
	public float[] tempsApparition = new float[0]; // dans inspector donner le nombre de temsp puis les renseigner
	//choisis un temps aléatoire
	public int choixTemps;
	public float temps;
	
	public float pCar;
	public float pUtilitaire;
	public float pSemi;
	public float pMoto;
	
	public int choixPourcentage;
	
	//nombre de vl désiré au départ
	public int[] nbVlDepart;
	
	private bool finStart;
	
	void Start () {
		choixTemps = UnityEngine.Random.Range(0,tempsApparition.Length);
		choixTrajet = UnityEngine.Random.Range(0,trajets.Length);
		choixPourcentage = UnityEngine.Random.Range(1,101);
		
		if (pCar + pUtilitaire + pSemi + pMoto > 100)
			Debug.LogError("il y a plus de 100%");
		if (pCar + pUtilitaire + pSemi + pMoto < 100)
			Debug.LogError("il y a moin de 100%");
		
		if (nbVlDepart.Length != 0) {
			for (int i = 0; i < nbVlDepart.Length; i++) {
				CreationVlDepart (i);
			}
		}
		finStart = true;
	}
	
	// Update is called once per frame
	void Update () {
		if (finStart) {
			temps += Time.fixedDeltaTime;
			
			//automatiquement
			if (temps >= tempsApparition[choixTemps]) {
				CreationVl(trajets[choixTrajet].trajet, trajets[choixTrajet].vitesse, 0.0f);
				choixTemps = UnityEngine.Random.Range(0,tempsApparition.Length);
				choixTrajet = UnityEngine.Random.Range(0,trajets.Length);
				choixPourcentage = UnityEngine.Random.Range(0,101);
				temps = 0;
			} 
		}
	}
	
	void CreationVlDepart (int countTrajet) {
		float valeurFraction = 1.0f / nbVlDepart[countTrajet];
		print (countTrajet + "--" + nbVlDepart[countTrajet] + "--" + valeurFraction);
		float count = 0.0f;
		for (int i = 0; i < nbVlDepart[countTrajet]; i++) {
			CreationVl(trajets[countTrajet].trajet, trajets[countTrajet].vitesse, count); 
			choixPourcentage = UnityEngine.Random.Range(0,101);
			count += valeurFraction;
		}
	}
	
	public void CreationVl (GameObject trajet, float vitesseFraction, float fraction) { 
		string nom = "";
		int choixVl = 0;
		
		//voitures
		if (choixPourcentage < pCar) {
			choixVl = UnityEngine.Random.Range(1,17);
			nom = "Voitures/Car_";
			//utilitaires
		} else if (choixPourcentage < pCar + pUtilitaire) {
			choixVl = UnityEngine.Random.Range(1,14);
			nom = "Utilitaires/utilitaire_";
			//semi
		} else if (choixPourcentage < pCar + pUtilitaire + pSemi) {
			choixVl = UnityEngine.Random.Range(1,13);
			nom = "Poids_Lourds/semi_";
			//moto
		} else if (choixPourcentage <= pCar + pUtilitaire + pSemi + pMoto) {
			choixVl = UnityEngine.Random.Range(1,9);
			nom = "Motos/moto_";
		}
		
		
		GameObject instance = Instantiate(Resources.Load(""+nom+choixVl,typeof(GameObject))) as GameObject;
		
		//modif du non
		instance.name += trajet.name;
		//change la postion de l'object dans le scéne
		//donc transform = à l'obejct qui contient le script DebutRoute
		instance.transform.SetParent(transform);
	
		//set le parcour sur l'object
		instance.GetComponent<TrajetVl>().target_Path = trajet;
		//modif la vitesse de l'object
		instance.GetComponent<TrajetVl>().kmh = vitesseFraction;
		//change la fraction parcour du vl
		instance.GetComponent<TrajetVl>().fraction = fraction;	
	}
}




2 Par un clic sur un guibutton,( maintenant en v 4.6 , donc avec un canevas) , je lance une camera qui suit une trajectoire au dessus de ma route ( type caméra d'avion).

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Trajet ITWEEN changé en trajet DOTWEEN

Message par cayou66 » 07 Juil 2015 14:15

Bah parfait tu as tes event, plus besoin de faire ça dans l'Update.

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Trajet ITWEEN changé en trajet DOTWEEN

Message par freepl » 07 Juil 2015 14:17

Peux-tu être plus clair stp ?
Je commence à peine avec l'interface de la 4.6 :oops:

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Trajet ITWEEN changé en trajet DOTWEEN

Message par F@B » 07 Juil 2015 18:02

j'ai une solution freepl,

embauche un développeur
! :D ça sera fait en deux temps, trois mouvements! ;)

bon allez j'arrête de faire mon troll.....
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Trajet ITWEEN changé en trajet DOTWEEN

Message par cayou66 » 07 Juil 2015 19:31

Je vois pas le problème, tu as la fontion Start() qui est appelée lorsque ton objet est créé. Tu as qu'à lancer tes Tween là dedans.

Répondre

Revenir vers « (C#) CSharp »