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

Leaderboard


Popular Content

Showing most liked content since 03/19/2018 in all areas

  1. 5 points
    Ohwe ohwe war ich hier lange nicht mehr unterwegs... Kennt mich hier überhaupt noch jemand? Das Studium frisst einen auf... Aber: Ich kann endlich mal wieder was (öffentlich) von meiner Arbeit zeigen! Und noch dazu ein Unity-Projekt, was doch eher untypisch ist. In den letzten 4 Monaten habe ich im Rahmen des 5. Semesters ein Augmented Reality Sandbox Game entwickelt - vielleicht kennt ihr das aus Museen, Sea Life, etc, manchmal gibt es da so Sandkästen, auf die mehr oder weniger in Echtzeit Höhenlinien projeziert werden. Ich habe das gesehen und mir gedacht: Da muss man doch mehr mit machen können. Und nach viel viel Arbeit kann ich euch meine erste Installation präsentieren: Basic Info: Man nutzt den Schatten seiner Hände um herumwirbelnde Natur-Teilchen einzufangen, diese kann man in vorher gegrabenen Mulden sammeln und so Stück für Stück die Landschaft vergrößern. Technischer Breakdown: Ich nutze eine Microsoft Kinect 2 um die Höheninformationen des Sandes und der Hände zu bekommen. Aber: Das "Raw" Kinect Tiefenbild ist für diesen Zweck eigentlich komplett unbrauchbar. Das rauscht wie verrückt, und immer wenn es eine harte Kante gibt werden die Höheninfos an dieser Kante einfach null - lauter so Zeug. Deshalb war mein erster Schritt das Kinect Bild möglichst performant und vor allem schnell zu filtern und zu smoothen. Dieses GIF zeigt den Effekt. Normalerweise ist es ja so, dass wenn man seine Hand jetzt über den Sandkasten hält, diese Höheninformation auch in die Projektion aufgenommen wird und dort ein sehr hoher Berg entsteht (einer der Gründe für die große Verzögerung der bekannten AR Sandboxes). Ich wollte das auf keinen Fall, weshalb ich nach einem Weg gesucht habe, die Hände aus den Höheninformationen herauszufiltern. Das funktioniert viel billiger als man vielleicht annimmt: Man kalibriert den Tisch einmal ohne Hände und ab diesem Moment werden alle Informationen, die über einem bestimmten Threshold sind, einfach ignoriert. Sobald man die Hand 3cm über den Sand hält, wird diese wieder als Terrain wahrgenommen (Es gibt dann mehrere Thresholds für schnelle Bewegungen etc.) Das Resultat fühlt sich nach einer sehr "magischen" Interaktion an, da eben nur die wirklichen Sandinteraktionen auch Änderungen in der Projektion hervorrufen. Zugleich bekomme ich aus den gefilterten Höhendaten dann eine Maske für die Hände, mit der ich über OpenCV Handgesten und Formen für den Game Input erkennen kann. Da dieses ganze System dann doch immer langsamer und nicht richtig "befriedigend" auf den Input reagiert habe ich das Kinect Bild in 8, sich überlappende Teile aufgeteilt, die auf unterschiedlichen Threads verarbeitet werden. Threading (und vor allem Multi Core Threading) ist in Unity ja bekanntermaßen eher, nennen wir es mal: kompliziert. Aber für ein Spiel wie dieses war es super essentiell, dass alles so schnell wie möglich reagiert. Ich berechne die Positionen der Hand Schatten aus der Projekterposition und den Kinect Daten, um die Spieler damit Objekte einfangen zu lassen - da will man natürlich keinen Lag haben. Und auch das Graben fühlt sich so richtig gut an. Visuall Stuff Das Terrain wird aus einer Displacement Map (die aus den verbesserten Höheninfos generiert wird) erstellt. Der Rest passiert dann in einem Shader: Ich berechne mir die Normalen aus der Heightmap, indem einfach ein Vektor aus einem umliegenden Dreieck von Höhendaten berechnet wird - die Normalmap brauche ich für die richtige Beleuchtung der Landschaft. Wenn man jetzt die Höhe vom Mittelpunkt dieses Dreiecks mit der Höhe von den Eckpunkten vergleicht, kann man eine Realtime Curvature Map berechnen - die ist für schöne Schneebedeckte Bergspitzen und saftig grüne Täler. Die Steigung der Normalen wird auch noch dazu berechnet um Felsen an Steilwänden zu erzeugen und die Wälder an solchen Stellen auszumaskieren. Hier mal eine kleiner Debug Ansicht davon: Der ganze Landschaftsshader ist dann doch sehr groß - es gibt eine Art "Fake"-Erosion, damit die Felsen schick aussehen und eine riesige Anzahl Noises um die Sandstrände, Schneeverteilung, Wälderfarben, Meereswellen etc. zu erzeugen. Das ist aber nur die Landschaft! Es gibt auch noch die dunkle, zerglitchte Welt mit dem selben Setup, aber eben anderen erzeugten Effekten. Da sich das Spiel ja um das Fangen und Verbinden von Natur-Fragmenten dreht sollte diese "Verbindungs-Interaktion" etwas ganz besonderes werden und dem Spieler das visuelle Feedback geben, etwas richtiges getan zu haben. Mithilfe eines Voronoi Effekts habe ich die ganzen Natur-Teile sich miteinander verbinden lassen - jedes Natur Objekt kann sich über einen Shader so hin morphen, dass es in seine umgebenden Voronoi Positionen passt. Das erzeugt einen sehr coolen, snappy Effekt als ob man ein passendes Puzzlestück gefunden hat. Solltet ihr in zwei Wochen zufällig in Stuttgart sein könnt ihr gerne auf der FMX Conference 2018 vorbeischauen, wo das Spiel öffentlich präsentiert wird und dann auch tagsüber spielbar ist. Wenn nicht - ich versuche gerade Museen und Ausstellungen ausfindig zu machen, die sich für so ein Exponat interessieren könnten. Wenn ihr da Ideen habt, schreibt mir doch gerne! Zum Abschluss noch zwei schöne Making Of Bilder Vielen Dank fürs Lesen & ich freue mich auf Fragen und Feedback!
  2. 4 points
  3. 3 points
  4. 2 points
  5. 2 points
    Laut dem Tutorial musst du an dieser Stelle zusätzlich die anderen Menü's deaktivieren. In dem Fall bei dem Zurück-Button alle Menü's außer das Hauptmenü. siehe 11:24 in deinem Video. Du musst also immer drauf achten, daß immer nur 1 Menüobjekt aktiv ist, also entweder "Hauptmenü", "Maps" oder "Einstellungen". wenn ein Button beispielsweise das "Maps"-Menü aktiviert, dann muss du "Hauptmenu" und "Einstellungen" ausschalten (Hauptmenü reicht vermutlich) beim Zurück Button des "Maps-Menü" muss das "Maps-Menü" deaktiviert und "Hauptmenu" aktiviert werden
  6. 2 points
    Ich bin ja immer auf der Suche nach hilfreichen Shadern und Tools. Wer ein fließendes Gewässer in sein Spiel einbauen möchte steht denke ich vor einigen Herausforderungen. Zum einen soll es halbwegs natürlich Ausehen aber eben auch nicht viel Performance fressen (siehe Water Assets von Unity). Zudem brauch man auch nicht immer gleich einen ganzen Ozean. Oft möchte man nur kleine Tümpel, kleine Flüsse oder einen Wasserfall visualisieren. Wenn die Lösung dann nichts kostet umso besser. Folgenden kleinen Fluss (aus der Demoszene) ist mit einem Shader des Tools "Vertex Painter" erstellt. Diesen kleinen Fluss habe ich zudem um eine Reflectionmap angereichert. Das Tool ist leider nicht einfach zu Bedienen, also wenn ihr Fragen habt ... Hier ein kleiner Video wie solch ein kleiner Fluss aussehen kann. Da das Ganze nur ein Mesh mit einem Shader drauf ist, ist die Performance Vernachlässigbar. Zudem kann man Flussrichtung, Reflektionen, Farbe des Wassers, Wellenform einstellen. Video: https://streamable.com/tnw4f
  7. 2 points
    Ein Spiel für eine GameChallenge auf Youtube.
  8. 2 points
    Hallo, Allen ein erholsames Osterfest und mögen euch die Ideen nicht ausgehen. VID-20180401-WA0008.mp4 Gruß Jog
  9. 2 points
    Screenshotsaturday!! Hier kommt einfach mal ein Screenshot vom neuen Ghost House Flipper, von gerade eben. Alle Lämpchen sind an, was normalerweise nicht vorkommen kann.
  10. 2 points
    So heute einmal mit "Custom-Editoren" beschäftigt, da ich nun doch einzelne "Decorator-Drawer" im Skript herausgeschmissen habe. So Sachen wie Logo's und Label-Bereiche und Buttons waren etwas kniffelig. Zudem gibt es verschiedene Layout-Klassen die man in einem Custom-Editor mixen muss, daß hat Unity nicht gut gelöst... Hier das aktuelle Ergebnis:
  11. 2 points
    Grüße zusammen, ich möchte euch nur kurz passend zum St. Patricks Day Happy Flappy Unicorn vorstellen. Würde mich sehr über eine positive Bewertung freuen. Damit Ihr das ganze auch werbefrei testen könnt anbei noch ein paar Codes: vielen dank und viel spass beim highscoren . Android: https://play.google.com/store/apps/details?id=com.Dataflox.HappyFlappyUniscorn IOS: https://itunes.apple.com/de/app/happy-flappy-einhorn/id1358737802?l=de&ls=1&mt=8 #Android: 90FG3UREQQ5EKSYEUN90ZHA G7BJR7D9HQG4V38129FSQXT T8M42PEQ8LW9CJDZRVQ3E44 T93RVST6EBWQ90EZUTXHJ2E 6FWEXR5606RY5R1PSJBKRJB 4J65P9VRSWZELF96ENY5RZX A93LCQV5MXBYTU0GE50YH2W 7ZFBVQL7EWA1RE2QQ3L8ZTH TTAT1YBUKTU06PCKHKJV36Y D4EGF5C1A3HS69ZJSC5H0T0 1GLWYDLV4UR0QDN30TE6257 BW92BCBWSD9F8C3043J7SPX AHUBVBS2ZG1BA2ND5JY5TMX X482D2BQY84LLAS673Q6PEY 73CBNWT8ER8CT34ERZXVVH9 #IOS COdes: AXX6X4XNPTNF N4HPFX9R7X4P XYK9FPEHNNPP 6PRFA9MRHP7P M9NJR7LHPHTA F3JXAFPYWAAY 3M4EYNYTWAYR L937JEJEJKNR 3FN9NFY6XY3L 4Y9443RLL7LE YMKKJT9HX4KM YL4MJEP3HF94 T4963P7939EE RHYKW69H63YJ JMAWYYA4REFP
  12. 2 points
    Mit dem neuen Patch 0.0.2.19 kommen eine Menge neuer Inhalte im Bereich Housing hinzu. Der Patch stellt damit die Komplementierung der Housing-Systems dar. Mit dem Patch 0.0.2.19 wird das Housingsystem von Negaia mit seiner kompletten Funktion implementiert. Dies bedeutet, dass Spieler die Auswahl aus vier verschiedene Gebäuden haben und diese mit Möbel und pro Gebäude mit einer Werkstatt ausstatten können. Folgende vier Gebäude sind verfügbar: Einstöckiges Steinhaus Zweistöckiges Fachwerkhaus Dreistöckiges Fachwerkhaus Fünfstöckiger Turm Die Gebäude können in Dörfern auf käuflich erwerbbaren Grundstücken erstellt werden. In die Häuser können dann Werkstätten platziert werden um nicht immer nach Nurimon reisen zu müssen. Die nachfolgenden Werkstätten sind mit dem Patch implementiert: Schreinerei Schmiede Schneiderei Weberei Spinnerei Alchemistenlabor Metallurgenwerkstatt Gerberei Steinmetzwerkstatt Darüber hinaus wurden noch einige Gegenstände implementiert, welche für die Herstellung der Werkstätten notwendig sind: Zahnrad Nähmaschine Eisenkessel Holzstuhl Blutwurz Gerbstoff Neben der Vielzahl an neuer Features wurden am Mountsystem einige Bugfixes durchgeführt die das Spawnen der Mounts im Area of Interest (AoI) sicherstellt. Vor dem östlichen Ausgang des Dorfes Santhnor sind die Bäume nun fällbar. Das sollte das Farmen von Holz in Verbindung mit den Dorfwerkstätten deutlich beschleunigen. Wir hoffen das der neue Content Spaß bereitet und freuen uns auf Euer Feedback
  13. 1 point
    Edit > Project Settings > Player oder File > Build Settings > unten auf "Player Settings..."
  14. 1 point
    Bin zwar nicht der Thread Ersteller, aber Thema interessiert mich auch und den Einsatz finde ich sehr interessant. Das heißt also für Jedes Objekt was übersetzt werden muss, muss man eine Instanz der Klasse einlegen? Ist das nicht dann nciht zu viel Arbeit? Wenn man bedenkt wieviel verschiedene Buttons Namen man hat und jede einzelne Instanz muss man dann ja in anderen Script über public Variable einbinden. Kann man das ganze irgendwie automatisieren, wenn man ein Knopf drückt, dass gesamte Menü übersetzt wird? z.b sowas: void LanguageChange(String language) { ok_Button.text = language.ok_ButtonName; exit_Button.text = language.exit_Buttonname; //... //usw. } So, dass je nachdem welchen Namen Language hat, die richtige Instanz der Übersetzungs Klasse gewählt wird und ohne ganze Prüferei wie: void LanguageChange(String language) { if(language == "de") { ok_Button.text = languageDe.ok_ButtonName; } else if(language == "en") { ok_Button.text = languageEn.ok_ButtonName; } //... }
  15. 1 point
    Das kommt ganz allein darauf an, wie veränderbar deine Konstrukte sind. Wenn du jetzt ein Objekt mit Unterobjekten erzeugst, wo später nichts mehr hinzugefügt oder verändert wird, dann ist es nicht schlecht, wenn du dir für alle Komponenten, die du ansprechen willst, public Variablen erzeugst und sie im Inspector zuweist. Es macht gerade dann Sinn, wenn von einem Typ mehrere vorhanden sind. Als Beispiel würde ich mal einen Körper mit mehreren BoxCollidern sehen. Da ist es per code recht schwer zu identifizieren, welchen dieser Collider du denn nun einer Variable zugewiesen hast. Man kann das aber auch genaus im Code machen. Da es ja kein "Find" ist, was in der ganzen Szene suchen würde, sondern ja nur ein Verknüpfen einer Komponente des Objektes selbst bzw. eine Komponente einens Child, braucht das nicht viel Performance. Natürlich sollte der GetComponent<> Befehl auch nur selten, am Besten nur einmalig, aufgerufen werden. Aber du könntest das in der Awake() mit tausenden Objekten machen, ohne Unity damit zu überlasten. Dann hätte vielleicht die ersten Sekunde mal keine 60fps. Macht auch nix. Ich persönlich mache diese Verknüpfungen zu den Komponenten in der Regel per Code, wenn ich auf einen zentral liegende Koponete zugreifen will. Z.B. wenn sie auf der MainCamera liegt oder im Objekt selbst und/oder dessen Kindern. Und natürlich dann wenn ein Prefab Zugriff auf Komponenten anderer Objekte haben will. Einem Prefab kann man keine Info von anderen Objekten im Inspector zuweisen, die nicht selbst zum Prefab gehören. Also man kann natürlich schon, dann muss aber dieses Prefab schon in der Szene drin sein und dann bezieht sich das auch nur auf diese eine Instanz des Prefabs. Wenn das Prefab also ein statisches Szenenelement ist, macht es trotzdem Sinn, public Variablen zu erstellen, die dann im Inspector gefüllt werden. Fazit: Nutze das Hinzufügen im Inspector, so oft es möglich ist, denn es spart Codearbeit, das finden der Componente und erleichtert das identifizieren, wenn von einem Typ mehrere in einer Szene vorhanden sind. Immer dann, wenn das Objekt selber oder das Objekt wauf das zugegriffen werden soll, nicht zu Beginn in der Szene drin sind und auch nicht zusammen ein Prefab bilden, musst du leider per Code danach suchen und die Referenz bilden. Oder andere Mechanismen nutzen um eine Kommunikation herzustellen.
  16. 1 point
    Hier mal ein Bild von meinem Beby. Büschen tiefer und so Kleinkram. Sonst alles original. Nicht ganz so Rückenschonend auf blöden Straßen. Aber macht Laune im Kartfeeling.
  17. 1 point
    Hab am Shader nur die Schwingfrequenz geändert, verzerren tut sich da eigentlich nix, daß muss dann ein anderes Problem sein, hast du den Mesh geändert? Hier der Shader ohne die Schwingfrequenzänderung, aber ich vermute das dies nicht das Problem war, Vielleicht hattest du auch an den Variablen des Shaders gedreht und diese haben sich nun durch das erneute Einspielen des Shader zurückgesetzt ? Shader "Custom/Grass/GrassBending" { Properties{ _Color("Main Color", Color) = (1,1,1,1) //_MainTex("Base (RGB) Trans (A)", 2D) = "white" {} _MyArr("Tex", 2DArray) = "" {} _Cutoff("Alpha cutoff", Range(0,1)) = 0.5 _ShakeDisplacement("Displacement", Range(0, 1.0)) = 1.0 _ShakeTime("Shake Time", Range(0, 1.0)) = 1.0 _ShakeWindspeed("Shake Windspeed", Range(0, 1.0)) = 1.0 _ShakeBending("Shake Bending", Range(0, 1.0)) = 1.0 } SubShader{ Tags{ "Queue" = "AlphaTest" "IgnoreProjector" = "True" "RenderType" = "TransparentCutout" } LOD 200 Cull Off CGPROGRAM // to use texture arrays we need to target DX10/OpenGLES3 which // is shader model 3.5 minimum #pragma target 3.5 #pragma surface surf Lambert alphatest:_Cutoff vertex:vert addshadow UNITY_DECLARE_TEX2DARRAY(_MyArr); // sampler2D _MainTex; // fixed4 _Color; float _ShakeDisplacement; float _ShakeTime; float _ShakeWindspeed; float _ShakeBending; float dist; float _GrassAlpha; struct Input { //float2 uv_MainTex; float2 uv_MyArr; float3 worldPos; }; void FastSinCos(float4 val, out float4 s, out float4 c) { val = val * 6.408849 - 3.1415927; float4 r5 = val * val; float4 r6 = r5 * r5; float4 r7 = r6 * r5; float4 r8 = r6 * r5; float4 r1 = r5 * val; float4 r2 = r1 * r5; float4 r3 = r2 * r5; float4 sin7 = { 1, -0.16161616, 0.0083333, -0.00019841 }; float4 cos8 = { -0.5, 0.041666666, -0.0013888889, 0.000024801587 }; s = val + r1 * sin7.y + r2 * sin7.z + r3 * sin7.w; c = 1 + r5 * cos8.x + r6 * cos8.y + r7 * cos8.z + r8 * cos8.w; } // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader. // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing. // #pragma instancing_options assumeuniformscaling UNITY_INSTANCING_CBUFFER_START(Props) UNITY_DEFINE_INSTANCED_PROP(fixed4, _Color) UNITY_DEFINE_INSTANCED_PROP(float, _TextureIndex) // put more per-instance properties here UNITY_INSTANCING_CBUFFER_END void vert(inout appdata_full v) { float factor = (1 - _ShakeDisplacement - v.color.r) * 0.5; const float _WindSpeed = (_ShakeWindspeed + v.color.g); const float _WaveScale = _ShakeDisplacement; const float4 _waveXSize = float4(0.048, 0.06, 0.24, 0.096); const float4 _waveZSize = float4 (0.024, .08, 0.08, 0.2); const float4 waveSpeed = float4 (1.2, 2, 1.6, 4.8); float4 _waveXmove = float4(0.024, 0.04, -0.12, 0.096); float4 _waveZmove = float4 (0.006, .02, -0.02, 0.1); float4 waves; waves = v.vertex.x * _waveXSize; waves += v.vertex.z * _waveZSize; waves += _Time.x * (1 - _ShakeTime * 2 - v.color.b) * waveSpeed *_WindSpeed; float4 s, c; waves = frac(waves); FastSinCos(waves, s,c); float waveAmount = v.texcoord.y * (v.color.a + _ShakeBending); s *= waveAmount; s *= normalize(waveSpeed); s = s * s; float fade = dot(s, 1.3); s = s * s; float3 waveMove = float3 (0,0,0); waveMove.x = dot(s, _waveXmove); waveMove.z = dot(s, _waveZmove); v.vertex.xz -= mul((float3x3)unity_WorldToObject, waveMove).xz; } void surf(Input IN, inout SurfaceOutput o) { //fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * UNITY_ACCESS_INSTANCED_PROP(_Color); fixed4 c = UNITY_SAMPLE_TEX2DARRAY(_MyArr, float3(IN.uv_MyArr, UNITY_ACCESS_INSTANCED_PROP(_TextureIndex))) * UNITY_ACCESS_INSTANCED_PROP(_Color); o.Albedo = c.rgb; float dist = distance(_WorldSpaceCameraPos, IN.worldPos); dist = clamp(dist / 300, 0.4, 1.0); o.Alpha = c.a - dist - _GrassAlpha; } ENDCG } Fallback "Transparent/Cutout/VertexLit" } Die Textur kannst du hier ändern, 256x1 gibt es nicht, aber du kannst 256x256 einstellen: / See Texture2DArray in unity scripting API. Texture2DArray textureArray = new Texture2DArray(256, 256, slices, TextureFormat.RGBA32, false);
  18. 1 point
    Bei in Unity erstellten Animationen ist es ein wenig anders (.anim-Files) als bei FBX Files. Hier kann man sich entscheiden, ob Root-Motion-Data erzeugt werden soll oder nicht. Dein Problem könnte wie gesagt schon damit zusammenhängen, zudem du dir scheinbar nicht im Klaren darüber bist, ob deine Animation Root-Motion verwendet oder nicht: https://unity3d.com/de/learn/tutorials/topics/animation/authoring-root-motion Das kein Button fürs Erzeugen von Root-Motion da ist könnte daran liegen, daß du nur Childs deines Animationsobjektes animierst. Aber laut deines Gifs von oben hat deine Jump Up-Animation auch keine Bewegung des deines Sprites nach oben, nur die Jump Down schiebt das Sprite nach unten. Sieht also nach "einem Fehler" in der Jump-Up-Animation aus. Für mich sind aber beiden Animationen seltsam. Entweder man steuert die Y-Position des Sprites per Skript oder eben nicht und dann sollten die Animationen des Sprites entweder NICHT nach oben und unten bewegen oder eben in einer konstanten Art und Weise nach oben und unten, so daß das Sprite wieder an seiner Ausgangsposition landet. Beides vermischt (wie in deinem Fall) macht keinen Sinn.
  19. 1 point
    Ich denke mal du störst dich an der fehlenden Root-Motion. Diese kannst du hier einstellen und zwar unter "Root Transform Position (Y)" / "Bake Into Pose". Für eine Bewegung des NPCs nach oben über die Animation sollte da kein Haken gesetzt sein: https://docs.unity3d.com/Manual/RootMotion.html Zudem muss im Animator "Apply Root Motion" aktiviert sein:
  20. 1 point
    Hier mal n kleines Video über die Rennwagen. Mittlerweile kenne ich fast alle persönlich und die Saison geht wieder los. Denn viele fahren heute noch auf herrlichen Rennstrecken. Falls die mal jemand in echt sehen will. Fast alle Texturen die ich gemacht habe für mein Trabi fahren heute noch. An die 80 PS....aus einem 26 PS Motor!!! :)
  21. 1 point
    Nein ich denke eher nicht, aber es gibt "Ready-to-Use" Assets die du verwenden kannst, sowohl kostenlose als auch welche aus dem Unity Store.
  22. 1 point
    FBX ist Unitys natives Format für 3D-Modelle, das kann es also am besten importieren. Von Blender zu FBX gibt's allerdings ein paar Hürden, die sowohl beim Export aus Blender oder eben Alternativ beim Import einer .blend-Datei genommen werden müssen. Für Letzteres startet Unity im Hintergrund auch nur Blender und lässt als FBX exportieren. Bei welcher Hürde es bei dir knallt, kann ich nicht genau sagen. Hauptproblem ist, dass Blender und Unity unterschiedliche Koordinatensysteme benutzen (Blender hat die Z-Achse als vertikale Achse, Unity die Y-Achse). Die verdrehten Flügel könnten von der Animation kommen (versuch mal, die nicht mit zu importieren) oder davon, dass du die Objekte in Blender komisch gedreht hast. Probiere damit am besten etwas rum. Außerdem solltest du die Flügel und den Rest dem Körper unterordnen. Das ist zwar nicht direkt für dein Problem wichtig, könnte aber helfen.
  23. 1 point
    Eindeutig Bild Nr. 6.
  24. 1 point
    Danke. Als mir der Name in den Sinn kam fand ich ihn so bescheuert das ich ihn schon wieder gut fand Mein Favorit ist aber immer noch Das Ungehuer von Loch im Boden ;D
  25. 1 point
    Hi. Ich habe das mal fix nachgebaut so wie ich denke das Du es haben willst. Die Wand benötigt dann auch 2 Materialien, welche Du in Blender mit Assign den selektierten Polygonen zuweisen kannst. Diesen beiden Materialien weist Du dann jeweils die Textur zu. Unwrap hast Du ja schon erledigt. (Siehe Bild) Du musst dein Objekt nicht extra in FBX abspeichern. Unity kann auch mit dem Blend-File direkt umgehen. Falls eine Textur nicht angezeigt wird, musst Du diese nochmal vom Inspektor via Track and Drop auf das Objekt ziehen. Dann sollte es funktionieren.(Siehe Bild) Es geht auch mit einer Textur und einem Material falls Du das machen willst.
  26. 1 point
    Ich kenne mich in Blender nicht aus und komme auch nicht aus der 3D-Modelling-Ecke, aber mich irritiert, warum du von "2 Texturen" sprichst. Blender hat ebenfalls den Begriff "Material" und ich denke beide Texturen sollten einem Material in Blender zugewiesen werden. Dieses Material sollte dann beim Mesh in Blender Verwendung finden. Ich gehe davon aus, daß dieses Material dann auch in Unity auftaucht, wenn du es als FBX speicherst: https://docs.blender.org/manual/en/dev/render/blender_render/materials/assigning_a_material.html
  27. 1 point
    Jap. Hier hast du zwei Links zum Einstieg: https://docs.unity3d.com/Manual/animeditor-UsingAnimationEditor.html https://docs.unity3d.com/Manual/TimelineSection.html
  28. 1 point
    Nimm dafür ein HashSet. Damit kannst du (in der Regel™) in konstanter Zeit (also: unabhängig davon, wie viele Elemente du hast) schauen, ob ein bestimmtes Element darin vorhanden ist.
  29. 1 point
    Soviel ich weiß, sortiert der Assetordner immer nur nach dem Alphabet. Also müsstest du den Ordner so umbenennen, dass der z.B. mit t anfängt. Tannimationen!
  30. 1 point
    Ich denke es sollte gehen, wenn du das ganze Asset einmal in die Szene ziehst, dann in der Szene die Texturen entfernst und abschließend "Apply" drückst. Wenn du alles richtig gemacht hast, sollten dann die Texturen auch im Prefab verschwinden. Der Button ist wenn du das geänderte GameObjekt in der Szene angeklickt hast im Inspektor unter der Layer-Einstellung.
  31. 1 point
    Ich habe heute weiter an meinem Overlayshader gearbeitet und einen kleinen Helfer programmiert, womit man innerhalb der Sceneview direkt auf einen Mesh eine Maske malen kann. Das Ganze ist ein Editorskript welches in eine Textur zeichnet und diese Textur wird dann an meinen Overlayshader übergeben. Der Overlayshader stellt die Textur über einen seiner Slots dar. Über dieses Tool soll man dann im Szeneview eine Maskentextur erzeugen können, um Overlays an bestimmten Stellen ein- und auszublenden zu können: Video: https://streamable.com/9rys8 https://streamable.com/sb5wf Mit dem im Video gezeigten Tool direkt auf den Mesh gemalt: Der Overlayshader selbst kann mehrere Overlaytexturen auf einer Haupttextur abbilden. Dabei kann sowohl die UV0 als auch die UV1 (Lightmap UV) verwendet werden. Das Overlay kann dabei "Linear" oder "Additive" eingeblendet werden, hat ein eigenes Tiling/Offset und eine eigene Normaltextur. Das Prinzip ist ähnlich wie die Detail Albedo des Standardshaders (und seiner Detailmask) nur das man eben mehrere Overlays verwenden kann, die Stärke der Overlays bestimmen kann (Opacity) und den Overlaymode frei wählen kann. Ansonsten entspricht der Overlayshader dem Standardshader (PBS Surfaceshader). Zudem habe ich den Overlayshader nun noch um Vertexfarben erweitert. Damit kann man nun anhand der Vertexfarben ebenfalls die Overlays Ein- und Aus- oder Überblenden Overlayshader: Definition einer Kante anhand von Vertexfarben (= schwarze Streifen) an der die Overlays ausgeblendet werden sollen: Ergebnis (ausgeblendetes Overlay im Bereich der Kante): Mal ein Beispielbild einer kompletten Wand die mit 2 Overlays "verziert" wurde: Bilder (c) by Kojote
  32. 1 point
    @malzbie Ja das sieht doch schon sehr nach dem aus was ich suche. Hab das bei mir versucht immer über Idle zu gehen, wollte aber irgendwie bei mir nicht. Werde ich mir die Tage sicherlich anschauen. Grosses Danke hierfür. ps: Den Bug bei ca. 10:20 habe ich auch(auch wenn das Video schon etwas älter ist). Ich klicke dafür immer nochmal auf den entsprechenden Animator, dann läufts.
  33. 1 point
    Das sind ja jetzt mehrere Dinge, die nicht zwingend zusammen gehören. Ich wills mal aufdröseln. Damit überhaupt Kollisionen zustande kommen, muss mindestens einer der beiden Körper einen Rigidbody haben. Es können beide sein, müssen es aber erstmal nicht. Jeder der Körper muss natürlich einen Collider haben, weil nur dann überhaupt eine Berechung der Kollision stattfinden kann. Wenn einer der beiden Körper keinen Rigidbody hat, ist er nicht verrückbar. Das bedeutet, dass dieser Kollider für jeden Rigidbody einfach ein Hindernis bzw. feste Fläche ist, auf der herum gelaufen oder gegen gesprungen werden kann. Dieser Collider kann ein physikalisches Material haben, was glatt wie Eis oder stumpf wie Sand sein kann. Gibst du ihm kein Physikalisches Material, nutzt der Collider gewisse Defaultwerte. Also Reibung hat dieser Körper trotzdem. Sind (haben) jetzt beide Körper Rigidbodys, dann kommt noch einiges dazu. Denn jetzt können sich die RB's beeinflussen. Der eine kann den anderen wegschieben, umschmeißen oder auch wegschießen. Ob, und wie einfach das geht, hängt davon ab, wie groß die Masse der einzelnen RB's ist. Ein leichter RB wird einen schwweren RB kaum oder gar nicht bewegen können. Ist einer der beiden RB's auf kinematic gestellt, dann bedeutet das, dass er wie ein Collider ohne RB von einen anderen RB nicht mehr bewegt werden kann. Dieser Körper hat aber, weil er ja trotzdem ein RB ist, immer noch gewisse Eigenschaften, die ein einfacher Kollider nicht hat. Jetzt könnte z.B. dein Player wirklich ohne RB durch die Welt laufen und es würde trotzdem zur kollision mit dem kinematic RB kommen. Kinematic RB's kann man per Script immer noch bewegen und sie haben auch verbesserte Physikeigenschaften wie z.B. bei den Materialien. Du kannst dir also merken: Einer muss ein RB sein. Ohne das gibt es keine Kollision. Da man mit RB's sparen sollte, weil jeder RB ständig nach Kollidern ausschau hällt, sollte man so wenig RB's wie möglich nutzen. Also bietet es sich an, dass der Player einen RB hat. Nicht andersherum, dass alles außer dem Player einen RB hat. Alle Körper in der Szene die nicht verändert werden, wie z.B. Häuser, der Boden und auch Bäume, bekommen nur einen Collider. Den RB brauchen sie nicht. Wenn du mit dem RB gegen ein Hindernis triffst, egal, ob es ein Collider oder ein RB ist, dann bekommt dein RB natürlich auch einen gewissen Impuls ab. Das kann ihn zum Kippen bringen, wenn er keinen Sockel hat, auf dem er steht. Soll der RB nicht kippen können, dann musst du die Achsen, über die er kippen könnte sperren. Genau so, wie du es gemacht hast. Also die X und Z Achse bei der Rotation sperren und schon kippt der RB nicht mehr. Da die Y Achse noch nicht gesperrt ist, könnte ein anderer RB deinen RB zu drehen bringen. Aber das will man ja manchmal auch. Ich hoffe ich konnte dir etwas Klarheit verschaffen. Ich hatte vor längerer Zeit mal eine Tutorialreihe gemacht, die sich um fast alles, was ein RB zu bieten hat, dreht. Vielleicht willst du ja mal rein schauen:
  34. 1 point
    Hier deine Karte mit dem oberen Projektor auf ein Unity-Terrain eingeblendet, welches eine "Zufalls-Heightmap" hat. Also nur zur Verdeutlichung der Technik:
  35. 1 point
    Die Größe der Textur kannst du dann im Projektor über "Orthographic Size" einstellen.
  36. 1 point
    Dann nimmst du den "BlobLightProjector" unter "Standard Effects Projectors Prefabs". Dann gehst du zum Material dieses Projektors und machst eine Kopie davon und weißt sie dem Projektor wieder zu. Beim Kopie-Material stellst du dann den Shader auf "Projektor/Multiply". Beim Texturimporter deiner Textur stellst du "Clamp" ein (wichtig).
  37. 1 point
    Kann ja sein, aber die Beta ist halt trotzdem immer weniger stabil. Tut mir leid dass ich da die schlechte Nachricht überbringen muss, aber damit wirst du nicht besonders weit kommen. Erstmal solltest du oben links in der Konsole "Clear" drücken, dann sind schon einmal die ganzen Fehler we, die beim letzten Mal Playmode starten aufgetereten sind. Dann dürfte nur noch der eine vom unteren Bild übrig sein. Dieser Fehler kommt aus der Datei "NatureStarterKit2/Editor/ImageEffects/CreaseShadingEditor.cs", also aus dem Editorscript zu einem der Bildeffekte die beim Nature Starter Kit 2 dabei sind, das du benutzt. Die einfachste Lösung kannst du haben, wenn du diesen Effekt nicht nutzt - dann löschste einfach diese eine Datei. Wenn du dann aber irgendwann Crease Shading benutzt, darfst du dich natürlich nicht wundern, wenn sie fehlt
  38. 1 point
    NEUER PATCH (0.0.2.20) VERFÜGBARDas Bankensystem stand im Fokus des aktuellen Patches.Mit dem neuen Patch wird der erste Teil des Bankensystems implementiert. Das wurde durch das Housingsystem nötig, da die Erlöse für die Nutzung der Werkstätten irgendwo gut zu schreiben sind.Das Bankensystem ist zweigeteilt:Teil 1 - Zentralbank der GötterDie Zentralbank der Götter stellt jeder Spielerfamilie ein zinsloses Guthabenskonto zur Verfügung. Die Zentralbank der Götter verfügt über ein weitverzweigtes Netz an NPC, welche dem Spieler für Bankgeschäfte zur Verfügung stehen.Teil 2 - PrivatbankenPrivatbanken sind Banken, welche ein Spieler (Bankvorstand) gründen kann.Nach Abschluss einer Questreihe kann der Spieler eine Bankenlizenz erwerben. Diese Bankenlizenz muss dann durch eine weitere Anzahl von Spielern (Anleger) mit einer Einlage gesichert werden. Nachdem eine Minimaleinlage zusammengetragen wurde, kann die Bank in der Großen Grotte von Lantax eröffnet werden.Ab diesem Zeitpunkt erhält die Bank auf ihr gesamtes Guthaben einen täglichen Basiszinssatz. Der Bankenvorstand verfügt nach der Gründung über folgende Befugnisse:- Gewinne ganz oder teilweise ausschütten- Konten anbieten- Kredite vergeben- Spekulationsgeschäfte tätigen- Bankier-NPCs einstellen/entlassen und in der Welt platzierenDie Privatebanken werden zu einem späteren Zeitpunkt realisiert.Wir wünschen Euch nun viel Spaß beim Testen eures Kontos.
  39. 1 point
    Ich find die Grafiken toll! Sieht gut aus.
  40. 1 point
    Du muss bei den Namen "Flappy" aufpassen. Ist schon etwas her, aber damals wurde der Name bei Play Store geschützt / blacklisted und man hat Apps deaktiviert vom Store bekommen und ein Strike auch dazu. Ich rede aber hier von 2014. Weiß nicht wie das heute so ist.
  41. 1 point
    https://docs.unity3d.com/Manual/AssetBundlesIntro.html Aber ich habe irgendwie das Gefühl dass das gar nicht dein eigentliches Problem ist
  42. 1 point
    Du lädst dein Projekt mit deiner UI. Nun suchst du deine "UI-Szene" im Projektfenster und klickst du mit der rechten Maustaste drauf und wählst im Kontextmenü aus "Export Package..." aus und "Export". Nun öffnest du in dein anderes Projekt und gehst auf "Assets -> Import Package -> Custom Package" und wählst dein zuvor erstelltes Package aus. Deine UI-Szene sollte nun im neuen Projekt sein
  43. 1 point
    Ich hab das ein wenig anders verstanden. So wie ich es gelesen habe, kann bei einem "Branch" folgendes passieren: - der Shader führt sowohl Zweig 1 und auch Zweig 2 aus - der Shader führt nur Zweig 1 aus - der Shader führt nur Zweig 2 aus Der schlechteste Fall ist also, daß der Shader beide Zweige ausführen muss, da die parallelen Recheneinheiten der GPU nur jeweils die gleichen Instruktionen ausführen können. Meine Erfahrung mit Computeshadern / Shader deutet auch in diese Richtung. Ideal für einen Computeshader ist: "Alles ist gleich", damit meine ich die Threads in den Threadgruppen führen Berechnungen für "ähnliche Inputs" aus. Im idealen Fall kann aber die GPU das Branching ebenfalls intern optimieren (wie das intern umsetzt ist weiß niemand so genau) und damit führt ein Teil der Recheneinheiten den Zweig 1 aus und andere Einheiten den Zweig 2. Man kann daher nicht Vorhersagen, wie der Shader es intern regelt, daß hängt vom Hersteller, von der Shadergeneration und anderen Faktoren ab. Allerdings wenn ich einen Zweig in einem Computeshader definiere, dann möchte ich dort auch einen Zweig haben und dieser lässt sich auch nicht "wegoptimieren". Ein IF-Statement wie ich sie oben verwendet habe, werden durch den Compiler denke ich eh "wegoptimiert", d.h. ich vermute es entsteht überhaupt kein Branch in dem oben beschriebenen Sinne , sondern es wird ein einzelnes Statement intern erzeugt.
  44. 1 point
    Ein "Projekt" ist ein abgeschlossenes Dingen. Das kann man nicht mit einem anderen Projekt verbinden. Das wäre ja so, als wenn du Word un Photoshop zusammen bringen willst. Ich würde dir empfehlen (aber nur wenn dein Menü aus einer einzigen Szene besteht) dass du daraus ein Asset erzeugts, dieses Asset dann im Spieleprojekt importierst und dann die nötigen Anpassungen machst.
  45. 1 point
    auch wenn ich jetzt nichts zum gameplay sagen kann: grundidee flappy-bird nach zu stellen ist eher mau :S mit einhörner kobolde anzukotzen, ist schon eher mein still
  46. 1 point
    Jawohl. Wir haben eine funktionstüchtige Minimap! Außerdem gibt es jetzt eine Toolbar mit hübschen neuen Buttons.
  47. 1 point
    Blätter und detail Meshes fehlen noch, aber wird langsam
  48. 1 point
    Du könntest bei dem Objekt eine LOD-Gruppe hinzufügen, bestehend nur aus dem Objekt: https://docs.unity3d.com/Manual/class-LODGroup.html Hier kann man allerdings keine Meter angeben, sondern man gibt das prozentuale Verhältnis zwischen Höhe des Objektes (auf dem Screen) und der Bildschirmhöhe an. Das bedeutet du kannst im Endeffekt festlegen, daß ein Objekt ab einer bestimmten Größe (bzw. Distanz von der Kamera) nicht mehr dargestellt wird: siehe "Culled" unter LOD Group Mit ein wenig probieren (hängt von der Höhe des Objektes ab) kannst du nun die Prozentzahl so einstellen, daß das Objekt bei ca. 15 Meter auftaucht.
  49. 1 point
    Hi. Zündstoff hin oder her. Zum Eigentlichen. Wenn Du schon Erfahrungen in Java hast, ist Dir das vom Vorteil. Die "Basics" kannst Du dann einfach anhand von Tut's nachvollziehen. Basics sind: - Transformationen (Bewegungen von Objekten) - Kollisionen Zum Playmaker, oder anderen Erweiterungen. Diese Erweiterungen geben Dir die Möglichkeit, visuell deinen "eigentlichen" Code darzustellen(wie schon erwähnt). Ähnlich Flow-Graph in Cry Engine. Es ersetzt aber nicht das Verständnis von Programm Code, Programmablauf usw. Mein Tipp: Fang einfach an! Falls Du Fragen hast, stelle sie einfach hier. Keine Scheu! Jeder hat mal angefangen und ist vermutlich an den einfachsten Sachen vorerst verzweifelt. Aber das wird schon mit der Zeit. Setze Dir einfache kleine Ziele und lass sie wirken.
  50. 1 point
    Hallo zusammen, ich stelle mal auch mein Projekt vor Es handelt sich , wie des Thema schon beschreibt um ein Fitness Spiel. Man startet "unsportlich" und kann sich im Spiel Trainieren. Dazu hat man verschiedene Übungen. Nebenbei kann man auch Eiweiß, Kreatin nehmen um seine Trainingsergebnisse zu verbessern. Diese kann man für Coins kaufen die man entweder durchs Werbung schauen bekommt oder für Level ups Das Trainieren kostet Kcal welche sich alle 24h um einen bestimmten betrag erhöhen wenn man sich ins Spiel einloggt. Sobald die Kcal zur verfügung stehen bekommt man eine Push notification. Auserdem kann man jede Übung nur alle 15 Stunden Trainieren, danach hatt meine eine Art Cooldown. Diese werden mit Timestamps die vom Server kommen errechnet. Je mehr man Trainiert desto höher steigt die "Belastungs Anzeige", dies ist auch abhängig von der Übung. Die Belastungs reduziert sich täglich um einen gewissen Betrag. Ist diese bei 100% muss man halt warten bis man sich Erholt hat. Indem man im Shop bandagen kauft kann man diese auch reduzieren. Nebenbei hat man eine Freundschaftsliste wo das Level und Erfahrungspunkte angezeigt werden. Also beim Bild "Ubung" sieht man das das Trainieren nur über einer Gui verläuft, also man klickt auf Trainieren und Punkte werden Addiert. Beim BANKDRÜCKEN , KNIEBEUGEN, KREUZHEBEN sind aber komplette Animationen enthalten und man erfährt das Gewicht welches man Maximal stemmen kann.Diese Gewichte erhöhen sich auch mit steigender Kraft. Die Werte kann man dann auch in der Freundschaftsliste sehen und sich somit messen oder in Facebook Teilen Nebenbei wird auch noch das Gewicht des Charakters angezeigt. Ich glaube das wars Freue mich sehr auf Verbesserungsvorschläge, und noch mal ein Dank ans Forum und an den Leuten die mir bei meinen Fragen geholfen haben Android + IOS DrawCalls: 15 Tries: 40.000
×