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

All Activity

This stream auto-updates     

  1. Today
  2. Daher hab ich ja eher die 2. Frage beleuchtet, ich glaube kaum jemand versteht, wie SO "richtig" & "sinnvoll" zu verwenden sind, daher etwas weiter ausgeholt
  3. Hier mal ein kleines Beispiel für die Verwendung von SO. Basisklasse: using UnityEngine; [CreateAssetMenu] public class ItemType : ScriptableObject { public string name; public Sprite icon; public float cost; public float weight; public float durability; public GameObject itemPrefab; //etc. } Subklasse: using UnityEngine; [CreateAssetMenu] public class WeaponType : ItemType { public bool oneHanded; public float damage; } Einfaches Inventar: using UnityEngine; public System.Collections.Generic; public class Inventory : MonoBehaviour { [System.Serializable] public class Slot { public ItemType itemType; public int amount; } public List<Slot> slots; } Wichtig zu erwähnen ist noch folgendes: SOs sind eigentlich nur "dumme Datencontainer" die "Initialwerte" für Instanzen beschreiben denen das SO zugeordnet wurde, das eigentliche Verhalten (beispielsweise einer Waffe) sollte von einer weiteren MonoBehaviour-Unityklasse übernommen werden. Die Werte des SO werden in die Startwerte der Waffeninstanz dieser Klasse übernommen: using UnityEngine; public class Weapon : MonoBehaviour { public WeaponType weaponSO; private bool oneHanded; private float damage; public float currentDurability; void Start() { oneHanded = weaponSO.oneHanded; damage = weaponSO.getDamage(this.gameObject); currentDurability = weaponSO.durability; } } Ebenfalls sollten instanzspezifische Werte nicht in den SOs abgelegt werden. Ein Beispiel hierfür wäre die aktuelle (Rest-)Haltbarkeit der Waffe. Man kann zwar sogenannte Delegate-Methoden ebenfalls in den SOs anlegen, aber diese sollten sich dann grundsätzlich auf die Werte der SOs beziehen und nicht primär auf die Werte der aktuellen "Item-Instanz" in der Szene. SOs gelten eben für alle Instanzen in der Szene und das sollte man im Hinterkopf behalten. (natürlich kann man die aktuelle Instanz einer Delegatemethode übergeben, um damit die aktuellen Werte der Instanz in der Delegatemethode zu verwenden) Ein Beispiel für eine Delegatemethode innerhalb eines SO. Ich übergebe hier die aktuelle GameObjekt-Instanz aus der Szene. Man könnte nun hier Werte aus der Instanz auslesen und diese der Methode übergeben. Ich habe es mal exemplarisch der "Durability" gemacht. using UnityEngine; [CreateAssetMenu] public class WeaponType : ItemType { public bool oneHanded; public float damage; public float getDamage(GameObject currentInstance) { // Here you can do something with the "currentInstance" // like get some data values from a component that is attached to the gameObject float currentDurabilty = durability; Weapon weapon = currentInstance.GetComponent<Weapon>(); if (weapon!=null) currentDurabilty = weapon.currentDurabilty; if (currentDurabilty == 0) return 0; // 0 damage if the weapon has no more durability if (onHanded) { return damage; } else { return damage*1.5f; } } }
  4. Tag auch! ScriptableObjects kannst du prima referenzieren. Wenn du gleich mehrere Referenzierst, hast du eine Auswahl: public Tool[] tools; private currentToolIndex; // Praktische Property, um das aktuelle Tool zu bekommen public Tool currentTool { get { return tools[currentToolIndex]; } } void Update() { // Hier currentToolIndex ändern, um Werkzeug zu wechseln, z.B. if(Input.GetKeyDown(KeyCode.1)) { currentToolIndex = 1; } // Das geht aber noch besser als mit vielen Ifs. // Falls du dafür einen Denkanstoß möchtest, sag bescheid. if(Input.GetMouseButtonDown(0)) { // Mach was mit currentTool, z.B. Debug.Log(currentTool.name + ": " + currentTool.damageToAnimals); } } Wenn du statt eines Arrays eine Liste hast, kannst du leicht Elemente hinzufügen oder entfernen. Damit kannst du dann bauen, dass Werkzeuge aufgenommen und fallengelassen werden können. using System.Collections.Generic; private List<Tool> tools; private currentToolIndex; // Praktische Property, um das aktuelle Tool zu bekommen public Tool currentTool { get { return tools[currentToolIndex]; } } public void AddTool(Tool tool) { tools.Add(tool); } public void DropCurrentTool() { tools.RemoveAt(currentToolIndex); } AddTool ruft dann irgendein anderes Script auf. Zum Beispiel ein Loot-Kisten-Skript: public Tool[] tools; public void TakeItems(ToolCarrier carrier) { foreach(var tool in tools) { carrier.AddTool(tool); } } Hab für das Beispiel das obige Script mal ToolCarrier genannt. TakeItems wird von dem Script aufgerufen, das die Kiste aktiviert. Alternativ kannst du auch auf ein Prefab eines am Boden liegenden Werkzeugs ein Script wie dieses hier packen: public Tool tool; public PickupItem(ToolCarrier carrier) { carrier.AddItem(tool); Destroy(gameObject); } Hoffe, die Beispiele helfen etwas.
  5. Hallo, ich wusste nicht genau was ich als Titel wählen sollte, ich hoffe es ist okay. Hier mal die Erklärung: In meinem 3D Spiel habe ich z.B. eine Machete als Waffe und eine Axt sowieso eine Hacke. Ich möchte ein ScriptableObject erstellen (z.B. "Tool"), dort möchte ich verschiedene Variablen zuweisen wie z.B. Schaden gegen über Tieren Schaden gegen über Bäumen Schaden gegen über Steinen usw... Außerdem halt die Icons für diese Items usw. Die Frage ist, wie genau kann ich dann zwischen diesen Dingen wecheln? Also z.B. dass wenn ich die Taste "1" drücke, dass dann die Machete ausgerüstet wird (und das 3D-Modell in der Hand gehalten wird) und genau so bei der Taste 2, 3 usw? Die zweite Frage ist: Solche Dinge sind ja theorteisch Items, Dinge wie Steine, Tränke etc. sind ja auch Items. Soll ich eine Basisklasse "Item" (ScriptableObject) erstellen oder verschiedene Klassen dafür erstellen? Wie funktioniert sowas dann mit dem Inventar? Wo ich z.B. eine Liste von Typ "item" habe? Ich hoffe die Fragen sind verständlich
  6. Unity3D - Rigidbody fail... Hilfe :D

    Kann ich nur zustimmen, wenn du möchtest das dir schnell und gut geholfen wird, dann "füttere uns" bitte ausreichend mit Informationen. Es gibt eigentlich kein zu viel an Informationen. Es ist auch sehr hilfreich Bilder oder ein Video zu erstellen. Bilder von der Szene selbst, aber auch von den Komponenten die an den Objekten hängen und deren Einstellungen.
  7. Unity3D - Rigidbody fail... Hilfe :D

    Nein, ist sie nicht. "Runterfallen" ist Standardverhalten von Rigidbodys. Dass Kräfte wie Gravitation auf die Dinger wirken, ist der Witz an den Dingern. Heißt deine Frage, dass deine Kugel nicht runterfällt, bis du ihn mit einem MeshCollider berührst? deine Kugel plötzlich durch den Boden fällt, wenn sie einen MeshCollider berührt? deine Kugel nicht wie gewollt auf einem anderen Objekt liegenbleibt, sondern runterrollt? Dazu kommt halt, dass du uns nur ein Minimum an Informationen gibst und wir raten müssen, wie die Situation aussieht. Was für Komponenten hat deine Kugel sonst noch? Einen SphereCollider? Sind irgentwelche Scripts im Spiel? Hat das Objekt mit MeshCollider, das du berührst, noch irgendwelche Komponenten von interesse? Was für ein Mesh hat dein MeshCollider drauf? Man kann da beliebig viel Infos zugeben. Es ginge sogar, zu viel zu erzählen. Aber das, was du da hast, ist echt etwas wenig.
  8. Unity3D - Rigidbody fail... Hilfe :D

    Erstens, danke für dein Antwort/en. aber... die frage ist doch so was von klar.... Was sollte ich da noch hinfügen...
  9. Unity3D - Rigidbody fail... Hilfe :D

    Versuch mal bei dem Meshcollider "Convex" anzuhaken oder tausch den Meshcollider mit einem anderen Collider (z.B. einem BoxCollider). Wenn es dann funktioniert, dann stimmt was mit deinem Mesh(-Collider) nicht. Hast du denn auch einen entsprechenden Collider an deinem Charakter? Wenn dieser auch einen MeshCollider hat, so sollte einer von beiden meines Wissens Convex sein. Aber bei einem simplen Sphere müsstest du ja einen Spherecollider haben (oder Capsulecollider)
  10. Neu Hier

    Willkommen!
  11. Yesterday
  12. Unity3D - Rigidbody fail... Hilfe :D

    Also komm, jetzt wird's albern. Wir sind hier keine Hellseher und "ich falle immer runter", was wirklich alles oder nichts bedeuten kann, hilft so ungefähr gar nicht. Versuch mal bitte, dir länger als 14 Sekunden für die Erstellung eines Beitrags zu nehmen.
  13. Unity3D - Rigidbody fail... Hilfe :D

    Hallo. Undswar will ich ein TP (Third Person) spiel erstellen... und wenn ich mein Char (ist ein simples Sphere) Rigidbody zufüge, fällt/fliegt mein char immer runter (wenn ich ein objekt mit Mesh Collider berühre). Wieso, und wie kann ich es beheben... LG. M
  14. Hallo zusammen, hier sind Teil 2 und Teil 3 der "Make a Game with Unity" Reihe, in denen ich ein terrain zur Szene hinzufüge und im 3. Teil die Grafik mit dem Post Processing Stack verbessere und auch weitere kostenfreie Assets ergänze. Viel Spaß dabei! Jay
  15. Rahmen/Box um Ziel?

    Kommt darauf an, wie dieser Rahmen aussehen soll. Komplexere Methoden sind spezielle Meshshader oder auch ein Kameraposteffekt. Für eine einfache Variante würde ich einfach einen Unity-Cube nehmen und diesem ein Material verpassen mit unten aufgeführter Textur. Dann erstellst du noch folgendes Material und weist dieses dem Cube zu. - Unity Standard - Rendering Mode "Transparent" ("Cutout" würde auch gehen, Nachteil: Ränder können zerfranst wirken, Vorteil: Metallic und Smoothness wirken nur auf den Rand) - Metallic 0 - Smoothness 1 - Albedo Textur siehe unten - Farbe Rot Den Cube skalierst du dann über ein Skript auf die Größe die dein Objekt hat und legst diesen um dein Objekt. Der Knackpunkt dafür ist die Textur, ich habe dir eine erstellt: Ergebnis: PS: Um alle Kanten des Cubes zu sehen bräuchtest du einen "Double Sided Transparent Shader" oder du müsstest den Cube aus 12 einzelnen Quads zusammensetzen. Ich hatte das hier schon einmal erklärt:
  16. #DEV-Log: Einblick in Dev-Life

    Jep, den gleichen Gedankengange habe ich auch Verfolgt und habe letzt endlich mich für die Umrandung entschieden als "Popup" der später klar auf den Bildschirm erkennbar ist. Das sich jeweils die Gegener vom Rest, also sprich den Environment, abheben. Ich glaub vll. ist es nicht schlecht nen Art Prototype Level aufzubauen wo man den Unterschied bzw. der Effect dort ein bißchen mehr sichbar ist und man es anhand diesem besser abwägen kann.
  17. Neu Hier

    Hallöchen Vorweg ich beschäftige mich eigentlich schon eine Weile mit Programmieren, jedoch nicht Hauptberuflich. Mein Name ist Simon, ich bin 18 Jahre alt und komme aus Zürich. Ich bin in der Ausbildung zum Polymechaniker, beschäftige mich also eher mit der Programmierung von CNC Maschinen. Mit Unity habe ich eigentlich noch nicht wirklich was gemacht, möchte jedoch mich mit dieser Materie beschäftigen. Ich möchte gerne in Zukunft Erfahrung gewinnen und hoffe das ich eventuell sogar jemandem helfen kann.
  18. Spielergesteuerte rotierende Tür

    Naja, wenn nun alles wie gewollt klappt, dann ist ja gut. Oft zeigen Fehler an, daß ein Code zu "unaufgeräumt" oder schlecht strukturiert ist. Der obige Code ist mir auch zu "umständlich" für seine eigentliche Funktion, aber es ist noch "im Rahmen".
  19. Schön war's am Freitag. Feucht fröhlich, sehr gute Pizza - Alexej sei dank. Ich muss eindeutig VR-Spielen üben. Vielleicht wird das ja mal was mit unserem GameJam....
  20. Rahmen/Box um Ziel?

    Hallo ich habe eine Frage zur Vorgehensweise und ggf. für verwendbare Funktionen. Wenn ich eine Rakete verschieße und ein Ziel in Reichweite ist, und die Rakete es als Ziel erfasst hat um eben dieses Objekt einen roten Rahmen/rote Box machen. Ich hatte im Internet einige Beispiele gefunden, allerdings waren die so kompliziert wie auch die Beispiele aus dem Unity-Store. Deswegen frage ich mal hier. Gruß
  21. Spielergesteuerte rotierende Tür

    @Zer0Cool was möchtest du denn alles überarbeiten Kommt dir das gesamte Script völlig falsch vor? Deine ersten Vorschläge konnte ich problemlos anpassen.
  22. X-Box Controller Erkennungsproblem

    Hängt auch immer vom Betriebssystem ab, aber unter Windows liefert Unity denke ich keinerlei Gerätetreiber mit und setzt damit auf der vorhandenen Treiberschicht auf und die sorgen für die Erkennung und die Weiterleitung von Signalen von Controllern. Ich denke Unity schleift dann nur noch Inputsignale durch. Bei anderen Systemen bin ich mir nicht ganz sicher. Was man auf noch einmal überprüfen könnte, wäre ein Wechsel von Controllern, während Unity bereits am Laufen ist. Vielleicht gibt es hier ein Problem bei einer "Art von Inititalisierung" von Unity?, daß wäre dann aber nur reine Spekulation.
  23. X-Box Controller Erkennungsproblem

    Ja, so sehe ich das eigentlich auch. Meine Recherche im Netz hat zwar ein paar Ergebnisse gebracht, aber dort dreht es sich meist um den Mac oder wenn 2 Controller gleichzeitig im Spiel genutzt werden sollen, weil es dann wohl zu Mappingproblemen kam. Ist aber alles schon ca. 2 Jahre alt.
  24. Last week
  25. X-Box Controller Erkennungsproblem

    Also konkret noch keine Erfahrungen damit gemacht, aber ein Ein- und Ausstöpseln und wenn er dann "reagiert", daß weist eigentlich darauf hin, daß hier das Betriebssystem am "werkeln" ist (Treiber) und es nichts mit Unity zu tun hat ... Unity lauscht nicht an USB-Ports etc. das tun nur Treiber.
  26. Objekte Aktivieren/ Deaktivieren

    Zumeist geht man auch so vor, daß´man zuerst die Szene aufbaut und wenn alle notwendigen Objekte in der Szene vorhanden sind, sich erst dann Gedanken um das "Culling" macht und eine weitere Optimierung der Szene. Hier kann man die Szene auch noch einmal so "umbauen", daß der Spieler beispielsweise nicht von bestimmten Positionen "alles" sehen kann. Hier versucht man dann quasi dem Spieler bewusst "den Blick zu verstellen", zum einen macht es das Design meist interessanter und zum anderen verbessert es die Performance in der Szene. Ist die Szene dahingehend "optimiert", dann kann man das "Occlusion Culling" in Unity für jedes Objekt einzeln einstellen und letzten Endes "Baken". Ähnlich wie du es auch mit einer Lightmap in Unity machen würdest. Generell ist es nicht verkehrt Meshes mit reduzierter Polygonanzahl, wenig Materialien und Texturen zu verwenden. Zudem kann man auch schon einmal LOD-Gruppen für Objekte erstellen, insofern man LODs für seine Meshes / Objekte besitzt. Indem man wenig Materialien und Texturen verwendet spart man eben auch wieder Speicher. Kann eine Szene extrem groß werden, dann sollte man über asset streaming und scene streaming nachdenken. Hat man sehr sehr viele gleichartige Objekte in der Szene, dann kann man noch weiter optimieren, siehe hierzu: https://docs.unity3d.com/Manual/GPUInstancing.html
  27. Objekte Aktivieren/ Deaktivieren

    Eigentlich wollte ich lediglich von anfang an darauf schauen, das mein Spiel so wenig PC Leistung braucht wie mit dem, was ich gerne hätte, nötig ist. Ich habe nicht vor mein Spiel gigantisch groß zu machen, und auch nicht, das das Innere und das Äußere eines Hauses in der selben Szene ist. Mein Spiel soll ein einfacher Platformer werden, bei dem es Zwar Häuser gibt, in die du allerdings nicht hinein gehen können sollst, ergo nur Dekokram. Die frage mit dem, wie viel Objecte gleichzeitig möglich sind, ist eher eine neugierfrage, ob es wenige sind, bei denen ich mir gaaanz genau über jedes Object gedanken machen muss, oder ob man das ein oder andere "nutzlose" Deko element mit auf die Karte schmeißen kann. Ich glaube nicht, das ich ein Unrealistisch großes Spiel ausdenke. Ich bin da aktuell recht klein, wie ich finde. Aber danke für die Antworten, dann mach ich mir da erstmal keinen Kopf mer drum.
  1. Load more activity
×