CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Unity et C#] Problème de code

230Volt
230Volt
Niveau 8
24 mai 2013 à 04:01:52

Bonsoir à tous,

Je débute tout doucement dans le monde de Unity, et jusqu'ici j'avançais bien, mais me voilà bloqué sur un truc "tout simple" je pense mais moi je vois pas.

Alors soit j'ai tout faux dans ma manière de faire soit il y a un truc que je rate.

J'ai un personnage qui marche bien et saute, maintenant je m'attaque à la fonction qui fait courir si on maintient Shift.

Le code : http://pastebin.com/2t6yW495

Donc le personnage marche très bien (l'animation est prise en charge par un autre script ) donc mon perso marche normalement mais quand j'appuie sur Shift, l'animation de course ne se charge pas et le perso continue à marcher normalement, si je ne le fais pas avancer ( donc je n'appuie sur aucunes touches) et que j'appuie sur Shift l'animation se charge correctement mais il court sur place, ( encore une fois l'animation est chargée par l'autre script qui lui fonctionne) et n'avance pas physiquement dans l'espace.

D'après vous d'où peut venir ce problème ?

Merci de votre aide.

gandoula
gandoula
Niveau 2
24 mai 2013 à 04:13:58

alors,
déjà de 1, enlève le GetComponent<>() de l'update, avoir a l’appeler a chaque image est un gouffre a ressources(et donc une mauvaise habitude...qui deviendra un réflexe).
définit ton private CharacterController controller; au début et appelle le controler = GameObject.GetComponent<CharacterController>(); lors de la void Start().

voila maintenant pour ton cas, j'aimerais savoir ce que tu utilise pour animer: le classique Animation.Play(); ou bien un plugin comme 2DToolkit.

sinon pour t'aider (j’espère).
au début de ton script ajoute en dehors de la classe
public enum PlayerState { IDLE, MARCHE, COURSE, ....}
et dans ta classe definit un public PlayerState playerState;

le principe consiste a créer une pseudo-Finite State Machine pour ton personnage.

avec une void() qui va décider de quel état est le personnage. et dans ton script d'animation tu jouera tes animation selon le state.

regarde mes deux scripts qui gèrent les déplacements et animation d'un personnage de plateformes(j'ai essayé de commenter en français):

Movements: http://pastebin.com/L0HkZMYJ
Animations: http://pastebin.com/E638izub

230Volt
230Volt
Niveau 8
24 mai 2013 à 04:29:44

Ok pour le GetComponent dans l'Update, je ne savais pas , j'aurai au moins appris ça déjà.

Ensuite j'utilise le classique Animation.play()

Ensuite je vais prendre le temps de bien regarder tes scripts, je ne suis pas encore très à l'aise avec toutes les notions donc j'ai besoin de temps pour tout bien comprendre, mais sinon je crois comprendre l'idée général, de créer des états, et en fonction de tel ou tel facteur ces états changent, ici en fonction de sa position ( au sol ou non ) et de sa vitesse ?

dans ce cas la si je devais copier ton schéma si je voulais faire une marche et une course, je devrai déclarer une variable ou dans ce cas la un état et lui donner une valeur en fonction de la vitesse de mouvement qui change si j'appuie sur Shift ?

Je sais pas si je suis très clair ? j'espère au moins ne pas avoir tout compris de travers.

Merci de ton aide dans tous les cas

gandoula
gandoula
Niveau 2
24 mai 2013 à 08:55:10

1) tu ajoutera ton état Course dans l'enum
2) define un bool isRunning; au debut de la classe
3) dans la function Update() tu gérera l'input:
if(Input.GetKeyDown(KeyCode.Shift)){
isRunning = true;
}else {isRunning = false}

4) dans la FixedUpdate (NB: vu que tu utilise un CharacterController):
if(isRunning){
tonblabla pour courir ici;
}

5) mnt dans ta fonction qui Check les States:
if(isRunning) { state = PlayerState.Course; }

6) maintenant dans ton script d'animation un simple
if(state == PlayerState.Course) { ... }

230Volt
230Volt
Niveau 8
24 mai 2013 à 15:51:52

Merci pour tout ça fonctionne niquel, j'ai du m'y reprendre deux ou trois fois, mais maintenant c'est piger :)

Merci !

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware