Platzieren Sie Objekte mit vorgegebenem Maßstab und Koordinaten
Posted: 27 Dec 2024, 13:25
Ich habe ein Problem, wenn ich versuche, den Maßstab und die Koordinaten meiner Objekte im Code festzulegen. In meinem Spiel muss ich Objekte zufällig platzieren und sie müssen Block für Block und ohne Leerzeichen dazwischen bleiben (wie auf dem Referenzbild). Aber wenn ich meinen Code mache, bleiben sie in großer Entfernung und in seltsamem Maßstab. Ich wäre Ihnen sehr dankbar, wenn Sie mir bei dieser Sache helfen könnten. Und ich platziere Objekte im Weltraum, nicht in der Benutzeroberfläche.
Mein Spiel
[img]https://i. sstatic.net/F07D3S9V.png[/img]
Referenz
[img]https://i.sstatic. net/oTUyhqLA.png[/img]
Hier ist mein Code:
Ich denke, dass das Problem mit der schlechten Skalierung zusammenhängt. Aber ich verstehe nicht, wie man es richtig macht
Mein Spiel
[img]https://i. sstatic.net/F07D3S9V.png[/img]
Referenz
[img]https://i.sstatic. net/oTUyhqLA.png[/img]
Hier ist mein Code:
Code: Select all
screen_bounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, Camera.main.transform.position.z));
float screen_width = screen_bounds.x * 2;
float screen_height = screen_bounds.y * 2;
var border_left = Instantiate(borderObject);
border_left.transform.localScale = new Vector3(1, screen_bounds.y*2, 1);
border_left.transform.position = new Vector3(-1 * screen_bounds.x - border_left.transform.localScale.x/2, 0, 0);
var border_right = Instantiate(borderObject);
border_right.transform.localScale = new Vector3(1, screen_bounds.y * 2, 1);
border_right.transform.position = new Vector3(screen_bounds.x + border_right.transform.localScale.x / 2, 0, 0);
var border_top = Instantiate(borderObject);
border_top.transform.position = new Vector3(0, screen_bounds.y, 0);
border_top.transform.Rotate(0, 0, 90);
for (int i = 1; i < 6; i++)
{
var block = Instantiate(block_types[Random.Range(0, block_types.Length)]);
block.transform.localScale = new Vector3(screen_width / 5 / 2, screen_width / 5 / 2, screen_width / 5 / 2);
block.transform.position = new Vector3(-1 * screen_bounds.x + block.transform.localScale.x * i * 2 - block.transform.localScale.x, 4, 0);
}