NbJ'ai également poster ce topic http://answers.unity3d.com/questions...questions.html en Anglais sur le forum officiel Unity Answer mais sans réponse jusqu’à maintenant)

Bonjour tout le monde ,

je rencontre actuellement plusieurs difficultés et problèmes en développant avec unity , pourriez vous m'aider svp a résoudre ces problèmes , merci infiniment d'avance :

1- je développe actuellement tout seul un jeu vidéo de plate forme 2d ,j'utilise comme joueur une ressource de chat acheté avec le logiciel d'animation spriter pro sur steam puis transféré avec l'outilde spriter pro vers unity qui mesure a peut pré 2 mètre 56 cm en longueur plus ou moins y inclut ces oreilles (j'utilise plusieurs polygons collider pour chaque partie du corps du chat assemblé après avec un composite collider avec masse automatique et density 1 et pas de physic material 2d),

depuis le début du développement de mon projet , je rencontre toujours un problème de gravité et d'accélération de gravité qui influencent d'une façon erroné le level design et les autres paramètres comme le jump force value , le move force value et run force value et la courbe de saut, en gros la courbe de saut était toujours en forme de triangle aigus même a faible gravité ou avec n'importe quel valeur de move ou de run force et le saut ou chute avaient un gravité trop légère quelques soit la longueur de la chute ,

j'ai posé cette question auparavant sur ce forum (voir ce lien)

http://answers.unity3d.com/questions...t-or-fall.html

et j'ai eu une réponse , ça a corrigé partiellement ces problèmes la ,mais pas complètement ,

actuellement la courbe de saut est correct (demi cercle) avec certaine valeurs de move force pour chaque valeur de gravité , mais le problème c'est que j'attribue la valeur de gravité très approximativement sans aucune précision ou sans aucune logique derrière , avec gravité en y initiale entre -50 et -100 malgré cela elle est toujours incorrecte (pas satisfait de ces valeurs car la chute est toujours légèrement lente et pas rapide comme souhaité malgré que ces valeurs de gravités sont anormalement fortes ) et avec move force qui devient rapide plus que le nécessairepour ces valeurs de gravités pour garder l'allure de courbe de saut demi circulaire ,sans parler de l’accélération de gravité qui est faible et lente pour des courtes chutes comme le simple saut et au contraire trop rapide pour une grande chute (plus la chute est grande plus la vitesse de gravité augmente trop rapidement) même pour une valeur de gravité de 15 seulement ,

sinon j'ai aussi remarqué qu'il n’y a pas de grande différences entre valeur de gravité de 15 et de 100 pour le saut ,

voici une partie du code source du projet ci dessous à la fin de mon message (celle de saut et de déplacement) ,

comment corriger ce problème complètement et quels sont tout les valeurs exactes pour mon personnage (move force, run force , jump force , gravity value , density , mass etc)*?

2-parfois je rencontre problème dans mon jeu , le joueur se coince entre deux plate formes qui translatent par exemple ,alors je crois que la meilleure solution pour résoudre ce problème est que lors du coinçage , le joueur échoue instantanément , mais comment implémenter cette solution a ce problème de la façon la plus idéale*?

3-aussi lorsque les plate formes translatent parfois ils se heurtent lors de leurs translation avec le joueur ou d'autres game objects solides (avec trigger false) , je souhaiterais dans ces deux cas que les plateformes translatent dans le sens contraire dés qu'ils rencontre un objet solide ou qu'ils arrêtent leurs translations et restent sur place avec possibilité de translation par la suite seulement dans le sens opposé ou la plate forme en question n'est pas bloqué comment implémenter la solution la plus idéale et correcte pour cela*?

4-comment savoir quand une animation quelconque a terminé d’être joué (ça veut dire la fin d'une animation) pour pouvoir réalisé d'autres choses a la suite en conséquence a la fin de l'animation
Merci infiniment et bonne journée*?

5-quelle est la meilleure solution pour un level design le plus rapide possible pour un seul niveau de plate forme metroid mania 2d avec caméra fixe et plusieurs plans comme dans you have to win the game , de taille petite voir moyenne (une taille de carte égale a celle du jeu you have to win the game voir légèrement plus grande) avec une seule graine pour tout les gameobjects (la même meilleure graine) en cas ou c’est procédurale (avec entre une dizaine a une vingtaine de types de gameobjects et 3000 game objects au total )

et est ce que cette meilleure solution peut créer le niveau complet (un niveau bien équilibré bien dosé avec une courbe de difficulté bien équilibré un challenge bien dosé avec une très petite partie faite à la main )en seulement et maximum 2 mois a 2 mois et demi au grand max ,

Et est ce que c'est également faisable de créer le niveau avec les méthodes classique et à la main avec une équipe dédié de plusieurs personnes pour la même durée de développement souhaitée,

Merci encore une fois , désolé pour le dérangement et bonne journée ,

Cordialement ,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
void FixedUpdate ()
             {           
                          if ((!Input.GetKey (KeyCode.RightArrow) && !Input.GetKey (KeyCode.LeftArrow)) && Input.GetAxis ("L_XAxis_1") == 0 && Input.GetAxis ("DPad_XAxis_1") == 0) {
                                     h = 0;
                              rigidBody.velocity = (new Vector2 (h, rigidBody.velocity.y));
                                     wait = true;
                                     anim.SetFloat ("speed", 0f);
                         } else if (!Input.GetKey (modes.boutonX) && !Input.GetKey (KeyCode.Joystick1Button1)) {
                                   if (Input.GetKey (KeyCode.RightArrow) || Input.GetAxis ("L_XAxis_1") > 0 || Input.GetAxis ("DPad_XAxis_1") > 0) {
                                         h = 1;
                                        anim.SetFloat ("speed", 1f);
                                     }
                                  if (Input.GetKey (KeyCode.LeftArrow) || Input.GetAxis ("L_XAxis_1") < 0 || Input.GetAxis ("DPad_XAxis_1") < 0) {
                                         h = -1;
                                         anim.SetFloat ("speed", 1f);           
                                     }
                                     wait = false;
                                  rigidBody.velocity = (new Vector2 (h * moveForce, rigidBody.velocity.y));    
                                     anim.SetBool ("X", false);    
                          } else if (Input.GetKey (modes.boutonX) || Input.GetKey (KeyCode.Joystick1Button1)) {        
                                     if (!toJump) {      
                                  if (Input.GetKey (KeyCode.RightArrow) || Input.GetAxis ("L_XAxis_1") > 0 || Input.GetAxis ("DPad_XAxis_1") > 0) {
                                             h = 1;
                                             anim.SetFloat ("speed", 1f);
                                         }
                                  if (Input.GetKey (KeyCode.LeftArrow) || Input.GetAxis ("L_XAxis_1") < 0 || Input.GetAxis ("DPad_XAxis_1") < 0) {
                                             h = -1;
                                             anim.SetFloat ("speed", 1f);     
                                         }
                                         wait = false;
                                  rigidBody.velocity = (new Vector2 (h * maxSpeed, rigidBody.velocity.y));
                                         anim.SetBool ("X", true);
                                     }
                                 }
                             Jump ();   
             }
         void Jump ()
             {           
          if (Input.GetKeyDown (modes.spaceButton) || (Input.GetAxisRaw ("Jump") > 0 && jump)) {
                     if (jumpOk) {
                         if (jumpNumber >= 0) {      
                             jumpNumber--;
                             up = true;           
                             toJump = true;                 
                          rigidBody.velocity = new Vector2 (rigidBody.velocity.x, jumpForce);                      
                             jump = false;
                         }
                     }
                 }    
          if (Input.GetAxisRaw ("Jump") == 0 && !Input.GetKeyDown (modes.spaceButton)) {                 
                     jump = true;     
                 }
             }