Bonjour,
Nouveau dans la communauté, je souhaite vous demander quelques éclaircissements pour mon apprentissage du C#.
Je travaille aujourd'hui au développement d'un petit projet de jeu que j'ai en tête depuis pas mal de temps (Rien de trop ambitieux pour le démarrage, c'est juste pour travailler mon apprentissage sur quelque chose de concret). J'essaye aujourd'hui de me former concrètement sur Unity, ayant enfin le temps nécessaire.
Mon idée se présente, en terme d'aire de jeu et de positionnement caméra un peu comme un Bomberman, soit vu du dessus. Le personnage, ses déplacement et le terrain de jeu se présenteront exactement de la même façon.
C'est là ou intervient le petit script de déplacement pour le personnage que j'ai tricoté, en épluchant les différentes variantes que j'ai pu trouver sur la toile.
Le soucis c'est que la plupart des scripts pour des déplacements 2D que l'on trouve expliqués le sont pour des jeux de type plateforme, façon Mario à l'ancienne mode. Le déplacement est donc limité à l'axe des X, avec la possibilité de faire sauter le personnage. Nulle part je n'ai pu trouver de script permettant de contrôler le personnage à la fois sur l'axe des X et celui des Y.
Voici donc le code que j'ai pu recomposer pour arriver à mes fins :
Évidemment il y a un soucis^^
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 using UnityEngine; using System.Collections; public class chocoboController : MonoBehaviour { public Vector2 forceSaut = new Vector2(0,500); // Update is called once per frame void Update () { Movement (); } void Movement () { if (Input.GetKey (KeyCode.RightArrow)) { transform.Translate (Vector2.right * 4f * Time.deltaTime); transform.eulerAngles = new Vector2 (0, 0); } if (Input.GetKey (KeyCode.LeftArrow)) { transform.Translate (Vector2.right * 4f * Time.deltaTime); transform.eulerAngles = new Vector2 (0, 180); } if (Input.GetKey (KeyCode.A)) { transform.Translate (Vector2.up * 4f * Time.deltaTime); transform.eulerAngles = new Vector2 (0, 0); } if (Input.GetKey (KeyCode.Q)) { transform.Translate (Vector2.up * 4f * Time.deltaTime); transform.eulerAngles = new Vector2 (180, 0); } /* if (Input.GetKeyDown (KeyCode.Space)) { rigidbody2D.AddForce (forceSaut); } */ } }
Les quatre directions fonctionnent. mais je crois que le système "180°" pour déterminer la direction pose soucis : en effet, dès que j’appuie sur la touche permettant de faire redescendre le personnage, celui-ci se tourne immanquablement vers la droite. De sorte que même quand je demande au perso à la fois d'aller vers le bas et la gauche, celui-ci monte et part à droite.
Pourriez vous m'éclairer sur une solution viable? Je ne demande pas à ce que l'on me serve ce script tout cuit dans le bec, l'idée c'est surtout de comprendre la démarche pour arriver au bon résultat, en assimilant correctement la philosophie de ce langage.
Merci pour vos retours
Partager