[Résolu] Problème vitesse objet

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Assassins121
Messages : 4
Inscription : 15 Août 2013 21:49

[Résolu] Problème vitesse objet

Message par Assassins121 » 21 Sep 2014 19:55

Bonjour,
Je suis en train de créer un jeu ou l'on doit esquiver des météorites, mais je suis confronter a un problème:

Code : Tout sélectionner

void Start () {
    InvokeRepeating("createObstacle",1.5f,1.5f);
}
void createObstacle(){
    float vitesse = -((Random.Range(490,495)) * Time.deltaTime);
    int alea = Random.Range(1,4);
    GameObject instance;
    if(alea == 1)
    {
        instance = Instantiate(meteor1,new Vector3(transform.position.x, transform.position.y - Random.Range(-3f,4.3f),transform.position.z), Quaternion.identity) as GameObject;
    }
    else
    {
        if(alea == 2)
        {
            instance = Instantiate(meteor2,new Vector3(transform.position.x, transform.position.y - Random.Range(-3f,4.3f),transform.position.z), Quaternion.identity) as GameObject;
        }
        else
        {
            instance = Instantiate(meteor3,new Vector3(transform.position.x, transform.position.y - Random.Range(-3f,4.3f),transform.position.z), Quaternion.identity) as GameObject;
        }
    }
    instance.rigidbody2D.velocity = new Vector2(vitesse,0f);
    Destroy(instance,6f);
}
Des fois la météorite à une vitesse inférieur ou supérieure à la vitesse aléatoire.
Avec Debug.log on peut voir que certaine météorite on une vitesse de -3.8 or elle devrait être entre -9.7 et -9.9
Merci d'avance.
Dernière édition par Assassins121 le 22 Sep 2014 13:11, édité 1 fois.

Avatar de l’utilisateur
Scorpionnocrag
Messages : 155
Inscription : 10 Juin 2014 13:27

Re: Problème vitesse objet

Message par Scorpionnocrag » 21 Sep 2014 20:05

Tu parle de la vitesse?

Code : Tout sélectionner

float vitesse = -((Random.Range(490,495)) * Time.deltaTime);
??
Envie de vous mettre à la création de jeux vidéos avec Unity? -> https://www.youtube.com/channel/UCUgcAR ... tXjTqRsuUQ

Assassins121
Messages : 4
Inscription : 15 Août 2013 21:49

Re: Problème vitesse objet

Message par Assassins121 » 21 Sep 2014 21:07

Bonjour,
Oui je parle bien de la vitesse.

Code : Tout sélectionner

float vitesse = -((Random.Range(490,495)) * Time.deltaTime);

Elessar Elanesse
Messages : 100
Inscription : 13 Nov 2012 14:44

Re: Problème vitesse objet

Message par Elessar Elanesse » 21 Sep 2014 22:52

Si tu veux qu'elle soit constante entre 2 Valeurs fixe, pourquoi tu utilises : Time.deltaTime ?

Si tu fais :

Code : Tout sélectionner

float vitesse = -Random.Range(9.7f,9.9f);
Ca te retournera ton Float, dans le Range que tu veux. oO

Là de ce que j'ai vu, tu as du faire un Print de ton Time.deltaTime et ensuite faire un produit en croix pour avoir 490*Time.deltaTime = 9.7.
Si je ne me trompe pas, le Time.deltaTime dépend de la puissance de l'Ordinateur.
The time in seconds it took to complete the last frame (Read Only).
(Ainsi certains auront 0.02s - 0.017s - 0.019 etc...)

Donc en fonction de la puissance de l'Ordinateur, tes météorites iront plus ou moins vite.

Toi tu parles d'une Constante, aucune utilité de faire 'Time.deltaTime'.
Développeur C# / Unity3D | Game Designer de Formation
Développeur Java / Php - En cours de Formation

Projets en Cours :
- Exode (Univers META-Pere)

• If you know the enemies and know yourself, you don't need to fear the result of a hundred battles •

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Problème vitesse objet

Message par giyomuSan » 22 Sep 2014 01:49

Elessar Elanesse a écrit :Si tu veux qu'elle soit constante entre 2 Valeurs fixe, pourquoi tu utilises : Time.deltaTime ?

Si je ne me trompe pas, le Time.deltaTime dépend de la puissance de l'Ordinateur.
The time in seconds it took to complete the last frame (Read Only).
(Ainsi certains auront 0.02s - 0.017s - 0.019 etc...)

Donc en fonction de la puissance de l'Ordinateur, tes météorites iront plus ou moins vite.

Toi tu parles d'une Constante, aucune utilité de faire 'Time.deltaTime'.
Euh non en fait le time delta est justement fais pour conpenser les diiferences de capacite de l ordi.

Le delta sera plus grand sur une machine de faible capacite et a linverse plus petit sur une machine performante, du coup ca ajuste justement les valeures de maniere a eviter le probleme

Tu semble utiliser la physique pour tes meteor non ?

et sinon ouais utiliser un constant de base , et juste ajouter a cette constante la valeur de random.

Code : Tout sélectionner

[SerializeField]
private float maxRandomSpeedFactor = 0.2f;
private const float BASE_SPEED = 9.7f;

// dans la phase de creation...
var speed = (Random.Range(0f, maxRandomSpeedFactor) + BASE_SPEED ) * -1f;

Assassins121
Messages : 4
Inscription : 15 Août 2013 21:49

Re: Problème vitesse objet

Message par Assassins121 » 22 Sep 2014 13:10

Bonjour,
Merci sa fonction, mais normalement tous objet en mouvement ne doit pas être multiplié par Time.deltaTime pour éviter tous problème ?

Pico57
Messages : 576
Inscription : 19 Fév 2013 16:30
Localisation : Cluny

Re: Problème vitesse objet

Message par Pico57 » 22 Sep 2014 13:56

Assassins121 a écrit :Bonjour,
Merci sa fonction, mais normalement tous objet en mouvement ne doit pas être multiplié par Time.deltaTime pour éviter tous problème ?
Si mais le time.deltatime ne doit pas etre utilisé à l'initialisation de ta vitesse, mais plutot dans l'update, au moment où tu déplaces les objets. A l'initialisation, tu détermines une vitesse figée. Puis en utilisant time.deltatime dans l'update avec la fonction qui fait réellement bouger l'objet, c'est là que tu permet d'avoir une vitesse constante, quelque soit la puissance du PC ou même si ton PC se remet à ramer.

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: [Résolu] Problème vitesse objet

Message par artemisart » 22 Sep 2014 17:51

Quand tu indique une vitesse non (ex : velocité du rigidbody).
Quand tu ajoute une vitesse pour bouger quelque-chose sur une frame oui (ex : position += speed * deltaTime).

Assassins121
Messages : 4
Inscription : 15 Août 2013 21:49

Re: [Résolu] Problème vitesse objet

Message par Assassins121 » 22 Sep 2014 22:07

Bonjour,
Merci pour vos réponses.

Répondre

Revenir vers « Scripting »