Jump to content
Unity Insider Forum

Zer0Cool

Members
  • Content count

    1,865
  • Joined

  • Last visited

  • Days Won

    132

Zer0Cool last won the day on June 14

Zer0Cool had the most liked content!

Community Reputation

389 Excellent

7 Followers

About Zer0Cool

  • Rank
    Advanced Member
  • Birthday 01/04/1974

Contact Methods

  • Website URL
    http://https://www.facebook.com/huginmuninstudios
  • Skype
    zer0f0rce

Profile Information

  • Gender
    Male
  • Location
    Germany

Recent Profile Visitors

5,420 profile views
  1. Zer0Cool

    GameObjekt wird direkt Zerstört. Hilfe. :(

    Malzbie hat recht, nur hat er vermutlich das "!" übersehen. Sind alle deine Spielfigurobjekte mit dem Tag "Player" getaggt? Sollten sie sein, ansonsten wird das Buch bereits durch ggf. vorhandene Trigger am Spieler zerstört. Objekte die das Buch treffen soll, dürfen diesen Tag dann allerdings nicht haben!
  2. Zer0Cool

    Dynamischer Text auf Mesh

    In Unity gibt es den alten Textmesh: https://docs.unity3d.com/Manual/class-TextMesh.html oder https://assetstore.unity.com/packages/essentials/beta-projects/textmesh-pro-84126 (kostenlos)
  3. Zer0Cool

    Custom Base-Textur für Terrain

    Der Terrainshader bekommt die 4 Splatmap + Controltextur + Basemap als Input ... Unity verwendet die berechnete Basetextur des Terrain ja von Haus aus, wenn die Kamera einen bestimmten Abstand zum Terrain hat. Man kann fürs Terrain unter den Settings auch einen eigenen Terrainshader definieren, aber ich denke das würde zu weit führen. Ich vermute man kommt an die Basetextur des Terrain von Außen nicht ran... Der Unityterrainshader ist ohnehin sehr performant, von daher würde ich mir hier keine Gedanken machen ...
  4. Zer0Cool

    Custom Base-Textur für Terrain

    Ich denke nein, Unity berechnet soweit ich weiß die Basetextur aus den Splatmaptexturen + Controltexturen. Du kannst aber deine "Basetextur" als Splatmaptextur 1 (bzw. 0) des Terrains übergeben. Unity füllt das Terrain ja mit der Splatmaptextur 1 vollständig aus (sozusagen die Grundierung). Wenn du die "Size" der Splatmaptextur auf die Größe deines Terrains ziehst, dann wird deine Textur über das komplette Terrain gezogen (und nicht gekachelt). Allerdings wird die Textur des Terrain damit pixelig, da Unity ja nun nicht mehr die Auflösung der Splatmaptextur erhöhen kann, wenn die Kamera dichter an's Terrain kommt ...
  5. Zer0Cool

    Billboards

    Hab deine Grafik angeschaut und deine Alpha geht bis an den unteren Rand und dies ist schlecht! Im Alphachannel sollte unten ein schwarzer Rand sein mit mind. 2-3 Pixel Breite ...
  6. Zer0Cool

    Billboards

    Wie werden denn die Billboard in Unity dargestellt? Beim "Edge Padding" werden im Endeffekt die Ränder der Textur nach außen gezogen und der Hintergrund an die Textur angeglichen. Hier ein Beispiel. Damit soll ein "Color Bleeding" verhindert werden, aber dein Problem sieht eher nach einem "Randproblem" aus, d.h. die UV greift über die Textur hinaus...
  7. Zer0Cool

    Objekteigenschaften ansprechen per Script

    Sieht ein wenig "konfus" aus. Dies hier ist völlig verkehrt: public class Spawner : MonoBehaviour { void Start () { TileClass tileClass = new TileClass(); tileClass.init(); } } Eine MonoBehaviour-Klasse wird nie mit "new" erzeugt! Was genau lädst du mit?: tileObject = Resources.Load("Tile") as GameObject; Resources.Load sollte man wenn es geht vermeiden, da dies eigentlich nur für bestimmte Spezialfälle gut ist und ich glaub du ganz etwas anderes machen willst: Du solltest folgendermaßen vorgehen: erstelle ein GameObject in deiner Szene und hänge die Klassen dran die du brauchst (z.b. die TileClass-Klasse) mache ein Prefab aus diesem GameObject in der Szene: das Szenenobjekt mit der Maus in deinen Projektfolder ziehen ( = Prefab) Szeneobjekt aus der Szene löschen dieses Prefab übergibst du deinem Spawnerskript (siehe unten) Der Code könnte dann folgendermaßen aussehen: using UnityEngine; public class Spawner : MonoBehaviour { private GameObject[] entities; public GameObject prefab; // Hier dein erzeugtes Prefab draufziehen mit deiner TileClass Klasse void Start() { // Ich erzeuge hier mal nur 1 Objekt GameObject tileGO = Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity) as GameObject; TileClass tile = tileGO.GetComponent<TileClass>(); tile.value = 10; } } using UnityEngine; public class TileClass : MonoBehaviour { public int value; private void OnMouseDown() { this.value; } }
  8. Zer0Cool

    Objekteigenschaften ansprechen per Script

    Ich sehe gerade da war noch ein Fehler in der Unity-Doku (woraus ich Teile des Codes kopiert hatte), hier sollte man nicht Transform als Datentyp fürs Prefab nehmen, sondern GameObject (das führt später sonst zu allerlei Problemen): //public Transform prefab; public GameObject prefab;
  9. Zer0Cool

    Objekteigenschaften ansprechen per Script

    // Instantiates 10 copies of prefab each 2 units apart from each other using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { private GameObject[] entities; public GameObject prefab; void Start() { entities = new GameObject[10]; for (int i = 0; i < 10; i++) { entities[i]= Instantiate(prefab, new Vector3(i * 2.0F, 0, 0), Quaternion.identity) as GameObject; } } } Obiges Array "entities" speichert die 10 erzeugten GameObjekts. Für ein Zugriff auf eine Klasse die am jeweiligen GameObjekt hängt kannst du noch folgendes zusätzlich machen: entities[i] = Instantiate(prefab, new Vector3(i * 2.0F, 0, 0), Quaternion.identity) as GameObject; // auf die Klasse "Missile" zugreifen die am GameObjekt hängt (also zuvor am Prefab) Missile missile = entities[i].GetComponent<Missile>(); missile.speed = 5.0f; // Eigenschaft speed der Klasse Missile setzen
  10. Zer0Cool

    Billboards

    Schwer zu sagen ohne weitere Informationen. Wie hast du dieses Billboard dargestellt? Oft tritt dieses Problem auf, wenn die Grafiken die auf einer Atlastextur platziert werden einen zu geringen Abstand zueinander haben (kann beispielsweise bei Detailtexturen des Unityterrains passieren. Diese werden nämlich von Unity intern auf einer 1024-Altastextur angeordnet, um die Performance zu optimieren. Hier hilft dann auch nur ein "Edge Padding" der jeweiligen Detailtextur die verschwimmt). Zudem gibt es auch noch einen ähnlichen Effekt beim internen erstellen von MipMaps in Unity. Hier kann es passieren, das bei einer Textur die UV-Ränder verwaschen, da beim MipMapping die Textur verkleinert wird. Auch hier hilft nur ein ensprechend breiterer Rand zwischen den "UV-Shapes". Meine Vermutung in deinem Fall wäre, daß ein entsprechend vergrößerter Rand um deine Billboardtextur helfen könnte. PS: Zu beachten ist auch, daß der Alphachannel-Rand ebenfalls groß genug sein sollte (= schwarzer Rand im Alphachannel)
  11. Zer0Cool

    Mehrere Canvas-Objekte in Szene

    Ich denke mehrere Canvas(e) im "World Space"-Mode sind kein Problem. Damit kann man das Canvas im 3D-Raum positionieren und die Größe der Anzeige skaliert mit dem Abstand des Spielers/NPC zur Kamera. Möchte man dies nicht, dann ist denke die Methode von @Thariel besser, damit bleibt die Anzeigengröße unabhängig vom Abstand zur Kamera.
  12. Zer0Cool

    Sprite Shader- Color Tint

    So, nun hab ich aber was gut Hier der Shader (ich habe noch ein paar Zeilen aus dem Original Sprite Shader eingefügt für's PixelSnap und Flipping): Shader "Sprites/Beat/Diffuse-Shadow" { Properties { [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} _Color("Tint", Color) = (1,1,1,1) [MaterialToggle] PixelSnap("Pixel snap", Float) = 0 [HideInInspector] _RendererColor("RendererColor", Color) = (1,1,1,1) [HideInInspector] _Flip("Flip", Vector) = (1,1,1,1) _Cutoff("Shadow alpha cutoff", Range(0,1)) = 0.5 } SubShader { Tags { "Queue" = "AlphaTest" "IgnoreProjector" = "True" "RenderType" = "TransparentCutout" "PreviewType" = "Plane" "CanUseSpriteAtlas" = "True" } LOD 200 Cull Off Lighting On ZWrite Off CGPROGRAM #pragma surface surf Lambert vertex:vert addshadow alphatest:_Cutoff #pragma multi_compile _ PIXELSNAP_ON #include "UnitySprites.cginc" struct Input { float2 uv_MainTex; fixed4 color; }; void vert(inout appdata_full v, out Input o) { v.vertex.xy *= _Flip.xy; #if defined(PIXELSNAP_ON) v.vertex = UnityPixelSnap(v.vertex); #endif UNITY_INITIALIZE_OUTPUT(Input, o); o.color = v.color * _Color * _RendererColor; } void surf(Input IN, inout SurfaceOutput o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * IN.color; o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG } Fallback "Legacy Shaders/Transparent/Cutout/VertexLit" } Dieses Skript ist auch noch notwendig, damit der Sprite Renderer auch Schatten weiterleitet: using UnityEngine; using UnityEngine.Rendering; public class ControlSpriteRenderer : MonoBehaviour { private Renderer render; // Use this for initialization void Start () { render = GetComponent<Renderer>(); render.receiveShadows = true; render.shadowCastingMode = ShadowCastingMode.On; } } Der Schattenwurf scheint aber nur für's Directional-Light zu funktionieren. Bei einem Spot-Light scheinen keine Schatten zu entstehen ...
  13. Zer0Cool

    IEnumerator

    Du startest die Coroutine "Lebenregeneration" mehrfach, was denke ich dazuführt, daß im Prinzip nach 3 Sekunden + X Frames das Leben wieder voll ist (jedes neue Frame wird dabei die Coroutine erneut gestartet). Ich würde es so machen: IEnumerator Lebenregeneration() { lebenreg = true; while (SAktuellesLeben < Maxleben) { SAktuellesLeben = SAktuellesLeben + 1; yield return new WaitForSeconds(3); } lebenreg = false; } if (!Spieler.infight) { if(SAktuellesLeben < Maxleben) { if (!lebenreg) { StartCoroutine(Lebenregeneration()); } } }
  14. Zer0Cool

    Audio Bei Distance

    Evtl. kommst du mit dem Pitchwert der Audiosource zum gewünschten Ergebnis: https://docs.unity3d.com/ScriptReference/AudioSource-pitch.html Ansonsten kann man auch den Clip "vorspulen", damit spielt er dann nur einen Teil des Audios ab. Einfach auf time ein paar Sekunden draufaddieren (wenn der Sound mehrere Sekunden lang ist). Ggf. die Länge des Clips vorher auslesen, damit man die Restlänge berechnen kann: https://docs.unity3d.com/ScriptReference/AudioSource-time.html Beispiel: Cliplänge: 3 Sekunden (kann man aus dem Clip auslesen) Bogen-Distanz Maximal: 5 (musst du selbst festlegen - siehe Skript unten) using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { private AudioSource audioSource; private float clipLength; private float maxBowDist = 5.0f; private float addedTime; void Start() { audioSource = GetComponent<AudioSource>(); clipLength = audioSource.clip.length; } void Update() { if (Input.GetKeyDown(KeyCode.Return)) { float dist = (stringStartPoint.transform.position - grabpoint.transform.position).magnitude; addedTime = (clipLength/maxBowDist) * dist; audioSource.time = clipLength - addedTime; // Audioclip verkürzt abspielen je nach Bogenspannung audioSource.Play(); } } }
  15. Zer0Cool

    Skript nur für den Editor

    Weiß nicht genau, was du da speichern willst, ggf. könntest du es auch in einer Scriptable-Objekt-Klasse ablegen, dann sind diese Daten eben auch keine Szenendaten mehr (= SO-Asset) und SO's funktionieren im Editor in beide Richtungen (lesen / schreiben). Nach einem Build dann nur noch lesend, aber dies würde dich ja nicht stören.
×