Jump to content
Unity Insider Forum

malzbie

Moderators
  • Content Count

    5,081
  • Joined

  • Last visited

  • Days Won

    350

Everything posted by malzbie

  1. Willkommen! Ich denke nicht, dass du großartige Probleme mit c# bekommen wirst. Das mit den Unity-Klassen, Komponenten und Verhalten ist eher eine Herausforderung. Wenn der Groschen dann gefallen ist, ist auch das ganz leicht. Wir bringen dich schon dahin!
  2. Nein! Es werden immer erst alle Awakes durchlaufen und dann die Starts. Welches Script aber damit anfängt, ist zufällig, wenn du es in der Sript Order nicht manuell festgelegt hast. Das bezieht sich aber nur auf die Scripts, die gleichzeitig erwachen. Also die, die schon zu Beginn in der Szene sind. Die Scripts, die nachher erst in die Szene geschmissen werden, z.B. beim Instanzieren von Gameobjects, machen es dann sobald sie erwachen. Da ist es egal was die alten Scripts gerade machen. Und nochwas: Ist ein Script zu Beginn deaktiviert, wird trotzdem die Awake ausgeführt! Die Start wird jedoch erst beim Aktivieren des Scripts ausgeführt.
  3. Cinema kann das auch. Matürlich muss mindestens eine Seite des Würfels geschnitten werden, denn jedes 3D Objekt besteht nur Flächen und ist innen leer. Legst du dein Objekt mittig in den Würfel ohne dass irgendeine Setie des Würfels geschnitten wird, dann gibt es nichts zu berechnen. Du stellst beim Boole A-B ein und ordnest es so : Boole -Würfel -DeinObjekt
  4. Mit Covert.toSingle kannst du ein Sting in ein Float wandeln. Wenn deine Werteabfrage an sich schon funktioniert, du also nur noch den Sting in ein Float wandeln willst, sollte das hier funktionieren: gameobjectPostionY = Convert.toSingle(GetDataValue(items[num], "wert:"));
  5. Eigentlich wie immer. Irgendwie abfragen, ob da, wo gegraben werden soll, überhaupt was ist. Und wenn da was ist, braucht dieses Etwas eine Info, dass es grabbar ist, die dann gleich mit abgefragt wird. Ist da etwas worin man buddeln kann, dann los, ansonsten nicht. Wie du jetzt abfragst, ist abhängig vom Spiel und dessen Aufbau. Das könnte über Trigger, Raycasts, Positionsangaben, Raster oder Arrays geschehen.
  6. Ich habe mir mal etwas von dem Tutorial angesehen. Keine Ahnung was du da jetzt verändert hast. Vielleicht ist die Kamera nicht richtig untergeordnet, vielleicht hat sie kein Script und kann somit nicht gesteuert werden. Vielleicht fragst du den Inputmanager nach Dingen ab, die jetzt so nicht mehr heißen. Vielleicht siehst du sogar in der Console einen roten Fehlertext! Da ist es immer ganz schwierig zu helfen, ohne sich alles von dem Tutorial anzuschauen und dann noch mit deinen Gegebenheiten zu vergleichen. Wenn du ein Tutorial nacjarbeitest, dann musst du dabei lernen. Wenn du einfach nur nacharbeitest, ohne zu verstehen warum das jetzt so gemacht wird, wirst du immer wieder Probleme bekommen. Dieses Tutorial ist nichts für Einsteiger. Und solange du die Grundlagen von Unity nicht richtig kannst (worüber werden Eingabegeräte abgefragt, welche Werte bekommt man und wie kann man diese Werte z.B. für eine Kamerabewegung nutzen) solltest du erst mal andere Tutorials machen, die sich mit den Grundlagen auseinander setzen.
  7. Nicht schlecht! Die Sounds sind witzig. Die Modelle gefallen, könnten sich aber vielleicht ein wenig mehr vom Untergrund abheben. (Manche Schiffe) Die Variationen bei den Gegnerschüssen finde ich sau gut. Schön weiter machen.
  8. @ Mazy: Die "dynamische" IP-Adresse wurde vom Gericht als Personenbezogen dargestellt. Stimmt! Faktisch ist sie es nicht, solange man nicht mehr Infos über einen Provider bekommt oder über das Verknüpfen mit einem Account hat. Die Kundeninfo hat der Provider und dann auch nur im Bezug zum Kunden. Der Kunde ist aber nicht zwangsläufig die Person, die über diesen Anschluß im Netz unterwegs ist... Aber ja, sie wird als Kundenbezogen dargestellt und somit würde DSGVO greifen. Jetzt aber zu Unity und deren Datenerhebung. Und da rede ich jetzt nicht von ADS (also Werbung) oder Analytics, denn dafür werden sowieso ganz willentlich Daten erhoben. Unity Technology (UT) Fragt beim Start des Spiels Daten ab und nutzt dafür auch die Ip Adresse. Diese wird aber scheinbar "nicht" gespeichert sondern einmalig genutzt um eine ID zu erzeugen und die Herkunft zu bestimmen. Die Herkunft ergibt sich ganz automatisch aus der IP Adresse, denn die ist Landerbezogen. Es werden zusätzlich noch andere Daten erhoben und mit dieser ID verknüpft. So Daten wie Gerätetyp(PC oder MAC), Betriebssystem, Prozessor, Ram, Grafikkarte, eingestellte Sprache. Es gibt also eine anonyme ID ( denn die ID soll wohl die Prozessornummer sein) mit unterschiedlichen Informationen. https://forum.unity.com/threads/unity-analytics-data-privacy-plug-in-available-now-in-the-asset-store.532484/page-2#post-3546621 In diesem Post aus dem Mutterforum ist ein Link zur Scripting API. Dort ist erklärt wie man das Tracking per Befehl ausschalten können soll. Habe ich noch nicht getestet. Da gibt es jede Menge Analytics Befehle. Und vielleicht funktioniert es ja, dass man das Datenherheben von vornherein abschalten kann. Das Privacy Plugin ist eine gute Möglichkeit, wenn du gerne Daten sammeln willst, aber der User die Möglichkeit bekommen soll, seine Daten anzusehen und ggf. das Erfassen abzuschalten. Das musst du natürlch im Programm irgendwo Sichtbar machen. Über einen Button bekommt der User dann Infos. In diesem Falle bräuchtest du wahrscheinlich keine extra Absicherung im Disclamer. Es ist scheinbar nach EU Recht ok, ersteinmal Daten zu erfassen und dann bei Bedarf wieder zu entfernen. Ich fände es besser, wenn man dem ausdrücklich zustimmen müsste. Aber so ist es nun mal.
  9. Das Dingen ist doch, dass nicht Du die Daten bekommst, sondern Unity selbst. Somit musst Du meiner Meinung nach auch nichts tun, denn du hast ja keine Daten. Eine IP-Adresse ist ersteinmal nicht personenbezogen. Sie wird es erst dann, wenn sie mit einem Account auf deiner Seite verknüpft werden kann. Wenn ein Gast z.B. hier in diesem Forum rum macht, dann gibt er seine IP Adresse bekannt. Das Forum erkennt jetzt einzelne User/Gäste und weiß somit wieviele User gleichzeitig unterwegs sind und wo sie gerade sind. Das war's aber auch. Eindeutige ID's gibt es übrigens schon lange und z.B. Apple hat die von Beginn an gesammelt und tut es noch. Diese ID's dürfen nicht im Zusammenhang mit den Userdaten stehen, dürfen aber durchaus ausgewertet werden (z.B. Anzahl der Geräte, die die App nutzen und wo auf der Welt diese ID zuhause ist). Es gibt einige Statistikseiten, die genau diese ID Daten nutzen um ihre Statistiken ( Alles das, was du als Ersteller wissen willst, wie Zeiten, Progress, Herkunft ) mit Werten zu füllen. Alles erlaubt, denn du und der Seitenbetreiber erfahren nichts von den Personen selbst. Unreal sammelt auch solche Daten, denn dort ist es ja sogar so, dass der Spieleersteller für jede verkaufte Spielelizens etwas an UE bezahlen muss. Und die wollen schon genau wissen, wie oft ein Spiel verkauft wurde. Also, ich glaube nicht, dass du irgendwelche Probleme bekommst. Du kannst aber natürlich einen Disclamer mitliefern, indem du schreibst, dass diese Dinge passieren. Ob du ein Privacy Plugin brauchst und ob das dann ausreichen würde, kann ich nicht sagen. Das kannst du nur genau erfahren, wenn du einen Rechtsanwalt UND Unity fragst.
  10. Ja, es ist bei uns halt so, dass wir sogut wie keine Themen löschen. Der Sinn eines Forums ist ja, dass sich Informationen anhäufen und somit anderen Leuten helfen können. Es wäre schön gewesen, wenn du uns deine selbst gefundene Lösung mitgeteilt hättest um eben anderen Leuten, die später vielleicht ein ähnliches Problem haben, helfen zu können. Jetzt ist es egal, denn die Fragestellung sieht ja auch keiner mehr. Trotzdem löschen wir nicht.
  11. malzbie

    Sound

    Schau dir mal die Soundeinstellungen an. Da gibt es einen Bereich für 3D Sound. Ja und da stellst du dann die Entfernung ein, ab wann du den Sound hören willst. Mit dem Grafiksystem kannst du dann noch einstellen, wie der Sound beim näherkommen seine Lautstärke verändert. Schau hier: https://docs.unity3d.com/Manual/class-AudioSource.html
  12. Also als aller Erstes solltest du immer alle bekannten Fehler beseitigen, bevor du auf die Suche gehst. Ich sehe in deiner Konsole, dass irgendein Objekt nicht bekannt ist. Wenn du keine Fehler mehr angezeigt bekommst und dein Problem immer noch da ist, dann schau, ob sich evtl. 2 Objekte an der selben Position befinden. Könnt eja sein, dass dieses Gebäude 2 Mal vrohanden ist oder zur Laufzeit nocheinmal erstellt wird. Da die Texturänerung immer bei den selben Kamerawinkeln auftritt, könnte es ein Z-Buffer Problem sein, was gerne auftritt wenn 2 Objekte am selben Ort sind. Vielleicht ist da aber auch ein Problem mit LOD. Keine Ahnung ob ihr LOD nutzt.
  13. So wie ich das sehe, ist dein "greifbar" machen ein lösen aus der Hierachie. Der Bone verliert also seinen Parent. Warum gibst du dem Bone nach seiner Bewegung nicht einfach wieder den alten Parent? Scon wäre er wieder in der hierachie drin. https://docs.unity3d.com/ScriptReference/Transform-parent.html
  14. malzbie

    Backup

    Im Prinzip wäre es möglich. Du müsstest dir aber Images deiner Festpaltten erzeugen und die dann auf den neuen Rechner, der genausoviele Platten hat, schreiben. Dafür brauchst du eine Backupsoftware, die dann auf dem Neuen Rechner z.B. per USB Stick startet UND die Möglichkeit hat über eine Netzwerkverbindung deine Cloud einzubinden. Du könntest natürlich auch einen anderen Rechner nutzen um die Backups runter zu laden und z.B. auf eine Externe Platte zu schreiben. Da Windows nicht einfach die Programme von einem zurückgespielten Image einbindet (Windows bindet nur ein wenn du auch installierst, weil dann die nötigen Daten in die Registry und diverse Ordner geschrieben werden), musst du halt von allem ein Image haben, auch von der WIndowsplatte. Und da könnte es zu Problemen kommen. Denn dein neuer Rechner in den USA wird ja nicht die gleiche Hardwarekonfiguration haben, wie der bei dir zuhause. Windows könnte dann dicke Backen machen, weil ja kein Treiber mehr stimmt. Windows 10 ist relativ gutmütig und sollte die Probleme erkennen und versuchen sie selbst auszubügeln, sodass du wenigstens eine Minimalkonfiguration hast und dann gewisse Treiber selber nachinstallieren kannst. Das muss aber nicht sein. Ich gebe dir ne Chance von 85%!
  15. Ja! Alles was wichtig ist, sollte auch erwähnt werden. OK. Da du mit Box Collidern besser zurecht kommst, als mit dem Meshcollider, gehe ich davon aus, dass eine der Wände, die der Meshcollider umspannt, wirklich sehr dünn ist. Und da du nicht über die Physik bewegst, kommt es eben zur Durchtunnelung. Ich sehe da eigentlich nur die Möglichkeit, das du Fixed Timestep reduzierst. https://docs.unity3d.com/Manual/class-TimeManager.html Geh mal auf 0.005. Geht auch noch tiefer, aber irgendwann kostet das so viel Performance, dass du den Zyklus nicht mehr erreichen kannst. Dieser Timestamp ist der Intervall, den die Physik durchfährt. Je kleiner der Wert ist umso öfter wird überprüft. Kostet aber jedes Mal Prozessorleistung. Merke dir auch: Je dicker ein Collider ist umso eher wird eine Kollision erkannt. Wenn von der einen Überprüfung zur anderen Überprüfung ein Objekt die Dicke eines Kolliders überwinden kann, ist der Kollider zu dünn oder das Objekt zu schnell. Dickere Collider können da Abhilfe schaffen. Genauso kannst und solltest du beim Rigidbody die Collision Detection auf auf "Continuous" oder "Continuous Dynamic" schalten. Um schnelle Bewegungen noch besser zu erfassen.
  16. Willkommen! Der Typ des Colliders hat nichts damit zu tun, ob du ihn bewegen kannst oder nicht. Auch ein MeshCollider bewegt sich mit dem Objekt mit, wenn das Objekt bewegt wird. Damit etwas kollidiert, also nicht durch andere Objekte duchflutscht, müssen diese Objekte jeweils einen Collider haben. Das sollte ja klar sein. Außerdem muss mindestens eines dieser Objekte einen Rigidbody haben, denn nur mit einem Rigidbody wird auch eine Kollision ausgewertet und die ganzen physikalischen Eigenschaften wie Reibung, Masse, Federung und Bremswirkung auf die Rotation oder Bewegung werden mit einberechnet. Ob jetzt alle Objekte einen Rigidbody haben oder nur der Ofen, hängt davon ab, welche Objekte physikalische Eigenschaften haben sollen. Das kann man also nicht so ohne Weiteres sagen. Man sollte aber an RB's sparen, denn jeder RB berechnet ja etwas und das kostet Leistung. Dinge, die nicht bewegt werden, brauchen keinen RB. Wenn du dann ein Objekt mit einem RB bewegst, dann soltest du das mit physikalischen Befehlen machen. Also nicht mit Transform-Befehlen arbeiten, denn die Physik wird in einem anderen Zyklus berechnet, als der Rest, der ja abhängig von der Framerate ist. Somit könnte es bei schnellen Bewegungen schnell zu Durchtunnelungen kommen. Nutze also die Force oder die Velocity um den RB zu bewegen.
  17. Ich habe mir das mal angeschaut. Die Figur hat ganz viele Materialien und für jedes Material auch eine Polygonselektion. Und wie du siehst, ist das erste Material mit der ersten Selektion in der Hierachie genau das, was bei dir nur eingefärbt wird. Ich habe das jetzt nicht in Unity getestet und ich weiß jetzt auch nicht aus dem Stehgreif, wie man per code die Selektionen bestimmen kann. Aber ein Tipp: Versuch doch mal die Figur ohne Texturen zu exportieren. Da sollte dann auch die Selektionsinfo weg sein. Es könnte auch an dem Haken Collapse UV Maps liegen. Der Exporter hat nämlich wirklich eine einzige UV Map raus, wo alle Selektionen übereinander liegen. Also mach die Haken für die Textures und die UVMap mal raus.
  18. malzbie

    Objekt bewegen

    Tja, da sind viele Dinge, die fehlen können und viele Dinge, die auf jeden Fall falsch sind. Hast du die Variable Target auch mit einem GameObject bestückt? Heissen deine Wände auch genauso, wie du die Namen abfragst? Hat dein Speed auch einen Wert? Hat denn deine Kugel einen Rigidbody, oder wenigstens beide Wände? Wenn 2 Dinge kollidieren sollen, muss mindestens ein RB dabei sein, denn nur darüber wird überhaupt eine Kollision erfasst. Aber das Hauptdingen, wenn jetzt alle Werte, Objekte und Namen richtig sind, ist das was du da bei der Kollision machst. In dem Moment, wo du mit einer Wand kollidierst, führts du Vector3.MoveTowards aus. Entweder in die eine Richtung, oder in die Andere. Aber eben nur in diesem einen Moment!!! In der Update hast du aber ein transform.Translate nach rechts, welches ständig ausgeführt wird. So kann das nicht gehen.
  19. Sach ma. Kann es sein, dass du da 2 UV Maps auf der Figur hast?
  20. Im Build sollte alles so funktionieren, wie du es im Editor siehst. Es sei denn du hast deine Prefabs in einem Ordner Namens Editor. Das da drin wird nicht mit exportiert. Schau außerdem, ob du irgendeine Fehlermeldung (rot) in der Console siehst, wenn du das Game im Editor testest. Gerade fehlende Zuweisungen oder IndexOutOfRange Fehler führen zu den dollsten Ergebnissen.
  21. Dafür, dass ihr ganz am "Anfang" seid, ist es echt nicht schlecht! Daumen hoch!
  22. Ich kann dich voll verstehen. Auch zu meiner Zeit gab es noch kein Informatik Studium. Ich habe aus Interesse von alleine mit Basic auf dem VC20 angefangen. Alles ohne Internet! Ich habe damals, vor 35 Jahren, schon viel gelernt, bin aber regelmäßig gescheitert. Und trotzdem bin ich heute in der Lage komplette Spiele zu erstellen (Grafik, Sound, Musik, Objekte, Logik), weil ich an all den Dingen interesse hatte und im Lauf der Zeit immer mehr gelernt habe. Was dir jetzt helfen könnte, ist Folgendes: Geh einfach einmal davon aus, dass du nicht ein Ding baust, um ein Spiel zu erstellen, sondern viele unterschiedliche Dinge, die miteinander Kommunizieren können und als Ganzes dann ein Spiel ergeben. Dei Puzzlespiel besteht aus vielen Dingen. Da ist der Ablageort, der 25 Bereiche hat, und da sind 25 Puzzleteile. Muss jedes Ding jetzt alles von den anderen Dingen wissen? Nein! Dem einzelnen Puzzleteil ist es doch total egal, was mit den Anderen Puzzleteilen ist. Es muss auch nicht wissen, wo es aufgehoben wurde und wo es hingelegt wird. Es muss aber wissen wenn es aufgehoben wird und wenn es hingelegt wird. Es sollte außerdem eine Identifikation haben und das Script kennen, welches die Auswertung macht, wo das Script auch immer liegt. Alle 25 Puzzleteile sind von der Art her also gleich und haben somit alle das gleiche Script. Sie unterscheiden sich eigentlich nur in der Identifikation, also von der Puzzleteil-Nummer. Wird jetzt eines dieser Puzzleteile mit der Maus angeklickt, weiss es, dass es etwas mit ihm passiert. Das Puzzleteil wacht also auf und könnte jetzt z.B. immer der Mausposition folgen, oder einfach nur seine Identifikationsnummer an das Auswertungsscript übergeben, oder, oder, oder. Wird dieses Puzzleteil jetzt wieder gehen gelassen, dann wird es auf jeden Fall dem Auswertungsscript sagen, dass es so ist und wo es sich gerade befindet. Es könnte also in eine Methode oder Funktion des Auswertungsscriptes rein springen und die wichtigen Daten gleich mit übermitteln. In dieser Funktion würde dann überprüft, ob das Teil nahe genug an seinem Soll-Ort liegt. Tut es das, dann würde das Teil an die exakte Position geschoben und sich irgendwie gemerkt, dass ein Teil richtig liegt. Das Puzzleteil macht also nur dann etwas, wenn es aufgehoben wird bzw. ist oder wenn es abgelegt wird. Sonst macht es eigentlich nichts. Das Auswertungsscript macht immer nur dann etwas, wenn das Puzzleteil in die Funktion oder Methode rein springt. Einmalig überprüft es, die richtige Position des Teils. Passt die Position, wird sich gemerkt, dass ein Teil richtig liegt und es wird zusätzlich überprüft, ob nun alle Teile richtig sind. Wenn ja, wird ein weiteres Ereignis gestartet, wobei der Erfolgstext angezeigt wird und dann auf beenden des Spiel gewartet wird. Wenn nein, passiert nichts. Eine andere Möglichkeit wäre, dass jedes Puzzleteil seinen Bestimmungsort schon kennen würde. Dann würde das Teil beim Ablegen selber überprüfen, ob es richtig liegt und dann eben einfach nur den Erfolg an das Auswertungsscript senden. Das könnte etwas einfacher zu handhaben sein. Wie dem auch sei. Du solltest dir einfach überlegen, was ein Ding alles können und wissen sollte um zu funktionieren. Welche Information ist für welches Ding wichtig und welche nicht. Sind viele Dinge nahezu gleich und unterscheiden sich nur in wenigen Bereichen, dann sollte man sie so aufbauen, dass sie wiederverwendbar sind. Ein Puzzleteil beommt einfach nur eine eigene Nummer, evtl. einen Zielort und eine entsprechende Grafik. Alles Andere ist bei allen Puzzleteilen gleich. Ein Informationsaustausch von einem Objekt zum Anderen sollte nur Ereignisgesteuert sein. Nur bei einer entscheidenden Änderung muss das andere Objekt etwas darüber wissen. Und auch nur dann, muss etwas ausgewertet werden. Ob jetzt ein Objekt eine Sache an ein anderes Objekt übermittelt, also z.B. in eine Methode rein springt, oder ob ein Objekt einen Variablen-Wert eines anderen Objektes zu gewissen Zeiten abfragt, ist eine Frage der Vorliebe, des Aufbaus und der Häufigkeit des Informationsaustausches. Beides geht und beides macht Sinn.
  23. Du darfst nicht im Check hochzählen, sondern da, wo du das Puzzleteil richtig platzierst. Das sollte ja für jedes Teil nur einmal passieren. (Sollte, denn diese Positionsabfrage sollte nur dann kommen, wenn du das Teil loslässt. Also bei OnMouseUp, oder so.) Aber es führen viele (alle) Wege nach Rom! Versuche jedenfalls gewisse Sachen immer nur bei einem Ereignis auszuführen, nicht ständig in der Update. Wenn ein Puzzleteil einmal liegt, also an die entsprechende Position gebracht wurde, ist das Ereignis da. Aber eben nur dann. Und nur dann erhöhst du den Zähler. Du kannst natürlich auch mit einer Liste oder einem Array arbeiten und dort etwas hinzufügen oder einen Wert einer Stelle ändern. Aber niemals immer wieder duch den ganzen Code fahren, denn das kostet Leistung! Das wäre nämlich so, als würdest du ein Buch lesen und bei jedem neuen Wort immer wieder von vorne anfangen, bis du beim nächsten neuen Wort bist, und dann wieder von vorne anfangen, usw. usw. Nur weil ein Rechner das irre schnell kann, heisst das nicht, dass es keine Zeit oder Leistung kostet.
×
×
  • Create New...