Jump to content
Unity Insider Forum

malzbie

Moderators
  • Content count

    4,923
  • Joined

  • Last visited

  • Days Won

    316

malzbie last won the day on April 21

malzbie had the most liked content!

Community Reputation

1,497 Excellent

2 Followers

About malzbie

  • Rank
    Moderator
  • Birthday 10/30/1968

Profile Information

  • Gender
    Male
  • Location
    Kassel, Hessen, Deutschland

Recent Profile Visitors

17,984 profile views
  1. Jo, gerne! Es hat schon ein paar Minuten gedauert, bis ich die Werte heraus gefunden hatte. Aber irgendwie reizen mich solche Dinge enorm. Ich muss dann einfach wissen, wie es funktioniert. Vorallem, wenn ich erkenne, dass da irgendwas getrickst wurde.
  2. Ich konnte es nicht lassen und habe die nötigen Werte ermittelt. Schau hier:
  3. Stimmt schon. Meine Kamera ist recht tief, aber das kann man leicht mit hoheren Wänden ausgleichen. Wie ich oben schon geschrieben habe, sind meine Säulen viel mächtiger als die in Grimrock. Dadurch hatte ich FOV von 60 eingestellt. Wenn die Säulen schmaler sind, kann man ohne weiteres ein FOV von 50 einstellen. Dadurch kommt alles etwas näher ran, auch die Monster, die ein Feld weiter stehen. Es war nur ein Quick and Dirty Test um dir zu zeigen, dass FOV eben nicht hoch ist und somit einen Weitwinkel erzeugt, sondern eher kleiner als normal und somit zoomt. Und damit die Wände passen, ist alles viel enger gebaut, als es wirklich sein würde.
  4. Ich hatte gerade etwas Zeit, bevor der Osterbesuch kommt, und habe so mal schnell eine Szene gebaut. Ziel war es einfach einen ähnlichen Bildausschnitt wie bei Grimrock zu zeigen. Daten zur Szene: FOV ist ungefähr 60. Die Kamera ist ungefähr 70cm hinter dem Drehpunkt, welcher genau in der Mitte eines Dungeonfeldes liegt. Die Gänge sind rund 2,5 Meter breit und 2 Meter hoch. Die Kamera ist etwa in der Mitte also bei 90cm. Du siehst also, dass FOV ganz normal ist, aber eben die Gänge viel zu eng sind um ne vierer Party da unter zu bringen. Aber so wird eben beschissen. Hier das Bild dazu Edit: Da meine Säulen viel mächtiger sind, als die Vorsprünge bei Grimrock, gehe ich davon aus, dass Grimrock eher einen FOV von 50 oder so hat.
  5. @Sascha Du hast ja vollkommen Recht. Find ist nicht gut und mit Strings zu arbeiten schon gar nicht. Und meistens kann man das Umgehen. Aaaber: Hast du denn auch schon eine andere Lösung für Objekte, die nicht von Beginn an in der Szenen sind, aber unbedingt mit anderen Objekten, die schon vorher da waren, interagieren wollen?
  6. Das ist natürlich hart! Aber schön, dass du diesen Fehler gefunden hast. Für Unity ist das jetzt nichts Außergewöhnliches, wenn der gleicheTag öfters vorkommt, denn ganz oft hat eine ganze Gruppe von Objekten den gleichen Tag. Z.B. Enemy. Beim Suchen macht Unity eigentlich immer das Gleiche. Es sucht ein Objekt mit Tag, Namen oder eines gewissen Typs und das erste Objekt, welches gefunden wurde, wird genutzt. Warum im Editor immer das Richtige gefunden wurde, aber im Build nicht, kann ich nicht sagen. Aber leider weiß man eh nie welches Objekt das Erste sein wird. Wie dem auch sei: du solltest immer gegen null testen, und nur dann code ausführen, wenn das Gewünschte eben nich null ist. Und falls es so ist, solltest du eine Warnmeldung raus hauen. Dann würde zwar nicht das passieren, was im Spiel eigentlich passieren soll, aber das Spiel würde wenigstens nicht abschmieren und dir zusätzlich eine Info geben, die beim Bugfixen hilft. Hier mal ein Beispiel: SteamStatsAndAchievements SteamSender; void Awake(){ SteamSender = GameObject.FindObjectOfType<SteamStatsAndAchievements>(); if(SteamSender==null){ Debug.Log("SteamSender wurde nicht gefunden"); } } void Update(){ if(Steamsender!=null){ //code ausführen } }
  7. malzbie

    Sichtfeld eingrenzen

    Nutze Clamp! https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html
  8. Wenn du einen neuen Ordner erstellst, der leer ist, und dann da drin Daten unterschiedlichsten Datums sind. Dann sind diese Daten dann auch zum letzten mal zu diesem Zeitpunkt erstellt oder verändert worden. Alles ganz normal. Verabschiede dich davon, dass Unity beim Build etwas falsch macht. Der Fehler liegt in "deinen" Daten!
  9. Das finde ich auch komisch. Das kann viele Ursachen haben und da bin ich echt überfragt. Da musst du jetzt einfach mal durch deine Scripte gehen und gucken, wann er Granaten werfen darf und was die Ursache sein könnte, dass er im Build anders agiert. Die Bedingungen für diverse Sachen sind scheinbar jetzt anders. Finde heraus warum.
  10. Klar kann auch ein Asset nicht in Ordnung sein. Aber das glaube ich eher nicht. Wenn du in Unity dein Spiel testest und es wäre z.B. keine Verknüpfung im Code zu einem Objekt oder einer Komponente aufgebaut, dann läuft das Spiel in der Regel weiter. Es haut die aber in der Konsole eine "ROTE" Fehlermeldung raus. Machst du dann ein Build vom Spiel und dort ist dieser Fehler immer noch vorhanden, dann kann es dazu kommen, dass das Spiel komplett abschmiert. Je nach dem auf welchem Betriebssystem du bist. So habe ich es selber erlebt, dass ein Abfragen eines Arrays über seine länge hinaus auf dem PC keinen Abbruch verursacht hat, aber auf iOS ist das Spiel einfach abgestürzt. Ohne Meldung, einfach weg! Also schau einfach mal ob du wirklich keine Fehlermeldung siehst, wenn du es im Editor startest und genau so durch die Szenen gehst, als wenn du das Build spielst. Ich könnte wetten, dass du auch da die gleiche Fehlermeldung hast.
  11. Ja, das würde helfen. Aber es sieht so aus, als würde es im GameController Script in Zeile 303 zu finden sein. Dort will das Script auf ein Objekt zugreifen, welchen aber nicht bekannt ist. Und bevor Unity sich tot sucht, sagt es einfach wo was nicht stimmt.
  12. Echt komisch. Aber vielleicht liegt es an deinem TrimEnd(). Keine Ahnung was da passiert.
  13. malzbie

    Viele Blender Objekte laden

    Du kannst das im Inspector im Bereich MeshRenderer umschalten. Get natürlich auch über script umzuschalten. Renerer myRend = GetComponent<Renderer>(); myRend.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; Aber trotzdem hast du viel zu viele Shadowcaster. Kann es sein, dass deine Objekte aus ganz vielen Einzelpolygonen bestehen? Leg mal nur ein Unity Würfel in die Szene und schau dir die Werte an. Dann füge mal einen manupulierten Blender-Würfel der Szene hinzu und schau dir die Werte wieder an.
  14. malzbie

    Viele Blender Objekte laden

    Also wenn du 144 Objekte hast, aber gleichzeitig 11.232 shadow casters, dann stimmt da etwas nicht. Wie viele Lichter sind denn in deiner Szene? Aus wievielen Objekten besteht denn so ein 3D Modell? Müssen die Objekte denn alle Schatten werfen?
  15. malzbie

    GetAxis zu Animator

    Ja, da haust du dir mit dem Else die Horizontalachse weg. Es ist ja so, dass du erst abfragst, ob horizontal etwas gedrückt wurde. Wenn ja setzt du die walking Variable auf true. Gleich danach fragst du ab, ob vertikal etwas gedrück wurde und auch hier setzt du walking auf true wenn dem so ist. ABER: Dein Else wird ausgeführt, wenn vertikal nichts gedrückt wurde und dann wird walking auf false gesetzt. Der Code wird von oben nach unten abgearbeitet und selbst wenn du A oder D (horizontal) drückst, wird immer noch abgefragt ob du W oder S gedrückt hast. Da du W oder S nicht drückst, wird über das Else die Variable sofort wieder auf false gesetzt. Wenn du nur mit einer Variable im Animator arbeitest, dann ist es doch egal, welche Richtungsachse du nutzt. Wenn irgendeine gedrückt wird, soll walking auf true sein. Das bedeutet, dass walking nur dann false sein soll, wenn keine Taste gedrückt wird. Also frage einfach beide Achsen gleichzeitig ab. if(Input.GetAxis("Horizontal") ==0 && Input.GetAxix("Vertical")==0){ // ich habe nichts gedrückt m_animator.SetBool("walking",false); } else{ // irgendeine Richtung wurde gedrückt m_animator.SetBool("walking",true); }
×