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

[C#] Direction de tir (problème)

Nawako
Nawako
Niveau 8
14 mars 2011 à 18:00:24

Salut,

J'aurais plutot écris sur le forum programmation mais il ne repondent jamais là bas.. Donc je remets ceci entre vos mains ^^

Je suis en train de creer un petit jeu de plateforme/shoot en 2d mais j'arrive pas a faire en sorte que lorsque le personnage regarde a gauche puis tir, que le projectile pars vers la gauche, puis en meme temps que le projectile part je me tourne vers la droite, il continue dans sa trajectoire.

En fait si je tire a gauche, ca marche, si je tire a droite, ca marche, mais si je me tourne et marche dans l'autre direction en meme temps le projectile suis ma direction... et c'est un peu chiant.

Si quelqu'un a une idée de ce que je pourrais utiliser?

Merci

Paulop
Paulop
Niveau 12
14 mars 2011 à 18:14:25

On va pas pouvoir t'aider sans voir ton code. http://pastebin.com/

Par contre, ce que tu décris est étrange, il me parait plus simple de coder le comportement que tu souhaites que celui que tu as actuellement

Nawako
Nawako
Niveau 8
14 mars 2011 à 18:16:44

Ben pour le code ça va etre un peu difficile.. ya pas mal de code et 2 classe (Joueur + Projectile).

Puis disons que c'est un peu.. le bordel ^^

Classe projectile :

http://pastebin.com/sgaBJUZ7

Classe joueur :

Nawako
Nawako
Niveau 8
14 mars 2011 à 18:17:35

Classe joueur :
http://pastebin.com/yPM61Da6

Désolé double post j'ai cliqué poster sans faire attention..

Bon sinon pour le code disons que j'ai essayé de resté organisé et logique mais y'avais pas mal de trucs que j'avais du mal a faire marché correctement donc j'ai essayé par ci par la et tant que ça marche j'me plaint pas trop tu vois..

Lapintade
Lapintade
Niveau 30
14 mars 2011 à 18:20:15

Pour résoudre ton problème, il faut rendre chaque projectile indépendant
A toi de voir comment tu peux structurer cela.

Nawako
Nawako
Niveau 8
14 mars 2011 à 18:20:31

Désolé du triple post mais j'pense avoir oublié un détail important :

J'ai codé ça comme ça;
En fait j'ai un spriteSheet, d'un personnage qui marche d'un coté (vers la droite) et pour le voir aller a gauche, j'utilise une surcharge de la méthode Draw dans XNA (SpriteEffects.FlipHorizontally) ce qui fait un effet mirroir en quelque sorte.

Bref quand je tire, je verifie donc si SpriteEffects.None / .FlipHorizontally, et d'apres ce parametre je dit au projectile d'aller dans tel direction.

Mais le probleme c'est que quand je bouge ben le SpriteEffects change evidemment.. Et j'ai pas trop d'autre idée de comment coder pour que le projectile sache dans quel direction aller (location.X + ou -)

Nawako
Nawako
Niveau 8
14 mars 2011 à 18:23:56

Hmm ouais effectivement je peut donc creer un nouvel objet pour chaque projectile mais est-ce que c'est bien de faire comme ça?

Disons que j'ai Balle projectile = new Balle(....);
Et qu'a chaque fois que j'essaie de tirer ca verifie si projectile.Destroyed == true;, si c'est true il fait encore une fois projectile = new Balle(....);

Je pense que ça pourrais marcher mais meme dans ce cas j'aurais besoin du parametre SpriteEffects pour savoir dans quel direction le faire bouger, et donc ca me reviens au meme probleme.

Pocolo
Pocolo
Niveau 10
14 mars 2011 à 18:25:20

Bah comme l'a dit Lapintade ça serait mieux que chaque projectile soit indépendant mais autrement tu pourrait juste mettre un int qui défini la direction du projectile.

Paulop
Paulop
Niveau 12
14 mars 2011 à 18:25:37

Oki c'est pas trop le bordel ça va ^^
Donc le problème est simple, ligne 94 de player, tu envoies spriteEffect, et ce spriteEffect est directement lié à la direction de ton bonhomme et à la direction de ton projectile, il faut que tu sépares tout ça :)

Nawako
Nawako
Niveau 8
14 mars 2011 à 18:28:18

Faut que je sépare donc, si j'ai bien compris, le spriteEffect lié a la direction du bonhomme, et le spriteEffect lié a la direction du projectile.

Mais encore une fois, pour le spriteEffect du projectile j'aurais besoin de celui lié a la direction du bonhomme..

Ou alors je t'ai pas bien compris? ^^
J'vois vraiment pas comment faire ça :s

Pocolo
Pocolo
Niveau 10
14 mars 2011 à 18:30:09

Ou sinon au lieu de mettre " _location.X -= _speed; " et " _location.X -= _speed; "

Tu mets juste _location.X += _speed;

Et quand tu appuis sur ta touche de tir (et seulement au moment où tu appuies dessus) tu vérifies la direction du perso et si il va vers la droite tu mets _speed a +4.5, autrement si il va vers la gauche tu mets _speed a -4.5;

Pocolo
Pocolo
Niveau 10
14 mars 2011 à 18:30:58

" Ou sinon au lieu de mettre " _location.X -= _speed; " et " _location.X -= _speed; " "

Correction:

Ou sinon au lieu de mettre " _location.X += _speed; " et " _location.X -= _speed; "

Nawako
Nawako
Niveau 8
14 mars 2011 à 18:32:41

Ah oui j'avais vraiment pas pensé a ça mais c'est simplissime en fait.. :O

Faut dire qu'apres 2 heures d'affilé que j'avais passé a me casser la tête pour trouver la solution a un problème d'animation tellement simple, j'ai pris la mauvaise habitude de penser trop compliqué pour n'importe quel problème meme minime..

Merci :)

Nawako
Nawako
Niveau 8
14 mars 2011 à 18:38:04

Merci beaucoup ça marche parfaitement ^^

Si j'ai un autre probleme je reviendrais ;)

Lapintade
Lapintade
Niveau 30
15 mars 2011 à 16:30:52

Peut être a tu commencé par coder, au lieu de commencer par penser. C'est une erreur assez classique.

Il faut coder, que quand tout est clair dans ta tête (moi je fais des croquis).

Quand on code, on ne réfléchi pas. Et on fais n'importe quoi si les choses sont pas claires.

Nawako
Nawako
Niveau 8
15 mars 2011 à 18:02:59

Ben en gros oui...

Mais je trouve ça un peu con de developper un algorithme pour quelque chose qui est censé être relativement simple.

Genre au lycée le prof de C# qui nous demande de penser et ecrire l'algorithme pour un programme aussi simple qu'une calculatrice avec une boucle while et des if else.

Du coup j'ai pris l'habitude de ne pas penser ^^

Nawako
Nawako
Niveau 8
15 mars 2011 à 18:11:56

Et d'un autre coté faut dire que là j'essaie plus d'apprendre a bien me servir du langage et d'essayer des choses.

A la base j'voulais juste essayer d'animer un personnage, apres j'me suis dit et si je le faisais bouger? et si je le faisais tirer? Puis si j'ajoute un ennemi ca fait pas de mal.. ah mais avec des collisions c'est mieux..

Donc c'est un peu difficile de faire des croquis pour ça tu vois ^^

Paulop
Paulop
Niveau 12
15 mars 2011 à 18:22:37

Au contraire, tu reprends ton précédent croquis, tu vois si tu peux t'en servir de base où si tu dois tout recommencer.

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