Jump to content
Unity Insider Forum
  • Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

Shaitan1805

Members
  • Content count

    22
  • Joined

  • Last visited

Community Reputation

3 Neutral

About Shaitan1805

  • Rank
    Member
  • Birthday 05/18/1992

Profile Information

  • Gender
    Male
  1. 2D Kameragrenzen abhängig von Zoom

    Vielen Dank für Deine schnelle Antwort und entschuldige bitte meine verspätete. Habe momentan viel um die Ohren. Unser Team hat sich jetzt entschieden mit den Kamerascript noch zu warten, da es andere Prioritäten gibt. Daher hab ich Deine sachen noch nicht getestet, werde es aber noch tun. Vielen Dank nochmals
  2. Tap the Target

    Hallo ediacara, tut mir Leid, dass ich erst jetzt antworte. Bin die letzten Monate sehr viel beschäftigt durch Studium und andere Dinge. Freut mich zu hören, dass es dir soweit ganz gut gefallen hat. Das mit dem immer wieder das selbe liegt daran, dass wir uns auf das Highscore Prinzip festgelegt haben. Was bedeutet, dass jede Runde dadurch zwangsweise gleich sein muss, abgesehen von den Positionen und den Spawnintervallen (welche algorithmisch aber in einem Rahmen bleiben um gleiche Verhältnisse zu schaffen) Die Idee mit den Zahlen auf den Zielscheiben ist super, eventuell finden wir noch Zeit, dies durch ein Update nachzuschieben. Die niedrigen Downloadzahlen würde ich jetzt einfach mal auf mangelnde Bekanntheit in Kombination mit der App-Masse schieben. Wir haben auch kein Marketing betrieben. Wir arbeiten aktuell an einem weiteren Projekt, welches wir hoffentlich bald anfangen werden der Öffentlichkeit vorzustellen. Allerdings sind wir momentan noch bei einem fortgeschrittenem Prototypen. Das neue Projekt möchten wir dann auch ein wenig Promoten. Ich werde es, wenn es soweit ist wieder hier im Forum vorstellen und kann gerne den Post unter diesem verlinken
  3. 2D Kameragrenzen abhängig von Zoom

    Hey Leute, ich arbeite aktuell an einem 2D-Game. Nun stehe ich vor einem Problem, an dem ich mich momentan schon viel zu lange aufhalte. Ich habe eine orthografische Kamera in meiner Szene, welche der Spieler bewegen kann. Per Pinch-to-zoom kann man auch das Sichtfeld beeinflussen, was in dem Fall über das Verändern des Wertes "orthographicSize" geschieht. Soweit so gut. Nun zum Problem. Ich möchte, dass die Kamera nur bis zu bestimmten Grenzen bewegt werden kann. Klar => Mathf.Clamp. Aber ich komm einfach nicht drauf, die Grenzwerte dynamisch zu berechnen. Je nach Kamerazoom sind die Werte anders. Zudem sind die Level unterschiedlich groß, aber immer ein Rechteck. Zusammenfassend suche ich also eine Möglichkeit die Grenzwerte abhängig von Levelgröße und Zoom zu berechnen. Kann mir da jemand helfen? Vielen Dank schonmal
  4. Tap the Target

    Hallo liebe Community, ich möchte an dieser Stelle unser kleines Mobile Game vorstellen. Das Projekt "Tap the Target" war ursprünglich dafür gedacht mich in Unity einzuarbeiten und die Engine kennen zu lernen. Mit der Zeit hat es sich allerdings schon so weit entwickelt und durch großes Interesse im Bekanntenkreis kam es dazu, dass ein Freund und ich daran immer weiter gearbeitet haben und es nun im Google Play Store releast haben. Eine iOS-Version ist auch geplant, allerdings muss ich mich dazu erst noch in die Bedinungen von Apple einlesen. Zum Spiel: Tap the Target ist ein kleines 2D Reakionsspiel und perfekt für Wartezeiten und für zwischendurch geeignet. Auf dem Spielfeld erscheinen "kontrolliert zufällig" verschiedene Objekte, welche nach kurzer Zeit wieder verschwinden. Zielscheiben, Sanduhren, Blitze und Totenköpfe. Ziel des Spiels ist es durch das Tippen auf die Zielscheiben möglichst viele Punkte zu sammeln bevor die Zeit abläuft. Die Totenköpfe ziehen kostbare Zeit ab, genauso wenn daneben getippt wird. Das soll wildes Bildschirmhämmern verhindern. Mit den Sanduhren, welche relativ rar gesät sind, kann ein bisschen Zeit dazu gewonnen werden. Und die Blitze können gesammelt werden um ein Power Up zu aktivieren. Sobald man das Power Up aktiviert, wird die normale Spielzeit kurz pausiert, das Spielfeld mit bunten Zielscheiben befüllt und daneben tippen wird nicht bestraft. Das gesamte Spiel ist im Comic-Stil gehalten und durch Animationen und Soundeffekten untermalt. Das Spiel wird immer schneller bis zu einem Grenzwert um die Schwierigkeit zu erhöhen, aber es nicht unmöglich zu machen. Außerdem fangen nach einiger Zeit die Objekte an sich zu bewegen. Die größte Schwierigkeit war nicht die Entwicklung selbst, sondern das Balancing. Das Spiel sollte nicht vorhersehbar, aber dennoch fair bleiben, damit jeder die selben Chancen für den Highscore hat. Zudem haben wir mit einem Hilfefenster versucht neuen Spielern das Spiel zu vermitteln. Wer ein Android-Gerät hat, darf sich die App gerne kostenlos im Playstore herunterladen. Grüße, Shaitan
  5. Hey Leute, ich stehe nun seit einigen Tagen vor einem vermeintlich kleinem Problem. Per Google finde ich allerdings keine Lösung, und auch die Suchfunktion hier, hat mir kein Ergebnis ausgespuckt. Ich möchte auf Mobile Devices abfragen, ob ein GUI-Element getroffen wurde, wenn das nicht der Fall ist, dann einen Raycast in die Szene schießen. Die Methode "EventSystem.current.IsPointerOverGameObject()" funktioniert bei mir nur mit Mausklicks. Sobald ich das Game aber auf meinem Android-Gerät abspiele und auf ein GUI-Button drücke wird der Raycast dennoch abgeschickt. Hatte von euch schon jemand das Problem und kennt eine Lösung? Ich nutze Unity 5. Hier mein Skript: for (int i = 0; i < Input.touchCount; i++) { if (Input.touches[i].phase == TouchPhase.Began) { if (!EventSystem.current.IsPointerOverGameObject()) { RaycastHit2D hitinfo = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(i).position), Vector2.zero); if (hitinfo) { //Do something } else { //Do something else } } } } Gruß Shaitan
  6. Text an Position von Gameobject

    Es soll in der GUI über einem GameObject liegen, also nicht in der 3D-Welt.
  7. Text an Position von Gameobject

    Den ersten Thread hatte ich auch gefunden, nur wie du schon sagst mäßig hilfreich. Der zweite sieht schon vielversprechender aus. Vielen Dank dafür. Ich versuche es weitestgehends ohne zweiten Canvas hinzubekommen. Zum einen, weil ich denke, dass das möglich sein muss und ich das lernen will und zum anderen habe ich es schonmal mit einem zweiten Canvas (mit Render Mode World Space) probiert, nur wurde mir darin der Text nicht angezeigt, warum auch immer. Meine Frage wäre jetzt aber immernoch: Wo muss ich denn nun den Vector zuweisen? RectTransform.position war für mich bisher das logischste, ist das richtig? Ich finde die Dokumentation von Unity da nicht wirklich aussagekräftig genug Gruß Shaitan Edit: Hat sich erledigt, ich habe es nun herausgefunden. Für alle, die wissen wollen wie es geht: Bei mir hatte über Code in meinem vorherigen Code die Witdh und Heigth je einen negativen Wert. Wenn ich diesen im Inspector positiv gemacht habe, war die Position perfekt und der Text sichtbar. Hier nun der Code womit das alles jetzt passt: //Erzeugt Objekt GameObject textpoint = (GameObject)Instantiate(prefPointText, Camera.main.WorldToScreenPoint(position), Quaternion.identity); //Setzt Canvas, Panel, oder sonstiges in einem Canvas als Parent textpoint.transform.SetParent(canPointText.transform); //Zugriff aus Text textpoint.GetComponent<Text>().text = "+" + amount; //Negative Width und Heigth positiv machen textpoint.GetComponent<Text>().rectTransform.sizeDelta = new Vector2(-textpoint.GetComponent<Text>().rectTransform.rect.width, -textpoint.GetComponent<Text>().rectTransform.rect.height); Ich hoffe die Kommentare sind hilfreich. Natürlich kann es sein, dass es dafür eine einfachere Lösung gibt. Aber so funktioniert es auf jedenfall erstmal. Auch wenn sich die Bildschirmgröße ändert @Jashan: Danke dennoch für Deine Hilfe. Gruß Shaitan
  8. Text an Position von Gameobject

    Danke für die schnelle Antwort. Welchem Wert muss ich das Ergebnis denn zurückgeben? textpoint.position funktioniert schonmal nicht Gruß Shaitan Edit: Bin jetzt schon ein Schritt weiter gekommen. Was nur jetzt komisch ist, dass meine Width und Height einen negativen Wert hat und dadurch nicht angezeigt wird. GameObject textpoint = (GameObject)Instantiate(prefPointText, Camera.main.WorldToScreenPoint(position), Quaternion.identity); textpoint.transform.SetParent(canPointText.transform); Vector3 screenpos = Camera.main.WorldToScreenPoint(position); textpoint.GetComponent<Text>().rectTransform.anchorMin = new Vector2(0, 0); textpoint.GetComponent<Text>().rectTransform.anchorMax = new Vector2(0, 0); textpoint.GetComponent<Text>().rectTransform.position = screenpos; Auch mit folgender Anweisung kann ich es nicht ins positive ändern: textpoint.GetComponent<Text>().rectTransform.sizeDelta.Set(-textpoint.GetComponent<Text>().rectTransform.sizeDelta.x, -textpoint.GetComponent<Text>().rectTransform.sizeDelta.y);
  9. Hey Leute, ich arbeite noch nicht so lange mit dem neuen GUI-System, habe aber meiner Meinung nach mittlerweile schon recht viel gelernt dennoch bin ich gerade am Verzweifeln. Und zwar habe ich ein Canvas für meine GUI (Screen Space - Overlay). Was passieren soll: Wenn ich auf ein Gameobject klicke, soll an dieser Stelle ein Text entstehen. Was ich bisher gemacht habe, war zu versuchen ein Text-Prefab zu erstellen und das dann per folgenden Code zu erzeugen: GameObject textpoint = (GameObject)Instantiate(prefPointText, Camera.main.WorldToScreenPoint(position), Quaternion.identity); textpoint.transform.SetParent(canPointText.transform); textpoint.GetComponent<Text>().text = "+" + amount; Grundlegend funktioniert der Code, der Text wird erstellt, laut hierarchy. Allerdings wird er nicht angezeigt. Das Problem ist, dass die Anchors nicht an der richtigen Stelle sind und die Größe, also diese blauen Punkte an den Ecken (mir ist gerade der Name entfallen, srry) ist sehr klein. Die Position ist perfekt durch den Code. Ich müsste also jetzt nurnoch die Größe und Anchors anpassen. http://www.directupl...5fsamib_jpg.htm (So sieht es aus) Kann mir jemand helfen? Oder eine simple Lösung für die Funktion geben? Prinzipiell soll passieren, dass bei einem Klick auf bestimmte Gameobjects, das Gameobject verschwindet (Bis hier funktioniert es Problemlos) und an der Position ein Text, der als Prefab gespeichert ist entstehen. Gruß Shaitan
  10. Nutzung von Texture Atlas für uGUI

    Vielen Dank. Ich habe mich bei dem Pack, welches ich mir geholt habe verlesen. Die Atlasse sind nicht für uGUI, sondern noch für nGUI >.< Kann ich die Source-Texture einfach verwenden um daraus einen eigenen Atlas zu machen, wie in deinem Tutorial? (Falls es in dem Video gesagt wird, tut mir leid, kann es erst später anschauen, da ich gerade in der Uni sitze )
  11. Hey Leute, ich suche mich seit 2 Tagen dumm und dämlich, daher wende ich mich an euch. Ich habe mir im Asset-Store ein Texture-Pack für GUI-Elemente besorgt, nun arbeitet das wohl mit Atlassen. Da ich mich noch nie wirklich mit dem GUI-System von Unity auseinander gesetzt habe, kenne ich mich damit auch nicht aus. Google spuckt mir leider auch keine brauchbare Information aus, mit der ich etwas anfangen kann. Was ich bisher rausgefunden habe ist, dass ein Atlas sozusagen ein Spritesheet ist, wo mehrere Icons in einer Datei sind um die Drawcalls zu reduzieren. Ich habe aber keine Ahunng wie ich das nun Nutze. Ich habe vorher mit Platzhaltertexturen meine GUI die hauptsächlich aus Buttons besteht zusammengebaut. Das Pakage hat in einem Ordner eine Source-Texture, ein Material und ein Prefab. Könnt ihr mir helfen, wie ich nun die Icons auf meine Buttons bekomme? Gruß Shaitan
  12. PlayerPrefs problem

    Wenn ich mir das so durchlese, hast Du die Grundlagen der C#-Programmierung noch nicht drin. Lern die am besten erstmal, dann kommst Du mit dem ganzen Zeug schon viel besser klar. Ich selbst schreibe C#-Tutorials, den Link dazu findest Du in meiner Signatur. (Alles mit dem Chef abgeklärt) Tut mir Leid, wenn ich Dir damit vielleicht ein bisschen Motivation nehme, aber wenn die Basics nicht drin sind, macht das ganze Thema mit Unity nicht viel Sinn. Gruß Shaitan
  13. Spawnintervalle unvorhersehbar aber fair

    Das Können des Spielers werde ich auf jedenfall einbauen. Ich denke in Form davon, dass mit jedem Ziel das erscheint und der Spieler fehlerfrei trifft, wird die Wahrscheinlichkeit erhöht ein Ziel zu spawnen, welches mehr Punkte gibt.
  14. Spawnintervalle unvorhersehbar aber fair

    Vielen Dank für Eure schnellen Antworten und Ideen. Interessant zu sehen wie andere an solche Probleme herangehen @jashan: Super Ideen, allerdings ist die ablaufende Zeit ein essentieller Spielfaktor, den ich nicht herausnehmen kann, da das ganze Spiel darauf basiert. Ich habe mir noch weiter Gedanken gemacht und bin auf eine Art Hybrid-Lösung gekommen, die ich mal ausprobieren werde. Die Idee ist es gibt 3 Intervall-Bereiche: einen kleinen, einen mittleren und einen großen Bereich. Realisiert durch ein Vector2 Array area mit 3 Zellen, je Zelle ein Bereich für je einen minimalen und einen maximalen Wert. Diese 3 Bereiche haben auch Wertigkeiten: klein -1, mittel 0 und groß +1. Eine Variable value startet beim Wert 1 (Eigentlich Wertigkeit 0, aber so kann ich diese Variable gleich als Index für ein Array nutzen), dann wird per Zufall entschieden welcher von den dreien genutzt wird. Die entsprechende Wertigkeit wird zu value addiert. Und aus dem Bereich eine Zufallszahl generiert, welche der neue Intervall ist. Nach Ablauf des Intervalls beginnt das ganze von vorn, nur dass nun der Wert von value nicht als Bereich per Random berücksichtigt wird. Also wenn value = -1 wird zwischen mittlerem und großem gewürfelt, bei +1 zwischen klein und mittel und bei 0 zwischen allen dreien. Dadurch ist noch ein kleiner Glückswert dabei, aber es gleicht sich aus. Also wenn ein hoher Intervall war, kommt ein kleiner oder mittlerer und andersherum. Der Ausgleich ist nicht zu 100%, aber ich glaube das macht dann auch ein bisschen den Reiz des Spieles aus private Vector2[] areas = new Vector2[] { new Vector2(3, 4), new Vector2(4, 5), new Vector2(5, 6) }; private int value; float CalcTimer() { int zz; do { zz = Random.Range(0, 3); } while (zz == value && value != 0); value += (zz - 1); return Random.Range(areas[zz].x, areas[zz].y); } Was haltet ihr von der Idee? Gruß Shaitan
  15. 2D: Kreisförmiges Generieren von UI Images

    Falls das Problem noch aktuell ist, könnten Dir eventuell Polarkoordinaten helfen. Wenn Dir Polarkoordinaten kein Begriff sind, versuche ich es mal kurz zu erklären. Die normalen x-, y-Koordinaten nennt man kartesische Koordinaten, die jedem, der mit Unity arbeitet ein Begriff sein sollten (Position.x, ...) Nun kann man aber auch ein anderes Koordinaten-System wählen, die Polarkoordinaten. Diese geben die Position über eine Vektorlänge und einen Winkel im Bogenmaß an. Der Vektor bei P(1 | 0) zeigt nach rechts mit der Länge 1, was im kartesischen den Punkt (1 | 0) entspricht. Bei Q( 1 | pi) zeigt der Vektor nach oben mit der Länge 1, was im kartesischen den Punkt (1 | 1) entspricht. (Beachte vor allem das linke von den beiden Bildern) Da Du bei den Polarkoordinaten eine feste Vektorlänge hast, wären damit deine GUI-Elemente in einem perfekten Kreis angeordnet. Für den Winkel der GUI-Elemente kannst Du dann einfach 360 / Anzahl Elemente machen. Diesen Wert noch in Bogenmaß umrechnen und Du hast Deine Polarkoordinaten. Ich weiß ehrlich gesagt nicht, ob es eine Methode von Unity gibt um Polarkoordinaten in kartesische umzurechnen, aber das kann man sich gut selbst bauen. Hier habe ich ein Beispiel, das funktionieren sollte (Habe ich schon selbst genutzt, auch im 2D): Vector3 PolarToCart(float degrees, float length) { float a = length * Mathf.Cos(degrees); float x = a * Mathf.Cos(0); float y = length * Mathf.Sin(degrees); float z = a * Mathf.Sin(0); return new Vector3(x, y, z); } Ich hoffe ich konnte weiterhelfen. Gruß Shaitan
×