Bonjour, je décide de me lancer dans le C# dans le but de développer mes propres jeux. Cela dit je n'ai jamais programmé et suite donc un néophyte total (notamment pour ce qui est du vocabulaire). Aussi désolé pour l'intitulé vague.
Voici mon problème : je suis en train de programmer les déplacements de mon personnage dans un jeu en 2D (je suis sur unity avec un système de Rigidbody 2D et programme sur Visual Studio). Je suivais parfaitement les consignes du tutoriel pour faire cela mais j'arrive à un résultat différent.
Mon problème est lié au saut, puisque je ne souhaite pas que mon personnage puisse sauter une fois en l'air. J'ai donc créé deux objets que j'ai placé sous mon personnage pour faire une ligne de détection du sol (qui doit être dans la zone du sol pour pouvoir autoriser le saut). Cela dit bien qu'ayant suivi les instructions le script ne fonctionne pas et l'erreur annoncée ne m'aide pas des masses...
Je vois une différence majeure avec le tuto en question, le terme "Physics2D" (qui est censé faire appel à un composant d'unity de ce que je comprends) n'est pas en vert dans mon script alors qu'il devrait vraisemblablement l'être. Cela dit je ne comprend pas pourquoi. Je pense que c'est le problème principal puisque peu importe mes tentatives pour changer quelque chose c'est toujours cette ligne qui à un problème. Des idées pour régler le problème ou me corriger si je me trompe ?
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 using UnityEngine; public class PlayerMovement : MonoBehaviour { public float moveSpeed; public float jumpForce; public bool isJumping = false; public bool isGrounded = true; public Transform groundCheckLeft; public Transform groundCheckRight; public Rigidbody2D rb; private Vector3 velocity = Vector3.zero; void FixedUpdate() { isGrounded = Physics2D.OverlapArea(groundCheckLeft.position, groundCheckRight.position); float horizontalMovement = Input.GetAxis("Horizontal") * moveSpeed * Time.deltaTime; if(Input.GetButtonDown("Jump") && isGrounded) { isJumping = true; } MovePlayer(horizontalMovement); } void MovePlayer(float _horizontalMovement) { Vector3 targetVelocity = new Vector2(_horizontalMovement, rb.velocity.y); rb.velocity = Vector3.SmoothDamp(rb.velocity, targetVelocity, ref velocity, .05f); if(isJumping == true) { rb.AddForce(new Vector2(0f, jumpForce)); isJumping = false; } } }
Merci
Partager