Jump to content
Unity Insider Forum

Codeüberprüfung und Feedback gesucht!


Kokujou

Recommended Posts

Hovern kannst du auch in den CardRaycaster einbauen.

private InteractiveCard previousHoverCard;

private void Update()
{
  var currentHoverCard = default(Card);
  
  if (Raycast( ... ))
  {
    currentHoverCard = hit.collider.GetComponent<InteractiveCard>();
  }
  
  if (currentHoverCard != previousHoverCard)
  {
    if (previousHoverCard)
    {
      previousHoverCard.HoverExit();
    }
    previousHoverCard = currentHoverCard;
    if (currentHoverCard)
    {
      currentHoverCard.HoverEnter();
    }
  }
  
  if (Input.GetMouseButtonDown(0))
  {
    currentHoverCard.Interact();
  }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 78
  • Created
  • Letzte Antwort

Ja aber das würde nicht mehr so gut passen wenn es in der Card-Klasse wäre.

Eine Spielkarte weiß ja nichts von ihren anderen Hovern.

Also hab ich das Raycasting jetzt halt in der Player-Klasse ne Kommunikation mit der Spielfeld-Klasse zum Triggern von Ereignissen bezüglich der Kartenauswahl und ehrlich gesagt sieht alles jetzt viel schöner aus. 4 Skripte fliegen raus sobald alles wieder funktioniert und ich hoffe dass ich dann nicht mehr ganz so viel Kritik für meinen Codestil kriege.

Ich hab sogar etwas an der Deutsch/Englisch Macke gearbeitet ^^ aber nur wenn ich mal drüber stolpere. Als ich das in der Card Klasse geändert hab hätt ich mir echt in die Fresse schlagen können weil folglich ja die ganzen verdammten ScriptableObjects die ich angelegt habe alle kaputt gegangen waren XD ich bin froh dass ich die änderung rückgängig machen konnte auch wenn Unity nicht geschnallt hat dass ichs gemacht hab und ich erstmal Copy -> In Ordner Temp neu importieren -> alte löschen -> wieder in den alten Ordner verschieben.

Es war ja dieselbe datei. Nur die Meta löschen hat nicht geklappt, reimportieren oder aktualisieren hat nicht geklappt, man musste es auf die harte Tour machen.

Das Blöde ist ja dass du nicht denselben Namen mehrfach verwenden darfst. logischerweise.

Ich meine ich hab ne Klasse Spielfeld, ne Instanz vom Spielfeld, sogar Funktionsparameter also brauch ich drei verschiedene Namen XD

Board board = _board; oder wie? XD "Playboard" klingt irgendwie falsch... "GameEnvironment" genauso...  mir gehen echt die Worte aus ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja und so ähnlich hab ich es jetzt! :3 Es macht Spaß Neues zu lernen.

Ich werd mal den ersten Beitrag bearbeiten, damit das GitHub dass ich habe ganz oben steht und man sich das nicht irgendwo raussuchen muss. Obwohl die GitHub Links ja unkompliziert sind. Nix mit asdh78920912jeduin/xy/z/ä/ XD

Aber vielleicht kann ja dann man jemand über meine Neusten Arbeiten gucken und mir sagen ob ich auf dem richtigen Weg bin oder ob ich hier jetzt kompletten Mist mache XD

___

Achja und ich habe eine kleine Frage. Ich habe ein ziemlich blödes Konstrukt. List<object>

ich habe die KI-Klasse die von der Player-Klasse erbt und gebe als Spieler-Liste entweder die KI ein oder den Player.
Würde ich jetzt List<Player> nutzen wären die zusätzlichen Informationen der KI Klasse dann verloren oder wäre es nach wie vor dasselbe Objekt und wenn ich dann (KI)players[0] Schreibe würde ich Zugriff darauf haben?

___

Okay und noch ein ziemlich fettes Problem dass mir gerade aufgefallen ist.

Ich ordne die Karten ja mathematisch an. Das Problem bei der ganzen Sache ist die reale Größe des GameObject. Aktuell geh ich über GetComponent<MeshRenderer>().bounds.size

Aber... wie zur Hölle skaliert das?! Auf dem Spielfeld haben alle Karten eine 1/1.5-fache localScale. Also ich teile durch 1.5f. Dadurch werden wohl die bounds neu berechnet. Jetzt kommt das Problem. Aus irgendeinem mir völlig unerklärbaren Grund variieren diese Werte sehr intensiv. Wenn ich jetzt eine Karte in der Hand bewegen will würde ich ja eigentlich als Referenzwert die bounds.size/1.5 nehmen. Aber die haut nicht hin, ist viel größer als die der Karten auf dem Feld.

Ich würde ja einfach die erste Karte auf dem Feld ansprechen, aber wenn das Feld leer ist, geht das nicht. Und dieser Fall kann theoretisch eintreten, wenn auch sehr selten. Ich versteh nicht wie das überhaupt sein kann... Selbst wenn ich vor den Code localscale /= 1.5f schreibe sind die Bounds des Renderers völlig verschieden.

_____
okay das letzte Problem hab ich irgendwie gelöst bekommen folgendermaßen: Offenbar ist die größe der bounds des MeshFilters einer Plane, die ich als Kartendarstellung Nutze, gleich 5. Die größe meiner Orthografischen Kamera ist 41. 41 * 2 = 82 so kriegst du die Bildschirmhöhe. 82/5 ergibt dann die Große der Karte, die ich dann nur noch mit der AspektRatio der Kamera multiplizieren muss. Ehrlich gesagt steig ich bei dem ganzen Zeug un der mathematischen Sinnhaftigkeit dieser Formel nicht dahinter aber es funktioniert XD

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

Ankündigungen


Hy, wir programmieren für dich Apps(Android & iOS):

Weiterleitung zum Entwickler "daubit"



×
×
  • Neu erstellen...