Jump to content
Unity Insider Forum

MaZy

Members
  • Content Count

    592
  • Joined

  • Last visited

  • Days Won

    22

MaZy last won the day on December 8 2019

MaZy had the most liked content!

Community Reputation

172 Excellent

About MaZy

  • Rank
    Advanced Member
  • Birthday 02/20/1988

Profile Information

  • Gender
    Male
  • Location
    Hannover

Recent Profile Visitors

12,186 profile views
  1. Ich habe nicht verstanden wo dein Problem liegt. Wo brennst denn?
  2. MaZy

    Shadow Bug

    Es gibt zwei Dinge die das verursachen können. Mesh. Das Tier hat zum Beispiel auch solche Lücken. Das Problem hab ich z.B. gehabt, wenn ich MagicaVoxel benutzt habe. Dort waren sehr viele Flächen. Einzige Idee war einfach wo anders nochmal zu exportieren und dabei das Model zu optimieren (automatisch). Ansonsten Lights, Mal normal bias runter drehen.
  3. Ja hab tatsächlich mittlerweile Rigidbody genommen.
  4. Wenn du meinst, dass ein Auto einen weiteren und größeren Boxradius hat, ja könnte man, aber bin kein Freund davon, wenn andere Objekte die Arbeit von anderen machen ^^. Ebenfalls geht das auch bei dem Verfolger, aber irgendwie fand ich hier Raycast passender. Aber ist eigentlich gute Frage, welches allgemein besser wäre.
  5. Ich prototype gerade ein Spiel. Folgendes sieht man in dem Gifv: https://i.imgur.com/rvjO3aM.gifv Links ist ein Rigidbodyobjekt mit Masse von 5000. Rechts ein CharacterController und Rigidbody kann CharacterController nicht schubsen. Ist das nicht möglich? Ich benutze MovePosition beim Rigidbodyscript.
  6. Moin. Normalerweise, wenn ein Gegner den Spieler verfolgt lässt man ihn ab bestimmten Distanz stoppen und angreifen (zu mindest hab ich das so gemacht). Wie macht man das bei Objekten, die nicht an allein Seiten gleich breit bzw. lang sind, zum Beispiel Autos, Züge oder sogar Laster? Oder noch krasser wie bei Zombie spielen, wenn Zäune drum rum sind, wie wissen sie dass man es angreifen kann mit Verbindung NavmeshAgent usw. EDIT: Könnte das mit raycast lösen fällt mir gerade ein.
  7. Man sagt allgemein so viele Cubes erstellen ist nicht gut. 17500 Cubes * 8 Ecken = 140.000 Vertices. Wenn du Culling benutzen tust, muss Culling noch diese Vertices durch loopen. Weiß jetzt nicht wie das aber exakt abläuft. Daher am besten den Voxel Technik benutzen. Hab damals das hier verwendet: http://studentgamedev.blogspot.com/2013/08/unity-voxel-tutorial-part-1-generating.html Zum Occlusion Culling. Ich glaube das funktioniert nur bei Dingen in der Scene, die auch Occlusion Static eingestellt haben. Weiß gar nicht, ob es dynamisch geht, also wenn du die Welt generierst und dann. Musst nur noch baken und dann ist das eigentlich fertig. Ups, hab erst gedacht, willst wissen wie das geht. Also kannst theoretisch selbst machen. Im Discord gibt es jemanden, der sowas ähnliches gemacht hatte, aber dennoch Probleme mit Performance hatte. Im Prinzip fragst du einfach nur ob, ob die Kamera etwas sehen kann, wenn nicht ausblenden (MeshRenderer). Kannst dazu OnBecameInvisible und OnBecameVisible benutzen. Ich weiß nur nicht, ob das auch gecalled wird, wenn man meshrenderer deaktiviert hat.
  8. Das habe ich schon verstanden. Ich hab ja auch allgemein darüber geschrieben und zusätzlich noch die Ads erwähnt, da man dort noch mal die Privacy einstellen kann. Finde aber immer noch, dass man direkt am Anfang fragen sollte. Also ich hab mich da nicht eingelesen, da ich nur einfach das Verlinkt habe und die User sich das selbst durchlesen können aber, wenn die ID zugeordnet werden kann, zum Beispiel, wo man sagt "ah die ID hat heute das Spiel länger gespielt" oder "ID hat x mal das Spiel / Unity heute gestartet" ist das ein Fall für die DSVGO und nicht mehr wirklich anonym und tatsächlich gelt das als personenbezogen, weil man da einordnen kann wer was macht. Auch wenn man jetzt nicht weiß wer wirklich dahinter steckt. Wenn es aber eine z.B. länderspezifische Gruppierung ist, also wo man sagt "In Deutschland wurde Unity in diesem Monat insgesamt 3 Millionen mal gestartet, die version x y z", dann gelt das als anonym. Wenn wir Analytics benutzen sammeln wir auf jeden Fall für uns alles Anonym. Ich will hier nichts falsches sagen, aber ich glaube, dass man das sogar ohne Zustimmung machen darf (also beim Starten des Spiels), aber dennoch informieren MUSS und darauf hinweisen sollte. Da senden wir ja nur zum Beispiel sowas wie "Scene1 mit einem Score von x wurde beendet". Dabei erfasst man keine personenbezogene Daten. Das Privacy Plugin ist leider veraltet und es kommt eine Fehlermeldung. Bei meinem alten Projekt ist es als Button noch da (ist dasselbe Projekt wie das Bild oben). Man braucht diesen Plugin nicht mehr, weil wohl Analytics sowas schon beinhaltet. Muss ich mal eigentlich genauer anschauen und mal da umsteigen.
  9. Also paar Sachen von malzbie ist nicht richtig. Du bist schon verantwortlich dafür, da es durch dein Service zum Daten sammeln kommt. Sonst könnte Facebook auch das gleiche sagen und einfach mit einer anderen Firma arbeiten. IP-Adressen sind personenbezogen. Seit 2017 sogar endgültig durch Bundesgerichtshof entschieden. Davor war mal so und mal so gewesen. Durch IP-Adressen kann man sogar Wohnort (die Stadt) und wenn man tiefer zugreift auch sensiblen Daten rauskriegen. Also ich sag mal so. Nimmt das nicht locker. Klar bei kleinen Leuten ist jetzt nicht so dramatisch, aber man weiß nie. Bespiele: Ein Kumpel von mir wurde vor ÜBER 10 Jahren wegen eines Liedes angeklagt und zwar wegen Raubkopie. Und er ist mein Nachbar gewesen. Mich hat es nicht erwischt, aber ihn hat es durch nur eine mp3 download erwischt. Man weiß daher nie ^^. Da er 17 war, hatte er keine Strafen bekommen. Ich war 18 und für mich wäre es nicht gut ausgegangen. Mein Vater hatte damals eine Online-Radio-Server. Der Stream, also wo man das hören konnte, war an einer Seite gebunden, wo Online Chatter unterwegs waren (war eigener IRC Server). Da ja keine Lizenz zu dem Lieder gab, hat der Betreiber der Seite natürlich eine Hohe Geldstrafe bezahlen müssen. Mein Vater hatte da keine Verantwortung und hat keine Probleme bekommen, obwohl die IP des Radiostreams zu mein Vater führt. Ergo der Betreiber war wieder verantwortlich. (Das lustige ist, dass ich diesen Server verwaltet habe, da mein Vater 0 Ahnung von sowas hatte XD. Ich lernte auch dadurch Linuxserver kennen.) Zum Topic: Soweit ich weiß ist der Spielherausgeber für das Datenschutz des Users verantwortlich. Wichtig ist nur, dass, bevor alles gesammelt wird erst eine Zustimmung des Users gebraucht und dazu auf jeden Fall die Privacy Policy (also die Datenschutzerklärung) verlinkt sein. Sie müssen das durchlesen. Ob sie am Ende das tun oder nicht ist nicht dein Problem. Hauptsache man sagt das denen. In dem Text sollte alles zum Sammeln stehen. Auch das Unity sammelt und wie man die Daten löschen lassen kann. Wenn es Anonym gesammelt wird gibt es da kein Problem, da ja nicht personenbezogen ist. Muss man aber natürlich trotzdem erwähnen, dass Daten anonym gesammelt werden und auch wofür. Bei mir hab ich bei meiner App so gemacht, dass erst ToS und Privacy Policy akzeptieren muss und danach direkt erst mal frage wie alt die Person ist (weil google im Play Store das mir vorschreibt) und gleichzeitig auch, ob er erlaubt personenbezogen Daten zu speichern. Bei Minderjährigen ist klar, darf man KEINE personenbezogene Daten sammeln. Später soll auch möglich sein, dass immer noch zu ändern. Es ist nämlich zu mindest in EU Pflicht, dass man die Löschung und Änderung erlauben muss. Auch du muss im Script an Unity weiterleiten, dass die Person minderjährig ist und somit nicht sammeln darf. Dann werden nur noch wichtige Sachen gesammelt. Bei Unity Ads zusätzlich sagen sie zwar, man braucht da nicht viel tun, weil, wenn die Werbung angezeigt wird, kann man dort Einstellen, was personenbezogene Daten angeht, aber ich würde mich darauf alleine nicht verlassen. Ist meiner Meinung nach komisch, dass sie das sammeln und dann erst fragen, dürfen wir sammeln? ^^. Hier ein Bild zusammen geschnitten wie ich das gemacht hab. Wenn man unter 13 Jahre angibt, dann geht dieser Hackchen weg. Finish button ist erst mal grau und nicht anklickbar (ich war hier nicht im playmode deswegen ist es nicht grau).
  10. Ich glaube auch deine Aufnahmeprogramm macht auch nicht wirklich mit: Anscheinend benutzt du Renderpipline HD und die Shader machen Probleme. Weiß nicht, ob es vllt mit der version 2019.1 was zu tun haben könnte. Sagst ja, dass es beim Teamkollegen auch passiert. Würde mal die Lightnings baken. Im Bild ist ein Hacken bei Decals drin. Vllt mal rausnehmen und damit mal probieren. Ansonsten anderen Materialshader mal ausprobieren. Als letztes kann ich nur sagen Unity mal updaten. EDIT: Transparent script könnte höchstwahrscheinlich dies verursachen.
  11. Resource.Load kann nur Unity bekannte Types laden. .obj oder .fbx bzw models allgemein sind das nicht. Daher mache zu erst daraus ein Prefab und danach kannst du es Laden. EDIT: Muss mich korrigieren. Hab da mist gelabert, weil ich dich falsch verstanden habe. Ein Obj kannst mit Resources laden, wenn du ein Resources Ordner und da rein packst. Danach kannst du so laden GameObject 3dmodelResource = Resource.Load<GameObject>("3dmodel); Instantiate(3dmodelResource); Du muss also angeben, was du lädts, gameobject, mesh, texture usw. Den Pfad gibst du ohne "Resources" an. Also wenn es im Resources/mymodels/avatar.obj ist dann einfach mymodels/avatar eingeben. Ich empfehle das dir aber NICHT! Weil man da auf Speicherprobleme kommen kann. Also mehr Ramspeicher wird benutzt. Es ist besser wenn du aus deinen 3d models einen Prefab machst und dann in deinem Script eine List bzw Array zu machen, und da kannst du all deine Prefabs reinpacken und von da aus laden. Instantiate(mymodels[0]); Das hast du dann nämlich auch im Laufzeit erstellt
  12. Bill Gates sagte eins: "I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.". Ich lebe tatsächlich nach dieser Prinzip. Ich versuche immer alles schneller und leichter zu machen. Und darum hier mal ein kleiner Code von mir, welches ihr wahrscheinlich auch ab und zu brauchen könntet. Hier ist ein Script welches OverlapCircle etwas erweitert. Öfters habe ich das Problem gehabt, dass ich OverlapCircle einsetze, aber dann nochmal durch loopen muss um zu schauen, ob ich die richtigen Collider2D überhaupt gefunden habe. Aber warum das nicht so bauen, dass ich direkt die Richtigen bekomme? https://gist.github.com/MaZyGer/b4c45395bd6a5d06722a0eecf71c850e Beispiel wenn du eine Granate wirfst und beim Aufprall noch Monster suchen willst, die aber auch noch am Leben sind (um denen Schaden hinzuzufügen): List<Monster> monsters = new List<Monster>(); int count = OverlapCircle<Monster>(Vector2.zero, 10f, new ContactFilter2D() { }, monsters, m => !m.IsDead ); // Andere Möglichkeiten int count = OverlapCircle<Monster>(Vector2.zero, 10f, new ContactFilter2D() { }, monsters); int count = OverlapCircle<Monster>(Vector2.zero, 10f, new ContactFilter2D() { }, monsters, c => c.GetComponentInChildren<Monster>()); int count = OverlapCircle<Monster>(Vector2.zero, 10f, new ContactFilter2D() { }, monsters, c => c.GetComponentInChildren<Monster>(), m => !m.IsDead); Der Code im Link wird vllt in der Zukunft erweitert. Je nachdem was ich brauche werde ich hinzufügen.
  13. Benutzt du irgend ein Algorithmus? Zum Beispiel AStar oder Djkstar? Ansonsten ist es schwer dir zu helfen, wenn du eigenen kreieren möchtest. Ich kann z.B. nicht nachvollziehen was du da machst bei DistanceBteweenTwo. Das hört sich wie die Berechnung von AStar an, aber inhaltlich sieht das für mich komisch an.
  14. Du solltest dich wirklich mit Programmierung beschäftigen. Das sind kleine Rechtschreibfehler die man sogar mit bloßen Augen sehen kann. Das muss man schon drauf haben meiner Meinung nach. Ansonsten kommst du bei jede Kleinigkeit und das gar nicht gut. Ich meine da steht z.B. 1f statt if und das ist sogar was universelles.
  15. Wahrscheinlich Mono selbst ist nichts anders um die Möglichkeit zu geben Plattform unabhängig zu programmieren, das mit C#. Ein Beispiel, ich habe ein Server programmiert, welches mit C# geschrieben wurde und welches sogar einen .exe beinhaltet. Das Programm läuft sowohl in Linux aber auch im Windows. Mittlerweile kann man sogar die Datei direkt starten. Früher musste ich noch mono zusätzlich ausführen. Früher war mono nicht für Systeme gedacht. Eigentlich nur windows. Kurz: Mono hilft die diese Programme die programmiert wurde auszuführen, zu compilen (ja auch in Linux kann man sie compilen und ausführen). Net Standard definiert, welche Libraries in der Programmierung benutzt werden können. Beispiel Netstandard 2 die framework 4.6.1 und die netstanard 1 wäre framework 4.5. Da sind auch aber andere Pakete dabei. Nicht nur Framework. Z.B. Core. Net Framework waren nicht beabsichtigt auf anderen Projekten zu funktionieren. Durch Xamarin und Mono wurde was neues erschaffen, wo man dann für anderen Plattformen erweitern konnte. Net Core benutzt KEIN mono. Wurde bewusst so vom Libraries aufgebaut, dass man auch für andere Plattformen verwenden kann. Ich habe jetzt nicht selbst benutzt, aber ich vermute mal, dass da sowas gibt wie if application is linux then usw. So wie ich auch verstanden habe hat Core auch keine libraries für Interfaces. Sprich kein Fenster wo man navigieren kann (Windows forms, WPF usw). Es ist der originale Mono zu mindest in der API Bereich. Zu modifizieren und zu ändern wäre nicht gut, dann müssten wir auch die Libraries dafür runterladen. Z.B. müsste ich irgendwas zusätzlich auf meinem Linux installieren, damit auch Unitys Version funktionieren soll. Aber der Standard Mono läuft. Unity ist ein Editor. Unity benutzt mono vom Microsoft. Natürlich! Man kann derzeit zwischen net 2.0 standard under net 4.x auswählen. Das sind eigentlich keine Versionen sondern Paketzustellungen. Früher konnte man auch Net 3.5 auswählen. Wichtig ist hier zu unterscheiden, dass wenn dahinter standard steht, dass es nicht das gleiche ist wie, ohne Standard. Standard heißt, dass da bis zu bestimmte libraries, versionen usw enthalten sind. beispiel Framework, Core, Mono usw. Die Schreibweise ist um das zu erkennen ist: Net 4.x bedeutet, dass höchst mögliche soll erlaubt werden beim Programmieren. z.B. .Net Framework 4.7.2 usw. Unity Editor natürlich muss das unterstützen. Sonst geht es nicht. Siehe oben Unity hat ist noch nicht bei der Framework Version. Deswegen geht es noch nicht. Ich glaube standard 2.1 wird das nicht werden. Wird eher immer noch net 4.x sein, da wie ich oben schrieb standard auch viele Sachen hat die wir aber nicht in Unity brauchen. Net 4.x sollte nur die Framework Version sein.
×
×
  • Create New...