Jump to content
Unity Insider Forum

Kokujou

Members
  • Gesamte Inhalte

    301
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    1

Kokujou hat zuletzt am 27. September 2018 gewonnen

Kokujou hat die beliebtesten Inhalte erstellt!

Über Kokujou

  • Geburtstag 13.11.1993

Contact Methods

  • Website URL
    http://obscuritas.pw

Profile Information

  • Gender
    Male
  • Location
    Dessau-Roßlau
  • Interests
    Spieleentwicklung, Animes

Letzte Besucher des Profils

2.551 Profilaufrufe

Kokujou's Achievements

Advanced Member

Advanced Member (3/3)

3

Ansehen in der Community

  1. Yaho! ich hab gerade an der neuen Unity Ui Toolkit Implementation geschraubt, läuft eigentlich ganz gut, jetzt hab ich aber ein Problem. Ich entwickle ein Mahjong spiel und wenn man über einen Tile fährt möchte ich ein UI-Overlay einblenden wo andere Tiles angezeigt werden, die noch für einen Yaku benötigt werden. Ich habs versucht über WorldToScreenPoint, aber das scheint nicht zu funktionieren. Also wie mache ich diese beiden Dinger irgendwie kompatibel? Referenz: https://github.com/Kokujou/Obscuritas-Riichi-Mahjong/blob/master/Assets/UI/left-to-yaku-ui.uxml https://github.com/Kokujou/Obscuritas-Riichi-Mahjong/blob/master/Assets/UI/left-to-yaku-ui.uss
  2. ja schon aber... er ist auf isKinematic gestellt, also sollte er doch absolut nichts machen was mit Physik oder Kollision zutun hat oder? ey verflucht das war das Problem Du bist ja ein Genie! Ich war so davon überzeugt das isKinematic ausreicht aber offenbar war genau das mein Fehler. Ich hab Stunden an dem Problem gesessen, ich kann dir gar nicht sagen wie dankbar ich dir bin, da wäre ich ja nie drauf gekommen!
  3. Da ich jetzt offensichtlich wieder antworten kann kann ich auch endlich die beiden anderen Files verlinken, hoffentlich: https://github.com/Kokujou/Obscuritas-Riichi-Mahjong/blob/master/Assets/Scripts/Animations/SortHandExtension.cs https://github.com/Kokujou/Obscuritas-Riichi-Mahjong/blob/master/Assets/Scripts/Services/GameInputLoopService.cs
  4. sorry, habs schon gepublished vor 2 Minuten
  5. Hi na! Ich brauch dringend ein zweites Paar Augen. Ich entwickle gerade ein Mahjong-Spiel. und irgendwas stimmt mit den Animationen nicht. Im Grunde sind es simple Interpolationen von A nach B. Und am Ende jeder Animation, um auch wirklich 1000%ig sicher zu gehen, setze ich den Transform auf den Zielwert. Die Transforms haben zwar alle Rigidbodies und Colliders, sind aber kinematic, also bewegen sich nur via Script. Jetzt passiert folgendes. Die Interpolation funktioniert, sie läuft auch problemlos durch, aber dann, in einem Einzelbild später, bewegt sich das Tile ohne dass von irgendwo der Befehl dazu kommt und die Position ist plötzlich falsch. Mein erster Ansatz war alle verwendungen von StartCoroutine zu unterbinden, um so gleichzeitig Animationen weitesgehend zu verhindern, aber daran scheint es nicht zu liegen. Das Tile wird danach ohnehin nicht mehr weiterverwendet, weil der Zug ja da schon vorbei war. Das Problem tritt immer auf wenn ich einen Stein aus der Hand abwerfe und der neue Stein einsortiert wird. Sicher wollt ihr Code sehen, also hier ein paar Links aus meinem Git Repo Interpolations-Animation: https://github.com/Kokujou/Obscuritas-Riichi-Mahjong/blob/master/Assets/Scripts/Animations/InterpolationAnimationExtension.cs Die betroffene "Pick up and Move" Animation: https://github.com/Kokujou/Obscuritas-Riichi-Mahjong/blob/master/Assets/Scripts/Animations/PickUpAndMoveAnimationExtension.cs
  6. Hallo erstmal. Ich bin mal wieder mit meinem Latein am Ende. Ich nutze NetworkServer und NetworkClient. Der, der das Spiel erstellt ist ein Host, der Mitspieler nur ein Client. Bei jedem Zug sendet jeder Client eine Nachricht an den Server, dieser wiederum broadcastet sie dann. Es ist zwar nur ein Zweier-Spiel, aber joa... Mein Problem sind plötzliche Verbindungsabbrüche wenn sich eine Weile nichts tut. Offenbar hat Unity die Wahnidee, nach einem Timeout die Verbindung zu trennen, wenn nichts gesendet wird. Und ich muss ihn jetzt irgendwie davon abhalten. IIch habs schon mit KeepAlive Nachrichten versucht, also einfach Nachrichten mit lediglich nem Bool-Wert jede sekunde rumgeschickt, ohne dass darauf ne reaktion erfolgt. Registriert auf ID 130, falls das wichtig ist. Ohne Erfolg. Gerade hab ich versucht die DisconnectTimeout Eigenschaft zu erhöhen, aber wenn ich das versuche einzubauen krieg ich gleich garkeine Verbindung mehr. Vielleicht weicht der DefaultConfiguration von der des Matchmakings ab oder was weiß ich. Eine andere Option wäre es bei jedem Disconnect wieder zu verbinden aber... Ich hab nicht die geringste Ahnung wie ich das überhaupt angehen soll. Am liebsten würd ich direkt auf ne Netzwerkarchitektur ausweichen, die sowas nicht macht, denn Unity macht was das angeht nur Probleme und ich arbeite sowieso ziemlich Low-Level mit Nachrichten. Aber es wäre schon schön wenn man dabei TCP hätte, also dass die Nachricht solange gesendet wird bis sie auch mit sicherheit ankommt. Das ganze händisch zu machen ist mir dann irgendwie zu verwirrend.
  7. Hallo~ Folgendes: ich möchte eine Skript-Animation basteln. Und ich hab damit schon angefangen und vielleicht könnt ihr mir ja helfen eine bessere möglihckeit zu finden. Ich arbeite mit Sprites und der Unity UI, genauer gesagt mit Images, denn da kann ich am besten kontrollieren wo und was, bei den Weltkoordinaten ist mir das zu viel Mathe. Ich zerlege meine 128 x 128 großen Texturen im Sprite Konstruktur in Blöcke der gleichen größe und für jeden dieser Blöcke erstelle ich ein GameObject mit Imae-Koponente, erstelle ein Sprite dafür über die Create-Funktion und platziere es so, dass es das gesamtbild ergibt, um dann Transformationen darauf anzuwenden. Nun werdet ihr mir sicher Zustimmen, wenn ich sage, dass das verdammt ineffizient ist, wenn man sehr kleine Blöcke wählt oder noch görßere Textturen hat und damit noch mehr Blöcke. Für die Animation von der ich Rede will ich, dass das Bild sich quasi zu dem neuen Bild "transformiert". Mein Ansatz ist, dass ich aktuell die Farbe jedes einzelnen Blocks Lerpe (Color.Lerp), allerdings meine ich mit Farbe nur die Eigenschaft des Images, also damit es ein bischen mehr so aussucht. Der Rest läuft über die Transparenz, im Endeffekt ist es nur ein zeitlich verschobenes überblenden. Um den Durchschnittswert der Farbe zu kriegen Summiere ich die Quadrate aller einzelnen Farbwerte (R,G,B einzeln), teile sie durch die Gesamtzahl und ziehe dann die Wurzel, die Formel hab ich gefunden, angeblich soll der normale Durchschnitt falsch sein. So viel zu dem was ich bereits ausprobiert habe. Viele, viele, viele Laggs je größer ich die Sache angehe. Also vielleicht teilt ihr mir mal mit was euch zu dem Thema eifnällt. Vielleicht ist das Ergebnis ja selbst wenn es nicht laggen würde gar nicht das was ich mir erhofft habe. Ich versuche mich gerade an Übergangsanimationen für einen Ladebildschirm und bin quasi in der Brainstorming Phase, wo ich rumprobiere wie was aussieht.
  8. Hallo... Erstmal vorweg: Ich tauge in keinster Weise als Grafiker, Designer oder überhaupt irgendwas was mit Kunst zutun hat. Darum ist dieses warscheinlich eher banale Problem für mich eine ziemliche Herausforderung. Zum Problem: Ich habe ein Kartenspiel. Die Karten sind auf der Hand gefächert. Wählt der Spieler jetzt eine aus, die eingesammelt werden kann will ich dass eine Animation kommt und (Mobil) sie dann verkleinert und in die Ecke geschickt wird möglichst so dass es auffällig ist, also als overlay. Vorgestellt hatte ich mir sowas wie einen Lichtball, der die Karte einschließt, kleiner wird und dann in die untere Ecke fliegt, wobei dann noch ein kleiner räumlich begrenzter Lichtblitz anzeigt dass er eingesammelt wurde. Eigentlich kennt man das ja. Die Frage: Wie? Ich hab schon mehrere Dinge ausprobiert. Ich hab ein Asset importiert mit reichlich Partikel-Effekten. Ich hab also zuerst mal nen glühenden Ring mit nem Halo in der Mitte versucht, aber die Karte darf nicht mehr erkennbar sein, Halo klappt also nicht. Dann einfach eine Sphäre mit z.b. einer Blitztextur aber auch das sieht nicht so toll aus. Und einfach ein halbtransparentes Material zu nehmen? - no. ehrlich gesagt hab ich keine Ahnung wie ich das angehen soll. irgendwie stellt mich nix zufrieden und darum die Frage
  9. Hallo erstmal~ Ich schätze mal das ist eine totale Grundlagenfrage die fast schon peinlich einfach zu beantworten ist, warscheinlich denke ich gerade viel zu kompliziert. Problem ist folgendes: ich will meine App fürmöglichst viele Geräte haben, sie soll exakt gleich angezeigt werden. Meistens wenn sich die größe des Geräts ändert, verschieben sich irgendwelche 3D-Objekte raus oder rein, die das nicht sollen. Ich hab eine orthografische Kamera, falls das interessiert, und das soll auch so bleiben. Aktuell arbeite ich mit dem Camera.rect, aber ich will eher dass der gesamte Inhalt gestreckt wird, statt dass man einen sehr sehr unschönen Bereich hat, auf dem irgendwelche BIldfragmente sind.
  10. Hallo... Ich hab ja kürzlich mal die Frage gestellt, wie ich graphische Effekte über der Skripting GUI anzeigen kann... Daraus ergab sich nun folgendes Setup: Ich habe eine Main und eine Effektkamera. Die Main cleart aller außer der Effekte, die Effektkamera eben nur die Effekte, Clear Flags sind auf Depth Only. Die Effektcamera rendere ich manuell mit Camera.Render() am Ende der OnGUI Funktion. Aber großes Problem: Plötzlich ist alles total verschwommen! Der ganze Rest ist in Ordnung und an den Grafikeinstellungen liegts auch nicht. Wenn ich z.B. die Effektkamera bei laufendem Spiel so einstelle, dass ihr ViewRect verschwindet, ist es wieder ganz normal. Das darf natürlich nicht sein, hat irgendjemand eine Idee was ich dagegen tun kann?
  11. Hi! Ich hab folgendes Problem: Ich weiß das hier ist ein Unity-Forum aber es geht um Xamarin und ich weiß nicht wo ich mich sonst noch hinwenden soll, denn die Antwortquote bei Xamarin ist gleich 0. Ich verwende die WebClient oder HttpWebClient Klasse in Xamarin aber die Funktion GetRequestStream(Async) braucht bei mir 10-20 Sekunden zum ausführen. Ich hab schon getestet, obs daran liegt ob ich SSL verwende und hab so ziemlich alles ausprobiert was ich beim ergoogleten gefunden habe. Proxy auf null setzen, alles in using-Blöcke packen, mehrere Verbindungen erlauben, Timeouts einführen und jetzt ist das ganze auch noch in ner asynchronen Funktion zum Multithreading obwohl das warscheinlich nur da ist damit der UI-Thread nicht angehalten wird aber egal. Ich bin mit meiner Weisheit so ziemlich am Ende und suche jetzt nach anderen Klassen die das vielleicht hinkriegen. Ich meine So ziemlich jede Webanwendung kann meinen POST-Request umsetzen ohne irgendwelche Zicken nur hier stellt man sich so komisch an.
  12. Hey. Ich hab vor Ewigkeiten ein Projekt mit Matchmaking gemacht und alles hat super funktioniert. Jetzt starte ich es wieder und alles ist im Eimer, einfach alles. Ich krieg selbst nach all den Veränderungen keine Verbindung mehr zum Matchmaking Service. Mein Multiplayer Konto bei Unity ist aktiv und müsste funktionieren wie es soll also nehme ich an es liegt an den Einstellungen. Könntet ihr mir bitte zeigen was für Einstellungen man im Network Manager vornehmen muss und wie die GUI auszusehen hat? Mein Momentaner Code: using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.Networking; using UnityEngine.Networking.Match; using UnityEngine.Networking.Types; public class NetworkScript : MonoBehaviour { // Use this for initialization void Start() { PlayerPrefs.SetInt("Start", 0); NetworkManager.singleton.StartMatchMaker(); } void Awake() { } bool Running = false, Rounds6 = false; string P1 = "", P2 = "", matchName = ""; public GUISkin skin; private void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo) { if (success) { MatchInfo hostInfo = matchInfo; NetworkServer.Listen(hostInfo, 9000); NetworkManager.singleton.StartHost(hostInfo); } else { Debug.LogError("Create match failed"); } } private void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo) { if (success) { NetworkManager.singleton.StartClient(matchInfo); } else { Debug.LogError("Create match failed"); } } private void OnMatchList(bool success, string extendedInfo, List<MatchInfoSnapshot> matches) { if (success) { if (matches.Count != 0) { foreach (var match in NetworkManager.singleton.matches) { Debug.Log(match.name); if (match.name == P2) { NetworkManager.singleton.matchName = match.name; NetworkManager.singleton.matchSize = (uint)match.currentSize; NetworkManager.singleton.matchMaker.JoinMatch(match.networkId, "", "", "", 0, 0, OnMatchJoined); } } } else { Debug.Log("No matches in requested room!"); } } else { Debug.LogError("Couldn't connect to match maker"); } } void OnGUI() { if (!Running) { GUI.skin = skin; GUI.Box(new Rect(Screen.width / 2 - 250, Screen.height / 2 - 250, 500, 500), "Einstellungen"); GUI.BeginGroup(new Rect(Screen.width / 2 - 250, Screen.height / 2 - 250, 500, 500)); { Rounds6 = GUI.Toggle(new Rect(125, 60, 125, 30), Rounds6, "6 Runden"); Rounds6 = !GUI.Toggle(new Rect(250, 60, 125, 30), !Rounds6, "12 Runden"); GUI.Label(new Rect(20, 100, 180, 30), "Spieler-Name"); P1 = GUI.TextField(new Rect(200, 100, 250, 30), P1, 20).ToLower(); GUI.Label(new Rect(0, 150, 500, 20), "Einzelspielermodus", skin.GetStyle("Überschrift")); if (GUI.Button(new Rect(150, 190, 200, 50), "Spiel Starten")) { if (NetworkManager.singleton.client != null) { ClientScene.Ready(NetworkManager.singleton.client.connection); if (ClientScene.localPlayers.Count == 0) { ClientScene.AddPlayer(NetworkManager.singleton.client.connection, 0); Debug.Log("test3"); } else Debug.Log("test1"); } else Debug.Log("test2"); } GUI.Label(new Rect(0, 260, 500, 20), "Mehrspielermodus", skin.GetStyle("Überschrift")); if (GUI.Button(new Rect(90, 290, 320, 50), "Auf Mitspieler warten")) { NetworkManager.singleton.autoCreatePlayer = false; NetworkManager.singleton.matchMaker.CreateMatch("Hanafuda #1", 2, true, "", "", "", 0, 0, OnMatchCreate); matchName = P1; NetworkManager.singleton.matchMaker.ListMatches(0, 20, "", false, 0, 0, OnMatchList); Running = true; Camera.main.name = P1; } GUI.Label(new Rect(20, 350, 180, 30), "Name des Mitspielers"); P2 = GUI.TextField(new Rect(200, 350, 250, 30), P2, 20).ToLower(); if (GUI.Button(new Rect(120, 390, 260, 50), "Mitspieler suchen")) { NetworkManager.singleton.matchMaker.ListMatches(0, 20, "", false, 0, 0, OnMatchList); } } GUI.EndGroup(); } } // Update is called once per frame void Update() { } }
  13. Hey! Ich hab grad mal seit Ewigkeiten wieder ein APK zu builden versucht. Das Ergebnis: Ich verbringe jetzt eine gute Stunde damit das halbe Internet neu zu archivieren. APK Studio, JDK. Meine Frage: Geht das nicht auch leichter? Bei Windows klickst du einmal und es ist durch. Da fühlt man sich ja richtig diskriminiert^^
  14. Hi! Folgendes: Ich will ein kartenspiel in Unity entwickeln und weiß einfach nicht wie ich das mit dem networking hinkriegen soll. Also: Ich generiere die Karten in den Konstruktoren meiner Klassen, füge sie zufällig (gemisch) dem Deck hinzu und erzeuge in der Start-Routine die graphische Ausgabe. Meine Frage ist: Wie krieg ich es hin dass Player A und Player B genau das selbe Deck mit derselben Reihnfolge sowie auch die gleiche Hand haben? Die Klassen müssen bei beiden vorhanden sein, damit ich die Punkte berechnen kann. Was das Basis-Netzwerk angeht benutze ich den NetworkManager und verwende MatchMaking. Mit benutzerdefinierter GUI. Ich hab mir das so gedacht, dass man entweder ein Game aufmachen kann oder direkt einen Benutzer sucht, was die Channel-Liste aushebelt aber das nur am Rand Ich hoffe mir kann jemand helfen.
×
×
  • Neu erstellen...