Ich mache ein Spiel, das "fallende Block" -Spielelemente beinhaltet. Das Problem ist, ich bin nicht ganz sicher, wie ich es machen soll, damit die Blöcke an einer Art Gitter einrasten, mit anderen Worten, ich bin nicht sicher, wie es die Zelle auswählt, die seiner Position am nächsten liegt.
Die Blöcke rasten nicht kontinuierlich an einem Gitter ein (dh sie sind der Schwerkraft ausgesetzt). Irgendwelche Tipps?
mathematics
grid
JesseTG
quelle
quelle
In meiner schnellen Recherche, wenn Sie eine Geometrie auf ein Gitter schnappen:
Solange alle Scheitelpunkte Ihres Polygons (an seiner endgültigen Position) mit den Scheitelpunkten des Gitters übereinstimmen (mit anderen Worten, wenn das, was Sie fangen möchten, gut in das Gitter passt), dann
Sie können jeden Scheitelpunkt Ihres Polygons am nächsten Rasterscheitelpunkt ausrichten und dieselbe Übersetzung auf alle anderen anwenden. Sie werden immer die gleiche resultierende Position haben.
Dies bedeutet, dass Sie einfach einen Scheitelpunkt auswählen und seine Koordinaten runden können. Wenn Sie ein Raster mit einer Seite verwenden, die größer als eine Einheit ist, verwenden Sie den Ausdruck von Austin:
cube.Position.XorYorZ = Math.round(cube.Position.XorYorZ / gridCubeWidth) * gridCubeWidth;
quelle
Math.ceil gibt das richtige Gefühl, um die Blöcke an den richtigen Gittern zu befestigen
quelle