Oki, mais j éspère (et je pense) que ça ne te pose aucun problème si je fais tout ça en JS
Alors j'ai avancé dans mon projet et :
Le problèmes de FPS est inhérent au logiciel, quand je lance le jeu en "Build and run" il n'y a aucun problème, donc pas besoin de corriger.
Pour la musique, j'ai appelé la fonction "DontDestroy(this)" (ou un truc du genre) mais j''ai un problème, c'est que du coup comme prévu la musique continue, mais ça en déclenche une autre, du coup ça devient vite insupportable
C'était un comportement prévisible, puisque tu instancies la classe une nouvelle fois à chaque fois que tu charges ta partie.
Tu peux répondre à cette problématique de plusieurs manières. J'aurai en premier pensé à mettre en place un singleton pour la musique. Ainsi tu ne pourras avoir qu'une instance de la classe.
Ou alors, avant de charger la nouvelle partie, tu mets dans PlayerPrefs le moment de la musique où tu en es actuellement, et quand tu finis de charger, tu remets la musique au moment indiqué dans le PlayerPref (via la méthode Start()). Si le jeu est un peu long à charger, tu risque d'avoir un instant sans musique. Je conseil plutôt la première solution donc.
Je lis des Singleton depuis quelques heures et je comprend pas vraiment..
Un ami m'a conseillé d'essayer de coder un script ou de modifier mon script de musique/reload pour détruire l'objet musique qui se recréer à chaque reload, ça pourrait être une bonne idée non ?
Le 20 mai 2016 à 11:53:42 Pika-Hunter a écrit :
Un ami m'a conseillé d'essayer de coder un script ou de modifier mon script de musique/reload pour détruire l'objet musique qui se recréer à chaque reload, ça pourrait être une bonne idée non ?
Ben un singleton, ça va empêcher de se créer un autre script, s'il est déjà présent dans la scène, donc c'est plus ou moins ça. Si tu détruits le script, c'est bon aussi, c'est moins propre donc plus dur à maintenir si tu veux modifier ton jeu par la suite, mais si ça reste un petit jeu ça suffira sans problème.
Mon prof de JV m'a conseillé de faire un "player pref"' le but étant de :
- Mettre un start en false qui va passer en "true" à la lancer du jeu
- Programmer le fait que la musique se lance UNIQUEMENT quand la valeur est en false, du coup elle va se lancer au début du jeu normalement. Pour ne pas se relancer quand le jeu va reload, car la valeure si dessus va rester en true.
- Faire que lorsque je ferme le jeu, la valeur redevienne "false" pour ne pas géner le prochain démarrage.
Sur le papier je comprend mais la réalisation c'est une autre histoire
Vous en pensez quoi ?
Ah la la.
void Start () {
if (!PlayerPrefs.HasKey("Music"))
PlayerPrefs.SetInt("Music", 0):
if (!PlayerPrefs.GetInt("Music")) {
PlayerPrefs.SetInt("Music", 1):
Instantiate (MusicObject);
}
}
Le 20 mai 2016 à 18:32:25 gorz94 a écrit :
Ah la la.void Start () {
if (!PlayerPrefs.HasKey("Music"))
PlayerPrefs.SetInt("Music", 0):
if (!PlayerPrefs.GetInt("Music")) {
PlayerPrefs.SetInt("Music", 1):
Instantiate (MusicObject);
}
}
Et je mets ça où ? Dans le game object ?
Nan. Tu le met sur un objet sur ta scene.
Tu dois définir la variable MusicObject comme étant un préfab de l'object qui fait ton son.
Du coup je mets ça sur la Musique ? En C/C tout con ?
Désolé de toutes les questions cons je suis vraiment un pur débutant
J'ai trouvé par hasard un singleton assez simple à utiliser (il suffit d'hériter ta classe) :
https://github.com/kleber-swf/Unity-Singleton-MonoBehaviour/blob/master/Singleton.cs
Si une ligne est obsolète, normalement il te met une petite fenetre pour te le dire, et si tu cliques sur go Ahead, il te la corrige automatique.
Pour info, dans ton code, tu ne récupères jamais le composant RigidBody.GetComponenet<RigidBody2D>().AddForce(forsaut);
Je ne sais pas si c'est du à ça.
Edit :
http://docs.unity3d.com/ScriptReference/GameObject-rigidbody.html
C'est bien ça le problème. rigidbody n'est plus une propriété d'un Gameobject, mais un composant à récupérer.
Justement c'est bien ça mais ensuite je ne sais pas comment l'utiliser... pour "donner" de la force lorsque j'appuie sur une touche?
Ben c'est ça, c'est la méthode AddForce sur le rigidBody. Vérifie que tu as bien un rigidBody2D (et bien 2D !) sur le gameobject qui contient ton script.
Coucou, je vois pleins de tutoriels sur internet qui disent de déclarer les attributs en public, pour les voir apparaître dans la fenêtre d'unity. Je trouve que ça va à l'encontre de la POO, peut-on faire autrement ? Merci
Bijour j'ai une question
J'ai fais une ptite map sous blender avec comme départ un seul cube (et pleins d'extrudes), puis je l'ai importé sur unity dimensionné et tout, sauf que maintenant que je prend un matériau et que je le fout dessus, ça n'a aucun effet alors que pourtant le matériau est bien dans mes components
Comment fauit faire ?
Merci
Le 30 mai 2016 à 12:37:34 Srussega a écrit :
Coucou, je vois pleins de tutoriels sur internet qui disent de déclarer les attributs en public, pour les voir apparaître dans la fenêtre d'unity. Je trouve que ça va à l'encontre de la POO, peut-on faire autrement ? Merci
Yep :[SerializeField]
private int variable;
PS : Le paradigme d'Unity n'est pas la POO, mais la programmation Orientée Composant. Mais c'est quasiment similaire.
Ok merci, ça m'apporte pas mal d'éclairage
Bonjour/Bonsoir a tous , je viens vers vous pour un coups de main , voilà enfaite je travaille sur un fps et je travaille sur deux animations , a savoir l'animation de recul avec l'arme quand on tire et l'animation de rechargement . Les animations sont casiment prêtes ( se sont des animations basiques mais améliorer avec le temps ) et j'aimerai bien faire en sorte que a chaque fois que je tire avec l'arme l'animation s'active , et je n'ai trouvé aucun tuto en javascript pour les animations etc .
Du coups en regardant la documentation d'unity j'ai vu qu'il y avait un grand nombre d'animation et celle que je veux mettre en place je ne sais pas dans quel catégorie elle est ... peut etre , AnimationClip ?
je sais que je dois implementer le code dans la fonction Update mais aprés je sais pas par ou commencer .
Dois-je ecrire dans le script ou j'ai mis toute les variable a savoir les munitions var , la vitesse d'ejection des balles etc ? sachant que ce script est destiné au gameobject eject en sortie de canon et que pour l'animation je dois utiliser le gameobject de l'arme ...
Merci d'avance pour les futures réponses =)
Bonjour.
Je te conseil de suivre un tuto sur le système d'animation d'Unity.
Mais en gros, tu as pour un gameobject un AnimatorControlleur, qui lui, peut avoir plusieurs animations (AnimationClip dans le code) et plusieurs paramètres qui lui indique quand utilisé les animations.
GameObject Arme;
...
if (munitions < 0 || Input.GetKeycode('R'))
Arme.GetComponent<Animator>().SetTrigger("Recharger", true);
J'ai pas testé le code, mais c'est pour te donner une idée.
A savoir que je te conseil de faire une fonction dédié pour chaque activité. Par exemple, une fonction pour recharger, et dedans tu pourras faire plusieurs traitements et l'appeler de différents endroits.
Est-ce clair ?
Bonjour merci pour ta réponse rapide , je comprend un peu mieux .
Parcontre pour le code , je dois creer un nouveau script je l'appelle par exemple "RecoilAnimation" et une fois que j'ai terminé le code je le fais glisser sur le gameobject de l'arme ?