[Résolu] Pourquoi la balle revient-elle tout seule ?
J'y perd mon latin, et en plus je ne parle pas latin...😁 (Et j'ai passé du temps, je vous promets... donc c''est l'heure d'appeler à l'aide 🤣)
Screen = { } -- dimensions fenêtre Love Screen.largeur = love.graphics.getWidth() Screen.hauteur = love.graphics.getHeight() Balle1 = { } Balle1.largeur = 15 Balle1.hauteur = 15 Balle1.vx = 3 Balle1.vy = 2 Balle1.isOn = true Balle1.HitCompteur = 0 Pad = { } Pad.hauteur = 150 Pad.largeur = 17 Pad.x = 0 Pad.y = Screen.hauteur / 2 - Pad.hauteur / 2 Pad.decalageBordGauche = 3 Pad.decalageHautBas = 1 Pad.vy = 8 Font = love.graphics.newFont("PixelMaster.ttf", 30) love.graphics.setFont(Font) function Scores() score = ("Balle 1 : " ..Balle1.HitCompteur) end function Controles() -- Contrôler Pad avec touches if love.keyboard.isDown("a") then if Pad.y > 0 + Pad.decalageHautBas then Pad.y = Pad.y - Pad.vy end end if love.keyboard.isDown("q") then if Pad.y + Pad.hauteur < Screen.hauteur - Pad.decalageHautBas then Pad.y = Pad.y + Pad.vy end end end -- -- ====== FONCTIONS LOVE ================== -- function love.load() -- Centrer Balle1 Balle1.x = Screen.largeur / 2 - Balle1.largeur / 2 Balle1.y = Screen.hauteur / 2 - Balle1.hauteur / 2 end function love.update() Controles() Scores() -- ====== BALLE 1 ==================== -- mise en mouvement Balle1.x = Balle1.x + Balle1.vx Balle1.y = Balle1.y + Balle1.vy -- Collisions : -- sur bord Bas if Balle1.y + Balle1.hauteur > Screen.hauteur then Balle1.vy = Balle1.vy * -1 end -- sur bord Haut if Balle1.y < 0 then Balle1.vy = Balle1.vy * -1 end -- sur bord Droit if Balle1.x + Balle1.largeur > Screen.largeur then Balle1.vx = Balle1.vx * -1 end -- sur Pad : la Balle1 entre-t-elle "quelque part" sur le terrain où circule le Pad ? if Balle1.x < Pad.x + Pad.largeur then -- Si oui, ensuite : la Balle1 rencontre-t-elle la surface du Pad ? if Balle1.y + Balle1.hauteur > Pad.y and Balle1.y < Pad.y + Pad.hauteur then -- dans ce cas la Balle1 a tapé la surface du Pad, et repart en sens inverse : Balle1.vx = Balle1.vx * -1 -- Incrémentation du compteur 1 Balle1.HitCompteur = Balle1.HitCompteur + 1 -- et re-positionnement de la Balle 'pile poil' sur le Pad -> Balle1.x = Pad.x + Pad.largeur end end end function love.draw() love.graphics.setBackgroundColor(0,0.2,0.3,1) -- Compteurs love.graphics.print(score, 500, 10) -- Pad love.graphics.rectangle("fill", Pad.x + Pad.decalageBordGauche, Pad.y, Pad.largeur, Pad.hauteur, 5, 5, 2 ) -- Balle1 if Balle1.isOn == true then love.graphics.rectangle("fill", Balle1.x, Balle1.y, Balle1.largeur, Balle1.hauteur) end end
Voilà ma réponse en vidéo :
@iguanodon Déjà à vue de nez tu ne contrôles pas correctement la collision horizontale avec la raquette, tu ne regardes que si la balle est :
Balle1.x < Pad.x + Pad.largeur
Ce qui équivaut à ne regarder que si la balle est à gauche du bord droit du pad, mais tu ne contrôles pas si elle est également à droite du bord gauche (en gros tu dois regarder 2 choses : la balle est elle entre le bord gauche et le bord droit du pad).
Merci, mais pourtant p22 du support de cours, "Faire rebondir la balle sur la raquette", il n'est question que de balle X, au contact de Pad x + largeur du Pad pour que ça fonctionne, ce que je conçois bien.
Pourquoi maintenant contrôler si la balle est entre le bord gauche le le droit du pad ? Pourquoi devrait-elle "entrer" dans le pad ?
Je me fourvoie sans doute dans un raisonnement qui n'est pas le bon. Apprentissage < comprentissage... 😁 certes, mais je n'avance plus..
Peux tu me dire de quel support de cours il s'agit (et de quel atelier du coup car tu ne l'as pas précisé).
Car il n'y a pas de support de cours sur mon atelier Casse brique en Lua :).
Posté par: @iguanodonif Balle1.x < Pad.x + Pad.largeur then
Dans tous les cas il suffit d'ajouter
and Balle1.x > Pad.x
à ta condition.
Dans l'atelier j'utilise une autre méthode qui consiste à regarder la distance entre le centre de la balle et le centre du pad.
Ah ! , c'est le "Atelier 1er jeu vidéo : Jeu de Pong : Apprenez à coder votre premier jeu vidéo rapidement et facilement", p22 donc. Car c'est le "pong", que je bidouille pour m'entraîner, transformer. Merci 😁 (Objectif 2ème balle sous certaines conditions, complications etc...)
Ok donc maintenant j'ai compris et j'ai trouvé le bug. Je t'expliquerai ça avec une vidéo laisse moi 1/2 journée.
Tout ton temps, merci pour ton suivi. 👍
Ma façon de faire est souvent d'improviser sur les leçons après coup, au risque (bénéfice) de rencontrer des inconnues... 😁
Compris ! 😁 Merci pour ta vidéo et le temps passé. 👍
- 6 Forums
- 239 Sujets
- 842 Posts
- 0 En ligne
- 45.5 {numéro}K Membres