Du bist nicht angemeldet.

Werbeanzeige

1

15.09.2014, 11:31

Unity Kartenspiel in 2D oder 3D

Heyho,

Ich wollte als erstes UnityProjekt ein Kartenspiel realisieren. Man sagte mir dabei unterschiedliche Meinungen, das 3D leichter sein soll bei Effekten etc, andere das 2D leichter ist. Das Spiel soll als 2D Spiel realisiert werden, jedoch soll es auch Effekte, Animiereffekte etc besitzen.


Momentan bin ich noch etwas ratlos. In C# soll das ganze realisiert werden und die Fähigkeiten sind recht gut ausgebaut.


Vielleicht hat jemand eine Antwort :)
Gruß,

Sacaldur

Community-Fossil

Beiträge: 2 332

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

2

15.09.2014, 12:26

Bei den Effekten kommt es darauf an, was man alles an Effekten dazu zählt. Partikeleffekte gehören in Unity grundsätzlich zum 3D-Featureumfang. Ich weiß nicht, ob sich diese so einfach in 2D Spiele einbauen lassen, da dort die Darstellungsreihenfolge anders bestimmt wird.
Übergänge (Tweening) bei Skalierungen, Bewegungen und Rotationen dürften in beiden Fällen gleich schwierig sein, nur dürften 3D-Effekte (Rotation einer Karte von Rück- zu Vorderseite) ohne 3D Mittel etwas schwieriger sein.

Grundsätzlich lässt sich Unity bei der 2D und 3D Entwicklung ungefähr gleich handhaben, nur dass man ggf. bei der Entwicklung eines 3D Spiels etwas kompliziertere Berechnungen haben könnte. Der wesentliche Unterschied dürfte aber in den Assets liegen, da diese erst erstellt oder auf irgendeine Art bezogen werden müssen.

Da für ein Kartenspiel eine 2D Darstellung reicht und du am Anfang auf Effekte noch verzichten kannst, kannst du auch mit den 2D Funktionen anfangen.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Frybird

Treue Seele

Beiträge: 97

Wohnort: Bonn

Beruf: Webprogrammierer

  • Private Nachricht senden

3

15.09.2014, 12:46

Ich würd schon allein auf 2D Setzen weil ich finde 3D bei virtuellen Kartenspielen ist irgendwo ziemlich nutzlos und machts wenn überhaupt oft nur schwerer das Spiel zu steuern oder die Karten zu identifizieren.

That said benutze ich bei meinem 2D Spiel in Unity Sprites zusammen mit einer auf Perspektive eingestellten Kamera , einfach um ein bisschen besser mit der Perspektive spielen zu können. Abgesehen von der Kamera und den Collidern bzw der Physik interessiert es Unity herzlich wenig ob dein Spiel 2D oder 3D ist.

4

16.09.2014, 10:43

Vielen Dank für die Antworten. Dann werde ich mich mal an 2D ranwagen :)

Renegade

Alter Hase

Beiträge: 477

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

5

16.09.2014, 15:39

Ich weiß nicht, ob sich diese so einfach in 2D Spiele einbauen lassen, da dort die Darstellungsreihenfolge anders bestimmt wird.


Jedes Unity Projekt ist per se ein 3D Projekt. Es ist wirklich einfach 2D mit 3D Elementen in Unity zu mischen!

http://youtu.be/rXDK6InUaO4?t=2m10s
Liebe Grüße,
René

MitgliedXYZ

Alter Hase

Beiträge: 1 381

Wohnort: Bayern

  • Private Nachricht senden

6

16.09.2014, 16:41

Jedes Unity Projekt ist per se ein 3D Projekt. Es ist wirklich einfach 2D mit 3D Elementen in Unity zu mischen!
Nur Kollisionen sind nicht zwischen 2d und 3d Elementen möglich, da muss man sich dann für einen Bereich entscheiden.

7

22.09.2014, 22:58

Heyho,

Ich komme momentan nicht weiter bei der Beschriftung der Karte. Es soll ein Sammelkartenspiel werden mit 50-100 unterschiedlichen Karten. Auf der Karte soll dann der Name, Angriff, HP etc. stehen. Dabei soll ich auch die Möglichkeit haben die gleiche Karte mehrmals in meinem Hauptdeck ablegen zu können.

In einem Tutorial habe ich gesehen das es die Möglichkeit gibt jede Karte zu gestalten, so das die Beschriftungen alle schon auf der Karte sind und ich danach die Karte auf mein Plane-Objekt abbilden kann. Selber überlegt habe ich mir, das ich ein Objektarray erstelle mit den ganzen Attributen und diese dann über Labels auf der Karte anzeigen lasse. Was wäre denn sinnvoller von beidem? Und wie könnte man die zweite Methode am besten realisieren, das die Attribute universell auf allen Karten angezeigt werden, egal an welcher Position sich die Karte momentan befindet? Bin ganze Zeit am überlegen ein eigenes Skript für die Karte zu machen, aber das ist eigentlich auch Unfug...



Vielleicht hat ja jemand eine Antwort :D

Schönen Abend noch,
Chris

Tobiking

1x Rätselkönig

  • Private Nachricht senden

8

23.09.2014, 00:39

Mit Unity 4.6 sind die Label Objekte Bestandteil des neuen UI System. Da könntest du für jede Karte ein Canvas im World Space als Child der Karte verwenden:

Canvas als Child der Karte => Canvas bekommt die gleiche Transformation wie die Karte
Canvas im World Space => Alle UI Elemente werden von deiner Main Kamera in korrekter Perspektive etc. gerendert

Damit hast du die Möglichkeit die Karte komplett mit UI Elemente (Texte, Buttons, Bilder etc.) im 2D Space zu versehen, die zudem mit richtigen Anchors unabhängig von der Auflösung skalieren.

Frybird

Treue Seele

Beiträge: 97

Wohnort: Bonn

Beruf: Webprogrammierer

  • Private Nachricht senden

9

23.09.2014, 00:41

Heyho,

Ich komme momentan nicht weiter bei der Beschriftung der Karte. Es soll ein Sammelkartenspiel werden mit 50-100 unterschiedlichen Karten. Auf der Karte soll dann der Name, Angriff, HP etc. stehen. Dabei soll ich auch die Möglichkeit haben die gleiche Karte mehrmals in meinem Hauptdeck ablegen zu können.

In einem Tutorial habe ich gesehen das es die Möglichkeit gibt jede Karte zu gestalten, so das die Beschriftungen alle schon auf der Karte sind und ich danach die Karte auf mein Plane-Objekt abbilden kann. Selber überlegt habe ich mir, das ich ein Objektarray erstelle mit den ganzen Attributen und diese dann über Labels auf der Karte anzeigen lasse. Was wäre denn sinnvoller von beidem? Und wie könnte man die zweite Methode am besten realisieren, das die Attribute universell auf allen Karten angezeigt werden, egal an welcher Position sich die Karte momentan befindet? Bin ganze Zeit am überlegen ein eigenes Skript für die Karte zu machen, aber das ist eigentlich auch Unfug...


Kommt drauf an.

Irgendwas einzigartiges von den Karten musst du sowieso erstellen, von daher ist es auch kein großer Umstand die Karte quasi als Textur oder Sprite vorzugestalten und dann immer wieder reinzuholen (so oder so, pack die Karten aufjedenfall in eine Sprite/Texturemap statt alle einzeln als Datei aufzurufen)

ANDERERSEITS hat es natürlich den Vorteil das wenn du mit GUI Labels oder 3D Text (ich denke letzteres wäre besser geeignet, kommt drauf an wie du das Spiel an sich handelst) arbeitest, das du die Karten viel dynamischer gestalten kannst, so das du variabel Dinge hervorheben kannst oder z.B. HP von einer Karte abziehen kannst, wenn sie Schaden nimmt.

In dem Fall solltest du die Labels Instanzieren und als Child dem Kartenobjekt zuordnen. Dann kannst du mit dem Attribut transform.localPosition ( http://docs.unity3d.com/ScriptReference/…alPosition.html ) die "Child"-Texte relativ zu deiner "Parent" Karte platzieren (Ich kann dir nur mangels Erfahrung gerade nicht sagen ob bei einer Veränderung der Parent Position die Positionen der Childs automatisch geändert werden, es kann sein das du den localposition befehl bei jeder Animation aufrufen musst...am besten gleich in eine einzelne Funktion packen).

Ich hoffe das hilft weiter : )

Gratistipp: Hol dir aufjedenfall iTween ( http://itween.pixelplacement.com/index.php ), am besten in Verbindung mit dem iTween Visual Editor ( http://u3d.as/content/david-koontz/i-tween-visual-editor/1tM )...für ein Kartenspiel kannst du damit wahrscheinlich sämtliche Animationen machen und ersparst dir eine Menge Arbeit für ein visuell Einwandfreies erlebnis

Werbeanzeige