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

Garzec

Members
  • Content count

    243
  • Joined

  • Last visited

  • Days Won

    1

Garzec last won the day on February 2 2017

Garzec had the most liked content!

Community Reputation

5 Neutral

About Garzec

  • Rank
    Advanced Member

Recent Profile Visitors

1,022 profile views
  1. Enumeratoren verstehen

    @Kojote ich habe noch nicht so ganz verstanden, was du meinst. Also der Code ist falsch bzw. könnte Fehler aufkommen lassen? Danke dir @Zer0Cool
  2. Enumeratoren verstehen

    @Kojote achso, den Parameter brauche ich für was anderes, aber fürs Beispiel hier ändere ich es ab
  3. Enumeratoren verstehen

    Hallo, ich tue mich echt schwer mit dem Verstehen von Enumeratoren. Ich habe vier Buttons, die den Spieler in eine bestimmte Richtung bewegen. Solange der Spieler sein Ziel noch nicht erreicht hat, soll der Input blockiert werden. public void Move() { if (!isMoving) // nur bewegen, wenn der Spieler sich momentan nicht bewegt { StartCoroutine(MovePlayer()); } } IEnumerator MovePlayer() { isMoving = true; Vector3 targetPosition = /* irgendeine Position */; while (transform.position != targetPosition) { transform.position = Vector3.MoveTowards(transform.position, targetPosition, info.MovementSpeed * Time.deltaTime); yield return null; } isMoving = false; } Der Enumerator MUSS etwas zurückliefern, innerhalb der Schleife liefert er etwas zurück. Aber was ist, wenn die Schleife gar nicht läuft? Normalerweise meckert der Compiler doch, wenn nicht alle Pfade abgedeckt sind. Beispiel fürs Meckern: int GetNumber() { if(1 > 2) { return 5; } } Der Code oben ist aber ansonsten in Ordnung oder gibt es da Verbesserungsbedarf?
  4. Healthbar mit Sprites erstellen

    Darf ich fragen, welche Gründe du für die Mask hast? Das habe ich jetzt noch nicht ganz verstanden. Der Weg, den ich oben beschrieben habe, kommt ja ohne Mask aus, indem man den Schädel einfach in den Vordergrund packt und dieser damit die Healthbar automatisch überdeckt. Nur das dort die Healthbar eben nach Augenmaß positioniert werden muss, warum auch immer. Aber schon einmal vielen Dank
  5. Healthbar mit Sprites erstellen

    Ja, das hatte ich mir schon gedacht. Da die Bilder aber verzerrt waren, hatte ich erstmal mit dem Scaling rumgespielt, war mir aber nicht sicher. Hast du auch eine Idee zur 2. Frage?
  6. Hallo, Ich habe eigene Sprites für die Healthbar (unten angehangen). Einmal der Hintergrund für die eigentliche Healthbar, dann ein Schädel, der die Healthbar überdeckt und die Healthbar, wenn sie fertig ist. Ich muss also für die Healthbar erst den Balken (Hintergrund) erstellen, dort ein Kind erstellen (eigentliche Healthbar) und dann auf gleicher Ebene wie der Hintergrund ein zweites Bild (Schädel mit leerer Healthbar) erstellen. Der Schädel muss unter dem Hintergrund sein, damit dieser im Vordergrund ist. 1. Damit die Bilder nicht verzerrt sind, haben wir die Größe aufs Original gesetzt (1280*600) und das Scale dann angepasst auf 0.1 beispielsweise. Macht man das so? 2. Die eigentliche Healthbar hat kein Sprite, da sie ja in dem Hintergrundbalken liegt. Gibt man ihr die gleiche Größe wie beim Vater, so muss man die Positionierung und das Scaling mit Augenmaß setzen. Ich glaube das geht auch einfacher und "richtiger" oder ..?
  7. Danke erstmal für deine Hilfe, leider habe ich mich vielleicht etwas falsch ausgedrückt, das hier soll die Healthbar in "fertig" sein. Und dabei dachte ich mir, man müsste nur die Flamme befüllen, habe also den Schädel von der Flamme getrennt. Die Flamme soll dann von links nach rechts gefüllt werden. Die Leiste unter der Flamme kann ignoriert werden, die kommt wieder weg.
  8. Hallo, ich möchte meine Healthbar mit Sprites optisch verbessern. Dabei nehme ich das Bild eines Schädels und einer Flamme. Der Schädel soll nur als Bild dienen, die Flamme soll die Healthbar werden. Ich gehe davon aus, dass ich mit dem Schädel nichts machen muss, er erfüllt ja keine Funktion, außer vorne links "positioniert sein". Füllt man ein normales Image mit bar.rectTransform.localScale = new Vector3(currentValue / maxValue, 1, 1); reicht es zwar für den Anfang, aber bei der Flamme funktioniert es nicht. Der Balken würde das Bild komplett überdecken. Jetzt habe ich SpriteMasks gefunden https://docs.unity3d.com/Manual/class-SpriteMask.html werde daraus aber nicht so ganz schlau. Normalerweise habe ich ein Image als Hintergrund und ein Child Image als eigentliche Healthbar. Das Child Image verändere ich dann im Scaling zwischen 0 und 1. Wäre jemand so nett, mir zu helfen, wie ich die Flamme mit der Spritemask so anbringe, dass die Flamme die Healthbar darstellt? In der Doku steht, unterstützt wird nur der Spriterenderer, Canvas Images haben aber standardmäßig diese Komponente gar nicht, muss ich da die Komponenten austauschen? (Möglicherweise eine dumme Frage) Ich habe mal die Flamme als Hintergrundbild angelegt, ein zweites Bild zum Kind gemacht und eine Spritemask erstellt. Diese Spritemask hat ebenfalls die Flamme als Bild.Versuche ich aber bei dem Child Image die Maske einzustellen, tut sich nichts. Danke schonmal
  9. Struktur des Resources Ordner

    Ok, habe gesehen, dass man beim Objektnamen vorher noch den Ordner davorpacken kann Resources.Load("Creatures/Player/meinObjekt") as GameObject;
  10. Struktur des Resources Ordner

    @Sascha verdammt, habs grade gelesen. Also müssen alle Objekte, die man über Resources.Load laden möchte, zwingend in diesem Ordner auf oberster Ebene liegen? Oder ginge auch folgendes Beispiel "irgendwie": Resources/Creatures/Player und das Objekt hieße dann PlayerInfo oder Resources/Music/Menu und die Datei hieße dann MainMenu Weil Unterordner innerhalb von Resources werden ja nicht mehr erkannt :/
  11. Struktur des Resources Ordner

    Dankenswerterweise bekam ich schon folgenden Hinweis https://docs.unity3d.com/ScriptReference/AssetDatabase.LoadAssetAtPath.html
  12. Hallo, möchte man etwas aus dem Resources Ordner laden, könnte man schreiben Resources.Load("meinObjekt") as GameObject; Klar, man kann ein Feld auch schon über den Inspector setzen, aber hier soll es mal um den Ordner gehen. Nun zur Theorie: Wie ist das denn, wenn man innerhalb dieses Ordners Unterordner hat. Beispielsweise einen Ordner für GameObjects und einen für Sounds. Dann müsste man den Pfad dahin noch dazwischen hängen. Anscheinend gibt es sowas nicht mehr https://docs.unity3d.com/ScriptReference/Resources.LoadAssetAtPath.html In Pseudo Code wäre das (Resources + "derRestlichePfad").Load("meinObjekt") as GameObject; Und gibt es irgendwelche Auswirkungen, wenn man das gesamte Projekt in den Resources Ordner packen würde? Dann hätte man im Pfad vielleicht ein bis zwei Ordner mehr, aber alles wäre eine "Ressource". Würde mich mal interessieren, testweise habe ich nämlich keine Probleme bemerkt. Danke schonmal
  13. Ability System aufbauen

    Hallo, ich würde mal gerne wissen, wie man ein Ability System aufbaut. Das Spiel selbst wäre 2D TopDown. Ich habe ein System mit Actions aufgebaut, je nachdem, welche Charakterklasse der Spieler auswählt, werden ihm dann bei Spielstart andere Fähigkeiten zugewiesen. public class Ability { public Ability(Action ability, int cooldown, Sprite icon) { AbilityToUse = ability; Cooldown = cooldown; AbilityIcon = icon; CurrentCooldown = Cooldown; } public Action AbilityToUse { get; set; } public float Cooldown { get; set; } public float CurrentCooldown { get; set; } public Sprite AbilityIcon { get; set; } public bool CheckAbilityReady() { return CurrentCooldown >= Cooldown; } public bool IsOnCooldown() { return CurrentCooldown < Cooldown; } public void ResetCooldown() { CurrentCooldown = 0; } public void IncreaseCooldown() { CurrentCooldown += Time.deltaTime; } } Die Fähigkeiten werden dann bei der Initialisierung der Charakterklasse gesetzt AbilityOne = new Ability(PlayerAbilityOne, CooldownAbilityOne, IconAbilityOne); AbilityTwo = new Ability(PlayerAbilityTwo, CooldownAbilityTwo, IconAbilityTwo); AbilityThree = new Ability(PlayerAbilityThree, CooldownAbilityThree, IconAbilityThree); AbilityFour = new Ability(PlayerAbilityFour, CooldownAbilityFour, IconAbilityFour); und durch die Wahl der Klasse definiert, hier mal als Beispiel der Cleric public class Cleric : CharacterClass { // anderes Zeug ... protected override int CooldownAbilityOne { get { return 3; } } protected override int CooldownAbilityTwo { get { return 7; } } protected override int CooldownAbilityThree { get { return 9; } } protected override int CooldownAbilityFour { get { return 35; } } protected override Sprite IconAbilityOne { get { return "PfadZumIcon"; } } protected override Sprite IconAbilityTwo { get { return "PfadZumIcon"; } } protected override Sprite IconAbilityThree { get { return "PfadZumIcon"; } } protected override Sprite IconAbilityFour { get { return "PfadZumIcon"; } } protected override void PlayerAbilityOne() { // Hier Code für Skill 1 } protected override void PlayerAbilityTwo() { // Hier Code für Skill 2 } protected override void PlayerAbilityThree() { // Hier Code für Skill 3 } protected override void PlayerAbilityFour() { // Hier Code für Skill 4 } } Und im Spiel selbst kann ich dann die Fähigkeiten nutzen und deren Cooldowns verwalten. Jetzt zu meiner Frage, macht man das so? Weil dadurch habe ich ja keine Monobehaviours und könnte im Code noch nicht auf Dinge im Spiel zugreifen, falls man mal beispielsweise 5 Projektile erzeugen will oder der Spieler sich heilen kann und man auf die HP zugreifen will. Gibt es einen besseren Weg? Mit Actions kenne ich mich leider nicht perfekt aus, sie dienen aktuell lediglich dazu, die Methoden als Parameter mitgeben zu können.
  14. Unity Remote 5 für Unity 2017

    Habe grade gesehen, dass man dafür Java / Android Zeugs installieren muss, also das JDK, NDK, etc. das muss ich erstmal machen, aber das benötigt man wohl nur, wenn man den Build direkt aufs Handy packen will.
  15. Unity Remote 5 für Unity 2017

    Ne, am PC bleibt das Spiel unverändert flüssig. Liegt wohl am Handy befürchte ich.
×