• Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

Torigas

Members
  • Content count

    183
  • Joined

  • Last visited

  • Days Won

    1

Torigas last won the day on June 9

Torigas had the most liked content!

Community Reputation

40 Excellent

About Torigas

  • Rank
    Advanced Member
  1. Du könntest alles in ein HashSet packen: https://www.dotnetperls.com/hashset Ein set entspricht einer Mathematischen Menge. Da sind Dinge also nur einmal drin. Die add Methode gibt dir ein true zurück, wenn das Element hinzugefügt werden konnte, es also neu ist. So könntest du z.B. folgendes machen: HashSet<GameObject> allSeenObjects= new HashSet<GameObject>(); GameObject walls ; Renderer[] renders; void Start() { walls = GameObject.FindGameObjectWithTag ("Wall"); renders = walls.GetComponentsInChildren<Renderer> ();//verschoben, das du das nur einmal machen musst. } void Update(){ for (int i = 1; i < renders.Length; i++) {// wieso zählst du von 1? if (renders[i].isVisible) { // Hier hast du das falsche Object gecheckt. if(allSeenObjects.add(renders[i].gameObject))// nur true, wenn das object neu ist. Debug.Log (renders[i] + " is detected!"); } else { Debug.Log ("Nothing's detecetd!"); } } } Mich wundert es gerade, dass ich keine Methode finde die einem alle Objekte liefert, welche eine Kamera gerade "sieht". Das sollte es doch geben.
  2. Macht euch doch bitte nicht lustig. Passiert mal ^^
  3. Wieso sollte man sowas in eine while(true) packen? Der springt sofort raus aus dem loop durch das break; Komischen Code hast du gefunden.
  4. Mark hat da Recht. Wenn du mal hier schaust siehst du auch eine andere Möglichkeit dein Array zu bekommen und in einer Zeile gleich zu konvertieren. Resources.LoadAll wallTex = Resources.LoadAll("Walls", typeof(Texture2D)).Cast<Texture2D>().ToArray(); Aber bitte vergiss nicht zukünftig konkrete Fehlermeldungen zu posten. "Funktioniert nicht" ist schwer zu debuggen.
  5. Ihr habt es zwar wohl schon gelöst aber hier nochmal meinen Code: public void Aim (Vector3 worldpos)//worldpos ist die Zielposition in Weltkoordinaten. { //left or right ? Ich hatte also links und rechts auf meinem Schiff Geschütztürme. Abhängig davon ob das Ziel links oder rechts war wurden nur die jeweiligen Türme bewegt. if (transform.InverseTransformPoint (worldpos).x < 0) { // Turret consists of gun on base on slot. // turn base around it's up axis // turn gun around it's X axis rotateTurret (leftGuns, worldpos); } else { // Turret consists of gun on base on slot. // turn base around it's up axis // turn gun around it's X axis rotateTurret (rightGuns, worldpos); } } void rotateTurret (List<StarshipTurret> guns, Vector3 worldpos) { foreach (StarshipTurret t in guns) { /** **/ Vector3 baseTargetRot = t.turretBase.InverseTransformPoint (worldpos); baseTargetRot.y = 0;// Die Y Achse auf 0 damit nur die Drehung auf der X-Z Ebene genommwen wird Quaternion targetRot = Quaternion.FromToRotation (Vector3.forward, (baseTargetRot).normalized); // Siehe Vector3.forward. Ich nutze lokale Koordinaten für meinen Turm. turretBase ist die "Wanne" t.turretBase.rotation *= targetRot; Vector3 baseGunRot = t.turretGun.InverseTransformPoint (worldpos); baseGunRot.x = 0;//Nochmal das gleiche - dieses mal die Drehung auf der Y-Z Ebene. targetRot = Quaternion.FromToRotation (Vector3.forward, (baseGunRot).normalized); t.turretGun.rotation *= targetRot; } }
  6. Kannst du mal Screenshots / Bildchen machen, die veranschaulichen was genau du machen möchtest und was aktuell passiert? Ich hab mal Türme an Raumschiffen gemacht, in einem 3D Spiel. Diese haben sich dann zum Ziel gedreht. Die Geschütze ebenfalls. Dafür hab ich für jeden Teil des Turms (Drehteller und Kanone) die Koordinate des Ziels in lokale Koordinaten umgerechnet. Dann wusste ich, um wieviel der Turm in eine Achse drehen sollte. Der Teller hat sich um die Y Achse gedreht und das Geschütz um die X Achse. Dann konnte ich relativ gut mit Eulerangles arbeiten.
  7. Gut ^^ Ich hätte genauer lesen sollen. Mich hat der 5.4 Shortcut verwirrt mit den 5.6 Logmeldungen. Schade. Das interessiert mich wirklich, warum das nicht geht. Grafiktreiber wurden ja auch schon diskutiert. Vor allem, wenn sein Mauszeiger sich ändert. Das Problem gibts z.B. in schwarz bei Black Desert Online - Schwarzer Launcher, man kann sich aber einloggen wenn man weiß wo man klicken muss. @malzbie Hatte ich so auf meinem Thinkpad Edge =)
  8. Naja du kannst die UV Koordinaten des Meshes setzen und anpassen an dein Bild. Nicht schön aber möglich.
  9. Ich bin bei der Podiumsdiskussion dabei, falls man sich kennenlernen möchte.
  10. Neu anlegen hilft teilweise. Falls er vorher eine andere Version drauf hatte die nicht ordentlich entfernt wurde.
  11. Da fehlen alle Packete laut dem Log. C:\Users\DEINNAME\AppData\Roaming\Unity\Packages\node_modules dort müssen mehrere Ordner sein. C:\Program Files\Unity\Editor\Data\Resources\Packages Die findest du hier. Mit 7Zip kannst du diese Archive öffnen und bis in den "package" Ordner navigieren. Den Inhalt dann in das jeweilige Verzeichnis unter folgendem Ordner kopieren: C:\Users\DEINNAME\AppData\Roaming\Unity\Packages\node_modules dort müssen mehrere Ordner sein. Bei meiner Installation sind da folgende Ordner: unityeditor-cloud-hub unityeditor-collab-history unityeditor-collab-toolbar unity-editor-home Dann sollte das gehen. Wenn du die Ordner schon in Roaming\Unity hast, dann lösche die und erstelle die neu mit den Inhalt wie oben beschrieben.
  12. Deswegen kann man ja sagen, dass das eine Skript welches denn unbedingt nach anderen Objekten suchen muss, nach allen anderen ausgeführt wird. Siehe mein Post oben. Damit kann man die Initialisierung immernoch im Awake machen statt im Start, oder nicht?
  13. Siehe hier https://docs.unity3d.com/Manual/ExecutionOrder.html Und falls Ihr mal was deterministisch machen wollt bzw. die Reihenfolge von einigen Scriptausführungen ändern wollt: https://docs.unity3d.com/Manual/class-ScriptExecution.html
  14. Das mit dem Level kannst mit ScriptableObjects machen. Mir ist kein einfacher Weg bekannt alles zu speichern. Bei einer reinen Datenhaltungsklasse könnte man eine naive Serialisierung versuchen: https://stackoverflow.com/questions/36852213/how-to-serialize-and-save-a-gameobject-in-unity https://unity3d.com/learn/tutorials/topics/scripting/persistence-saving-and-loading-data
  15. Klingt arg nach Drag and Drop: https://github.com/Xander93/unity3d-draganddrop https://forum.unity3d.com/threads/ui-drag-and-drop-system.437499/ https://www.assetstore.unity3d.com/en/#!/content/25468