Avlu Geschrieben 17. Juni 2022 Melden Share Geschrieben 17. Juni 2022 Hallo, ich will eine Karte für mein Spiel zeichnen (2d), dabei habe ich drüber nachgedacht und mir ist aufgefallen ich weiß ja garnicht wie ich sozusagen eine Border erstellen die um die Karte geht und verhindert das ich von z.B. von einer Klippe "runterfalle". Gutes Beispiel ist die Karte von Cuphead (das Bild unten), man hat einen Spieler und kann mit ihm nicht über eine Kante gehen, wie genau macht man das? Falls etwas nicht klar ist bitte bescheid geben! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 18. Juni 2022 Melden Share Geschrieben 18. Juni 2022 Moin und Willkommen! Naja, da gibt es verschiedene Möglichkeiten. Du könntest zum Beispiel recht stumpf überall Collider2D hinsetzen und deinem Character z.B. einen Rigidbody2D geben, mit dem er da durch navigiert. Da besteht die Gefahr, dass du irgendwo eine Lücke übersiehst, aber wenn du sonst nichts mit diesem Areal machen willst, ist das schon eine gute Lösung. Spätestens, wenn noch andere Figuren sich da lang bewegen sollen, kann man aber auch über ein NavMesh nachdenken. Die gibt's zwar von Haus aus nur in 3D, aber wenn man z.B. seine 2D-Karte flach auf den Boden legt, kann man es trotzdem dafür benutzen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 18. Juni 2022 Melden Share Geschrieben 18. Juni 2022 Meine Idee wäre auch einfach Collider. Diese muss man ja nicht so Detailverliebt machen. Es reicht ja wenn sie grob der Form entsprechen. Ob der Spieler mal bis auf 2 cm an die Kante heran kommt oder 11.2 cm merkt keiner. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jog Geschrieben 18. Juni 2022 Melden Share Geschrieben 18. Juni 2022 Hallo, Du könntest z.b. deinen Border in einer neuen Ebene einzeichnen z.b. Schwarz für nicht begehbar wie ein Alphakanal, und ein neues Bild daraus erstellen. Das Bild legst du dann genau über das Original und schaltest den Sprite Renderer aus, das Bild wird zwar nicht mehr gerendert, aber mit Texture2D.GetPixel kannst du den Farbwert an der X,Y Koordinate auslesen und Color32 übergeben. Ist der Farbwert an der Koordinate z.b. Schwartz dann bleib stehen. Wichtig ist das bei Import Settings Read/Write Enabeld aktiviert ist sonst sonst kannst du das Bild in Unity nicht bearbeiten. Hier mal zur Veranschaulichung ein kleines Script das den Farbwert in der Konsole ausgibt. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Pixel : MonoBehaviour { public Texture2D tex; public Color32 farb; // Start is called before the first frame update void Start() { farb = tex.GetPixel(0, 10); Debug.Log(farb); } // Update is called once per frame void Update() { } } Gruß Jog Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 18. Juni 2022 Melden Share Geschrieben 18. Juni 2022 vor 5 Stunden schrieb Jog: Du könntest z.b. deinen Border in einer neuen Ebene einzeichnen z.b. Schwarz für nicht begehbar wie ein Alphakanal, und ein neues Bild daraus erstellen. Da fehlt jetzt aber irgendwie noch, wie das den Spieler daran hindert, über die Kante zu laufen...? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jog Geschrieben 19. Juni 2022 Melden Share Geschrieben 19. Juni 2022 Hallo, vor 16 Stunden schrieb Sascha: Da fehlt jetzt aber irgendwie noch, wie das den Spieler daran hindert, über die Kante zu laufen...? In dem ich den Wert z.b. in einer Funktion auswerte. void AuswertFunktion() { farb = tex.GetPixel(x,y); if (farb.a == 0 ) // Alphawert =0 { // Halte die Bewegung an } } Soviel zur Theorie . Dann kahm die Praxis 🙄 Habe das heute mal ausprobiert. Ist sehr kompliziert und Aufwendig dies zu Programmieren (Welt Koordinaten in Pixel Koordinaten umzurechnen usw.) Und beim testen Bäumte sich mein PC auf und viel Tot um.😉 ( Brach auf 8 fps ein ) wahren wohl ein paar Pixelberechnungen zu viel. Aber es hat funktioniert .😁 Also ist dieser Weg leider nicht dafür geeignet. Gruß Jog Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.