Stap 7: Spel constructies - spel Logic - botsing detectie uitvoering
Wanneer u werkt in 2-dimensionale ruimte, is de uitvoering eigenlijk een beetje eenvoudiger. In plaats van een lus controleren elke mogelijke tangent punt voor zowel de objecten of de randen hebben controleren hooguit twee punten zal in elk geval volstaan.Gericht op de bovenste en onderste randen, (x, 0) en (x, Y - s) zijn de enige mogelijke raakpunten, waarbij 0 < = x < = X. onthouden dat elk object logisch wordt vertegenwoordigd door een geordend paar thats de linker-bovenhoek. Als de bal de locatie (bx, b,y) en als by= 0, dan is de bal raakt aan de bovenrand van het scherm. Dit vereist slechts één vergelijking om erachter te komen wanneer overstappen op de neerwaartse staat. Ook, als by = Y - s, dan moet de bal ook wijzigen in de toestand omhoog verplaatsen.
De linker- en rechterrand zijn even eenvoudig. Herinneren dat (0, y) en (X - s, y) zijn de mogelijke raakpunten, waarbij 0 < = y < = Y. De volgende stap is het vergelijken van bx op 0 en X - s. Als bx gelijk aan een van beide waarden is, dan is de scoren voorwaarde is opgetreden. Waarschijnlijk is, zal de bal worden teruggesteld te kunnen blijven spelen.
De laatste reeks gevallen, wanneer de bal met de peddel botst, ligt iets moeilijker. Laat (px, py) worden de huidige locatie van de peddel. Nadruk op de linker peddel, is het eerste ding om te controleren de juiste x-coördinaten. Voor de linker peddel, liggen alle mogelijke verticale tangent punten op (px + w, y), waarbij 0 < = y < = Y. logisch, als px + w = bx, dan een botsing kan worden voorkomen. Er zijn een paar andere punten te controleren.
De volgende stap is het vergelijken van de y-coördinaten. Grafisch, plaatsvindt een botsing precies wanneer elke pixel van de bal tussen de randen van het boven- en onderkant van de peddel. In de voorgaande sectie op botsingdetectie, kan al het mogelijke raakpunten worden omschreven als alle punten tussen (px + w, py) en (px + w, py + h) als h de hoogte van de peddel is. Op dit punt, is het mogelijk om het algoritme te vereenvoudigen door het vergelijken van slechts twee punten. Als de linker bovenhoek of de linkerbenedenhoek raaklijn aan de peddel, dan moet er ten minste één punt van de bal die visueel lijkt is het botsen met de peddel. Door het controleren van deze twee punten, controleert het algoritme alle punten aan de linkerkant van de bal impliciet. De juiste peddel werkt op een gelijkaardige manier, met uitzondering van de punten te controleren zijn de hoeken van de boven - en rechtsonder van de bal, gevonden door (bx + s, b,y) en (bx s, b,y + s).
Bij de uitvoering van de botsingdetectie, de volgorde van zaken van de vergelijkingen. Berekeningen, en dus tijd, kunnen worden opgeslagen door het controleren van de belangrijkste punten in een bepaalde volgorde. Neem bijvoorbeeld de linker peddel. Stel dat de y-coördinaten in het algoritme eerst werden gecontroleerd. Door de natuur is dit een ingewikkelde uitdrukking in veel programmeertalen. Nadat deze expressie wordt gecontroleerd, zou de volgende stap zijn om te vergelijken van de x-coördinaten. Tijdens runtime zou het waarschijnlijk dat de speler de bal langs het verticale vlak, nauw volgt dus de eerste vergelijking ten minste een paar keer tijdens het afspelen, gelden zal zelfs wanneer de bal aan de andere kant van het scherm. De x-coördinaat expressie, echter zal gelden slechts éénmaal voor een flink aantal frames. Als de vergelijkingen werden omgedraaid, de dure berekening van de y-coördinaat kan worden opgeslagen om te worden gebruikt alleen precies wanneer nodig, aangezien het zou kunnen gebeuren om waar te zijn een paar keer wanneer het niet nodig is.
Dus, de botsingdetectie voor de schoepen zal als volgt uitzien:
1. Schakel als bx = px
2. Schakel als b-y < = py en by < = py + h, of indien by + s < = py en by + s < = py + h
3. Verander de bal staat
Elke volgende stap moet zijn voldaan om door te gaan op naar de volgende. De botsingen van de rand scherm werken precies zoals beschreven, aangezien er slechts één aanspreekpunt te controleren.