Jump to content
Unity Insider Forum

Kojote

Members
  • Content count

    836
  • Joined

  • Last visited

  • Days Won

    4

Kojote last won the day on April 28

Kojote had the most liked content!

Community Reputation

28 Excellent

About Kojote

  • Rank
    Advanced Member

Recent Profile Visitors

849 profile views
  1. Kojote

    Was ist das ? ?

    Welches Asset ist es denn?
  2. Kojote

    Editor Kamera langsamer machen

    Wie meinsst du das mit langsamer machen?
  3. Kojote

    Occlusion Culling Error

    Grüße! Habe ziemlichen Ärger mit Occlusion Culling, die blauen Kästchen die er beim Culling erzeugt, werden erzeugt, Unity ist benutzbar und man kann weiter interagieren. Am Fortschrittssbalken sieht man dass nur ein kleiner Rest fehlt, ca. 95% sind fertig. Danach macht Unity nicht weiter. Geht man in den Task-Manager steht da, dass Unity noch arbeitet, bricht man ab, hängt sich Unity komplett auf. Die Scene ist sehr klein, nur die Scene des Hauptbildschirms. Sollte in wenigen Sekunden fertig berechnet sein, der Fortschrittsbalken geht ziemlich schnell nach hinten, aber immer bei ca. 95% ist Schluss. Habt ihr eine Idee an was es liegen könnte? EDIT: Ach ja, die Stelle wo er sich aufhängt ist: "Computing Occulsion" Grüße von Kojote
  4. Kojote

    Raycast Layer

    Grüße! Ich lese gerade etwas über Layer bei Rays. Ich wollte es gern so machen, dass ein Ray den ich habe nur auf Layer 10 reagiert, er Layer 5 nicht durchdringen kann und alle anderen Layer ignoriert. Kann mir jemand sagen, wie ich das mit Layern hin bekommen? Vielen Dank! Kojote EDIT: Habe ich jetzt gefunden, mit Layermask, klappt nur nicht, er prallt immer noch gegen Collider bzw. Layer die er eigentlich ignorieren sollte: mask = LayerMask.GetMask("UI", "Bodenplatte_zum_Charakter_setzen"); Des weiteren, gibt es ein weiteres Problem. Kann man sagen, dass nach UI schluss ist mit dem Ray? Ich habe das Problem das ich mehrere Slots in meinem UI auswählen kann und der Ray geht einfach durch das UI hindurch. Kann man da was machen? EDIT 2: OK, ich machs nun damit: if (EventSystem.current.IsPointerOverGameObject()) { return; }
  5. Kojote

    Doppelray?

    Hallo! Ich habe bei mir für Charaktere eine Slotauswahl, in der sind die Charaktere hinterlegt. Möchte ein Spieler nun einen Charakter nutzen und auf eine Spielfläche setzen habe ich hier ein kleines Script: private void FixedUpdate() { if (Time.timeScale == 0) { if (zuSetzenderCharakter > 0) { zuSetzenderCharakter = 0; } return; } // Charakter auf dem Spielfeld setzen und bewegen // Wichtig: Sollte der Charakter zwei mal hintereinander angeklickt werden, wird die Ausahl aufgehoben if (Input.GetMouseButtonDown(0) & !Input.GetMouseButtonDown(1) & spielGestartet == false) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.tag == "Charakter_1") { if (zuSetzenderCharakter != 1) { zuSetzenderCharakter = 1; CharkterAndereCharaktereAbwaehlen(zuSetzenderCharakter); outLineEffect.ChangeOutlineObjectsSingle(charaktere[0]); } else { outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); zuSetzenderCharakter = 0; } } else if (hit.collider.gameObject.tag == "Charakter_2") { if (zuSetzenderCharakter != 2) { zuSetzenderCharakter = 2; CharkterAndereCharaktereAbwaehlen(zuSetzenderCharakter); outLineEffect.ChangeOutlineObjectsSingle(charaktere[1]); } else { outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); zuSetzenderCharakter = 0; } } else if (hit.collider.gameObject.tag == "Charakter_3") { if (zuSetzenderCharakter != 3) { zuSetzenderCharakter = 3; CharkterAndereCharaktereAbwaehlen(zuSetzenderCharakter); outLineEffect.ChangeOutlineObjectsSingle(charaktere[2]); } else { outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); zuSetzenderCharakter = 0; } } else if (hit.collider.gameObject.tag == "Charakter_4") { if (zuSetzenderCharakter != 4) { zuSetzenderCharakter = 4; CharkterAndereCharaktereAbwaehlen(zuSetzenderCharakter); outLineEffect.ChangeOutlineObjectsSingle(charaktere[3]); } else { outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); zuSetzenderCharakter = 0; } } else if (hit.collider.gameObject.tag == "Charakter_5") { if (zuSetzenderCharakter != 5) { zuSetzenderCharakter = 5; CharkterAndereCharaktereAbwaehlen(zuSetzenderCharakter); outLineEffect.ChangeOutlineObjectsSingle(charaktere[4]); } else { outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); zuSetzenderCharakter = 0; } } else if (hit.collider.gameObject.tag == "Charakter_6") { if (zuSetzenderCharakter != 6) { zuSetzenderCharakter = 6; CharkterAndereCharaktereAbwaehlen(zuSetzenderCharakter); outLineEffect.ChangeOutlineObjectsSingle(charaktere[5]); } else { outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); zuSetzenderCharakter = 0; } } else if (hit.collider.gameObject.layer == 10 & zuSetzenderCharakter > 0) { int zaehler = 0; // Verhindert das mehrere Charaktere an die selbe stelle gesetzt werden for (int i = 0; i < charaktere.Length; i++) { if (hit.collider.gameObject.transform.position == charaktere[i].transform.position) { zaehler++; } } if (zaehler == 0) { // Wenn die Bodenplatte nicht belegt ist, kann der Charakter positioniert werden charaktere[zuSetzenderCharakter - 1].transform.position = hit.collider.gameObject.transform.position; // -1 Ausgleich wegen Arry, da es von 0 an rechnet gesetzteCharaktere[zuSetzenderCharakter - 1] = true; // -1 Ausgleich wegen Arry, da es von 0 an rechnet charakterSlot.SlotDeaktivieren(zuSetzenderCharakter); // -1 Ausgleich wegen Arry, da es von 0 an rechnet zuSetzenderCharakter = 0; outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); if (buttonStart.GetComponent<Button>().interactable == false) { CharakterKontrolle(); } } else if (zaehler == 1 & (charaktere[zuSetzenderCharakter - 1].transform.position == hit.collider.gameObject.transform.position)) { // Ausnnahmeregel, sollte die Bodenplatte angeklickt werden, auf dem der Charakter schon steht, wird die Auswahl aufgehoben outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); } } } } } Dieses Script sorgt zum einen dazu, den Charakter auf eine Bodenfläche zu setzen, wenn diese nicht belegt ist, zum anderen kann man den Charakter markieren und auf eine andere Fläche setzen. Funktioniert auch ganz gut soweit, habe nur leider einen sporadischen Bug. Genauer gesagt hier: if (Input.GetMouseButtonDown(0) & !Input.GetMouseButtonDown(1) & spielGestartet == false) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); } In diesem Abschnitt wird ein Ray abgeschossen auf eine Spielfläche, ist die Fläche leer, wird der Charakter hiermit positioniert: if (hit.collider.gameObject.layer == 10 & zuSetzenderCharakter > 0) { int zaehler = 0; // Verhindert das mehrere Charaktere an die selbe stelle gesetzt werden for (int i = 0; i < charaktere.Length; i++) { if (hit.collider.gameObject.transform.position == charaktere[i].transform.position) { zaehler++; } } if (zaehler == 0) { // Wenn die Bodenplatte nicht belegt ist, kann der Charakter positioniert werden charaktere[zuSetzenderCharakter - 1].transform.position = hit.collider.gameObject.transform.position; // -1 Ausgleich wegen Arry, da es von 0 an rechnet gesetzteCharaktere[zuSetzenderCharakter - 1] = true; // -1 Ausgleich wegen Arry, da es von 0 an rechnet charakterSlot.SlotDeaktivieren(zuSetzenderCharakter); // -1 Ausgleich wegen Arry, da es von 0 an rechnet zuSetzenderCharakter = 0; outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); if (buttonStart.GetComponent<Button>().interactable == false) { CharakterKontrolle(); } } else if (zaehler == 1 & (charaktere[zuSetzenderCharakter - 1].transform.position == hit.collider.gameObject.transform.position)) { // Ausnnahmeregel, sollte die Bodenplatte angeklickt werden, auf dem der Charakter schon steht, wird die Auswahl aufgehoben outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); } Layer 10 ist die Bedingung, dass der Charakter auf diese Bodenplatte gesetzt werden darf. Der Zähler kontrolliert ob eventuell schon ein anderer Charakter darauf steht, wenn nicht, ist der Zähler 0. Er wird gesetzt. Nun sollte eigentlich die Charakterauswahl aufgehoben werden: zuSetzenderCharakter = 0; outLineEffect.ChangeOutlineObjects(new List<GameObject>().ToArray()); Problem ist, sehr selten, wird die Auswahl nicht aufgehoben. Ich dachte erst dass der Zähler anderswo hochgesetzt wird oder der Outline Effekt einen Bug hat, aber Fehlanzeige. Es scheint, dass wenn der Ray abgeschossen wurde und der gesetzt wurde, der Ray entweder zwei mal abgeschossen wird, was ich eher nicht glaube. Alternativ, durch den Tastendruck der Maus, der Vorgang wiederholt wird. Habt ihr eine Idee wie man das verhindern könnte? Grüße Kojote
  6. Kojote

    Charakter rutscht

    OK, habe jetzt mal meinem Charakter ein physikalisches Material verpasst und den Wert 2 genommen, dass reicht um ihn zu bremsen, funktioniert schon mal. Frage wäre nun noch, diese Reibung würde nur bei physikalischen Bewegungen bzw. beim Fallen oder der gleichen funktionieren. Rein bei Bewegungen durch Transform würde diese Reibung nun nicht in Aktion treten oder doch? Durch Tests konnte ich nichts der gleichen merken, wollte aber trotzdem noch einmal nachharken, damit ich alles richtig verstehe.
  7. Kojote

    Charakter rutscht

    Ich nutze nur für den Sprung den RB, ansonsten nur Transform. X und Y brachten keine Lösung. Falls du "rb.drag" meinsst, den habe ich schon auf 0 gesetzt. OK, scheinen wirklich irgendwelche Startwerte zu sein, ich habe dem Charakter mal ein pysikalisches Material gegeben und "Dynamic Friction" sowie "Static Friction" auf 100 gestellt. Rutschen hört sofort auf. Hätte dieses Material nun einfluss auf Transform oder auf was hat dies nun alles Einfluss? Hab noch nie mit pysikalischen Materialien gearbeitet.
  8. Kojote

    Charakter rutscht

    Hallo! Ich habe gestern einen ziemlich üblen Fehler in meiner Steuerung gefunden. Ich lasse meinen Charakter springen, Problem ist, dass wenn er landet, er noch ein wenig weiter rutscht. Ich finde keinen Fehler und bisher hatte er das nie gemacht. Hier mal der Code für den Sprung: zielPosition = new Vector3(Mathf.Round(this.transform.position.x), 1.0f, Mathf.Round(this.transform.position.z)) + transform.forward * 16; sprungHoehe = 7.5f; sprungVector = new Vector3(0, sprungHoehe, 0); sprungRichtungskraft = 9.87f; sprungRichtung = transform.forward * sprungRichtungskraft; rigi.velocity = sprungVector + sprungRichtung; Zielposition wird dann gesetzt, wenn er gelandet ist, da gibt es eine extra Coroutine, die überprüft ob er angekommen ist. Aber rein von diesem Code sollte er nur springen und landen, er rutscht aber nach. Oberflächenmaterialien nutze ich keine. Hat einer eine Idee? Grüße Kojote EDIT: OK, einen Schritt bin ich schon weiter. Früher nutzte ich einen Box-Collider für den Charkter, jetzt einen Capsule-Collider. Stelle ich zurück auf Box geht alles wie gehabt und es gibt kein rutschen. Frage ist, wo ist der Fehler, da ich mit Capsule arbeiten muss.
  9. Kojote

    Fragmente

    Grüße! Ich suche schon seit gestern die Lösung für dieses Problem: https://streamable.com/5g6wh Das Flackern auf der Pyramide als auch auf dem Charakter bekomme ich nicht weg. Merkwürdigerweise, der selbe Charakter macht in einer anderen Scene gar keine Probleme, also kanns nicht am Modell an sich liegen. Ich bin nun alle Einstellungen durch und finde keine Lösung. Habt ihr ne Idee was das sein könnte? Danke schon mal, Kojote EDIT: OK, wo der Fehler nun herkommt, konnte ich heraus bekommen. Cinemachine sorgt auf jeden Fall für die Bildfehler der Textur. Warum, kann ich noch nicht sagen. EDIT 2: So, ich glaube den Fehler konnte ich nun eingrenzen. Eigentlich sind es sogar zwei! 1. Komponente "Cinemachine Virtual Camera", die mag es nicht, wenn man während der Laufzeit "Follow" und "Look At" ändert. 2. Gleiche Komponente "Lookahead Smoothing" verursacht auch Grafikfehler, wenn der Wert zu hoch ist. Hoffe das wars mim am Fehlerursachen. EDIT 3: Zum Großteil sind die Fehler weg, jedoch nicht alle.
  10. Kojote

    Terrain Lightning

    600 x 600? Das ist ja gar nix an Größe, wie kommt das, andere rendern 20.000 ohne Probleme in weniger als 2 - 3 Stunden. Was stimmt denn da nicht?
  11. Kojote

    Lucy Lamplight

    Sehr schick, bin begeistert!
  12. Grüße! Kleine Frage, ich habe einen Chrakter mit Animation, dieser funktioniert in anderen Scenen tadelos. Nun habe ich ihn in eine neue Scene gepackt (Prefab) und gestartet. Problem, er kommt aus dem Idle heraus, macht einen halben Schritt, die Animation friert ein und auf einmal geht er zurück in den Idle. Ich habe nun schon das Script auf das nötigste beschränkt, er bekommt nur noch den Befehl zur Animation. Problem bleibt bestehen. Habt ihr ne Idee? Kojote
  13. Kojote

    Terrain Lightning

    Ich hab schon etliche Modelle eingebaut, ich wüsste jetzt nicht was bei diesem Modell anders ist. Finde keine Fehler. Aber auch so ist die Berechnung des Lightnings extrem langsam. Ich habe nun folgende Werte und dauert trotzdem fast 40 min: Indiirect Resolution: 2 Lightmap Resolution: 10 Lightmap Padding: 2 Lightmap Size: 128 Wo müsste ich was einstellen? GI Cache ist bei 30 GB. Was mir allerdings auch gerade jetzt auffällt, die Textur flimmert wieder, als wären zwei Objekte übereinander. Recht eigenartig, im 3D Programm ist der Fehler nicht ersichtlich. 🤔
  14. Kojote

    Terrain Lightning

    Grüße! Ich versuche schon den gesamten morgen eine kleine Landschaft zu rendern. Das Terrain ist 3000x3000 Einheiten groß, mit wenig Details. Wenn ich nun das Licht Backen will, hängt er sich immer bei 05/11 Clustering auf. Habe nun schon einige Beiträge gelesen und scheint ein Bug in Unity zu sein. Habe nun schon beim Terrain Lightmap Static und Reflection Probe Static heraus genommen. Fehler bleibt vestehen, selbst wenn ich die Auflösung der Lightmap herunter regle. Er kommt einfach nicht weiter. Habt ihr einen Rat? Kojote EDIT: Sehr eigenartig, ich bin nun noch einmal alles durch gegangen, das Terrain war gar nicht der schuldige. Es ist ein 3D Modell von mir. Was könnte an dem 3D Modell sein, dass es das Clustering zum Abbruch bringt? Am Polycount kann es nicht liegen, sind knapp 400 Poly.
  15. Kojote

    Tiling Kanten

    Ahhh, jetzt versteh ichs auch mal, danke dir! Und hier noch mal der Code, falls ihn mal jemand braucht: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Set_Neighbors : MonoBehaviour { private Terrain thisTerrain; public Terrain terrainPositivZ; public Terrain terrainNegativZ; public Terrain terrainPositivX; public Terrain terrainNegativX; private void Start() { thisTerrain = gameObject.GetComponent<Terrain>(); thisTerrain.SetNeighbors(terrainNegativX, terrainPositivZ, terrainPositivX, terrainNegativZ); } }
×