CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : XNA,MONOGAME . Probleme avec les collisions .

DébutPage précedente
1
Page suivantePage suivante
play92 play92
MP
Niveau 2
25 mars 2015 à 16:54:40

Lorsque mon perso avance vers le mur par exemple il touche le mur , il y a collision , mais comme il est toujour en contact il ne peux plus bouger du tout , je n'arrive pas à résoudre ce probleme :
protected override void Update(GameTime gameTime) { MouseState mouse = Mouse.GetState(); KeyboardState state = Keyboard.GetState(); if (state.IsKeyDown(Keys.Z)) { Rectangle newHitbox = new Rectangle(Heroposition.X, Heroposition.Y, 24, 28); bool collide = false; if (Heroposition.Y >= 0) { if (newHitbox.Intersects(Arbrepostion)) { collide = true; } if(!collide) Heroposition.Y -= Speed; } direction = Direction.Haut; } else if (state.IsKeyDown(Keys.S)) { Rectangle newHitbox = new Rectangle(Heroposition.X, Heroposition.Y , 24, 28); bool collide = false; if (Heroposition.Y < (screenHeight - 28)) { if (newHitbox.Intersects(Arbrepostion)) { collide = true; } if (!collide) Heroposition.Y += Speed; } direction = Direction.Bas; } else if (state.IsKeyDown(Keys.Q)) { Rectangle newHitbox = new Rectangle(Heroposition.X, Heroposition.Y, 24, 28); bool collide = false; if (Heroposition.X > 0) { if (newHitbox.Intersects(Arbrepostion)) { collide = true; } if (!collide) Heroposition.X -= Speed; } direction = Direction.Gauche; } else if (state.IsKeyDown(Keys.D)) { Rectangle newHitbox = new Rectangle(Heroposition.X, Heroposition.Y, 24, 28); bool collide = false; if (Heroposition.X < (800 - 166)) { if (newHitbox.Intersects(Arbrepostion)) { collide = true; } if (!collide) Heroposition.X+=Speed; } direction = Direction.Droite; } }

play92 play92
MP
Niveau 2
25 mars 2015 à 16:55:57

Je tiens à précisé que les if (heroposion. sont juste pour que le perso ne sorte pas de l'écran , aucun rapport avec le truc des collisions

adamo12323 adamo12323
MP
Niveau 7
25 mars 2015 à 18:40:04

tu fait un truc genre tu save la position du hero avant la colision

lastx = Heroposition.X
lasty = Heroposition.Y
et si il y'a collision gauche ou droite : Heroposition.X = lastx
collision haut ou bas : Heroposition.Y = lasty

Korback Korback
MP
Niveau 10
25 mars 2015 à 21:44:39

Ton personnage a-t-il une animation ?

Si oui, c'est parce que lorsque il est en contact avec ton mur, puis que tu retournes en arrière, il doit y avoir un pixel qui gêne et qui est dana le mur.

adamo12323 adamo12323
MP
Niveau 7
26 mars 2015 à 01:57:04

Animation ou pas la collision est fait avec la fonction rectangle.intersect donc aucun rapport si je regarde le code le problème est plutôt situé dans le fait que le personnage avance dans l'objet il y'a collision mais il reste dans l'objet donc il y'a toujours collision... il faut donc faire reculé l'objet au moment de la collision pour qu'au prochaine frame l'objet re avance et ce fasse repoussé encore et encore infiniment pour ne pas qu'il sois toujours en collision

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment