• 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

Zer0Cool

Members
  • Content count

    657
  • Joined

  • Last visited

  • Days Won

    43

Zer0Cool last won the day on July 22

Zer0Cool had the most liked content!

Community Reputation

138 Excellent

5 Followers

About Zer0Cool

  • Rank
    Advanced Member
  • Birthday 01/04/1974

Contact Methods

  • Website URL
    http://https://www.facebook.com/huginmuninstudios
  • Skype
    zer0f0rce

Profile Information

  • Gender
    Male
  • Location
    Germany

Recent Profile Visitors

2,117 profile views
  1. Das sollte eigentlich mit dem Canvas Scaler "steuerbar" sein ("UI Scale Mode" = "Scale With Screen Size" / "Match" = 0.5). Richtig eingestellt, passt sich der Canvas und die Canvaselemente an die Größe des jeweiligen Displays an und damit bleibt die GUI (d.h. auch der Snakeknopf) in Relation gleich groß. https://docs.unity3d.com/Manual/script-CanvasScaler.html Für das Image solltest du ggf. noch "Preserve Aspect" aktivieren. Nähere Infos: https://docs.unity3d.com/Manual/HOWTO-UIMultiResolution.html
  2. Wozu machst du die Images erst "public", wenn du sie dann doch erst wieder über eine Methode setzt? Für eine Schleife müsstest du die Images in ein Array oder eine Collection (List) packen. Der Methode "SetPic" könntest du dann das Array übergeben und innerhalb deiner Methode über foreach über jedes Arrayelement iterieren. Wenn du deinen Code nicht auf ein Array ändern willst und nur deinen Methodenkopf kürzen willst, dann ginge das so: (das hat allerdings auch den Nachteil, daß man der Methode SetPic nicht mehr entnehmen kann, welches Sprite für welches Image ist) public void SetPic(params Sprite[] pics) { ProfilePic.sprite = pics[0]; ProfilePic.color = Color.white; Background.sprite = pics[1]; Background.color = Color.white; LivebarPic.sprite = pics[2]; LivebarPic.color = Color.white; HealthbarPic.sprite = pics[3]; HealthbarPic.color = Color.white; StaminabgPic.sprite = pics[4]; StaminabgPic.color = Color.white; StaminabarPic.sprite = pics[5]; StaminabarPic.color = Color.white; wishtable.sprite = pics[6]; wishtable.color = Color.white; HintergrundImage.sprite = pics[7]; HintergrundImage.color = Color.white; }
  3. Ja, die Tutorials sehen interessant aus. Ich vermute er meint den Beitrag über die Meshverformung bei einer Kugel.
  4. Bestimme die Geschwindigkeit des Autos anhand der Velocity (magnitude) des Rigidbodies des Boxcolliders. Sollte die Velocity (und damit auch die Geschwindigkeit) einen bestimmten Wert überschreiten, dann setzt du die Velocity des RBs neu mit einer vorher definierten maximalen Velocity. Die Messungen und das Neusetzen der Velocity werden in der FixedUpdate-Methode vorgenommen. Zum Hintergrund, die Velocity des RB des Boxcolliders wird auf den Drehimplus der Wheelcollider übernommen. Hier noch ein kleiner Codeschnipsel aus einem anderen Projekt: public float maxSpeed = 20.0f; public void FixedUpdate() { ... if (bikeRigidbody.velocity.magnitude > maxSpeed) { Vector3 velocity = bikeRigidbody.velocity; velocity.Normalize(); Vector3 maxVelocity = velocity * maxSpeed; bikeRigidbody.velocity = maxVelocity; } ... } Man kann das Ganze auch noch nur auf die Vorwärtsbeschleunigung (transform.forward) beschränken, aber ich denke es genügt auch so und damit darf das Auto auch wenn es beispielsweise zur Seite ausbricht nicht schneller werden.
  5. Wenn ich mich nicht vertan habe, dann müsste es so gehen: float offset = 0.6f; Vector3 position = transform.position - transform.forward * offset; GameObject.Instantiate(Prefab, position, Quaternion.Euler(new Vector3(0, 0, 0)));
  6. Wenn ein Prozeß eine Datei öffnet, dann erlangt er ein "Handle" auf diese Datei. Dieses Handle ist zumeist "exklusiv" und damit kann kein anderer Prozeß mehr in diese Datei schreiben. Wenn du mit "File.Create" arbeitest, bekommst du über diese Methode bereits ein FileStream zurück. Dieses FileStream besitzt dann dieses Handle. Wenn du AppendText aufrufst, dann versucht das System sich ein weiteres Handle zu holen und dann kommt es zu diesem Konflikt. Also über File.Create sich den FileStream geben lassen und dann damit den Text schreiben, oder nach Create den Stream wieder schließen und dir mit AppendText einen neuen Stream holen.
  7. Kann gut am Schwerpunkt liegen, bei Fahrzeugen war es jedenfalls so. So kannst du ihn setzen, am besten am RB des Hauptbodys des Tieres (also nicht die Beine). Den Schwerpunkt am besten auf den Boden ziehen, d.h. zentriert unter dem Body des Tieres: https://docs.unity3d.com/ScriptReference/Rigidbody-centerOfMass.html Ich hab auch gelesen, man kann zusätzlich noch eine Kraft wirken lassen, die den Körper von oben Richtung Boden presst, habe ich aber noch nie gebraucht.
  8. Ich denke dieses Asset sollte den Job auch tun, aber ich kenne es nicht. Zumindest behauptet es eine "loopable world" erstellen zu können: https://www.assetstore.unity3d.com/en/#!/content/36486 Hier ist noch eine Methode mit 9 (seamless tiling) Quadranten beschrieben (ich denke diese Methode ist einfacher als die Methode mit dem Cube die ich oben beschrieben habe): http://answers.unity3d.com/questions/626777/endless-terrain-loop.html
  9. Du kannst dir die Methode auch so vorstellen: 1) Man nimmt eine Kugel und legt dafür eine bestimmte Größe fest (in Relation zu der Quadrantengröße) 2) Du legst eine bestimmte Größe für deine Quadranten fest 3) Du legst die Quadranten auf die Kugeloberfläche (Projektion) Anhand der Position des Spielers (auf dem Client) wird nun die individuelle Sicht des Spielers auf der Kugel berechnet und die passenden Quadranten um den Spieler herum positioniert.. (ich habe leider keinen Quellcode dafür, aber es ist mathematisch lösbar) https://de.wikipedia.org/wiki/UV-Koordinaten#/media/File:UVMapping.png Aber ich vermute einmal, die Welt muss nicht eine perfekte Kugel sein, es sollte auch ein Würfel reichen und damit wird das ganze wieder viel einfacher ... https://de.wikipedia.org/wiki/UV-Koordinaten#/media/File:Cube_Representative_UV_Unwrapping.png Auch wenn du einen Würfel umrundest kommst du wieder bei deiner Ausgangsposition an und der Spieler merkt nicht wirklich ob seine Welt eine Sphere oder ein Würfel ist .
  10. Wie gesagt, wenn du keine Unity-Terrains verwenden willst, dann kannst du auch den anderen den Weg gehen. Ansonsten wäre der Weg - wie ich ihn dir beschrieben habe - und ich bin mir zu 90% sicher das dies ein gangbarer Weg ist. Solltest du eine Kugel verwenden, dann könntest du auf die Kugeloberfläche eine Mesh-Deformation anwenden. Diese Deformation wird bspw. über eine Highmap erzeugt (gibt da wieder Skripte für im Netz). Dann müsst du nur noch Vegetation auf diese Oberfläche bekommen, da gibt es auch wieder Assets für. Vor allem Gras benötigt ein spezielles Asset.
  11. Wie gesagt, richtig programmiert und du kommst wieder dort an wo du gestartet bist... Und das es bei einem Multiplayerspiel nicht funktioniert ist ein Trugschluss. Umsortiert wird nur auf dem Client und nicht auf dem Server. Aber natürlich ist das Ganze nicht trival. Somit hat jeder Client seine eigene "umsortierte" Welt.
  12. Eine echte "Kugelwelt" würde ich nur verwenden, wenn deine Welt sehr klein sein soll und wenn man wirklich das "Gefühl" haben soll auf einer Kugel zu laufen. Der große Nachteil dann ist aber, daß du kein Unity-Terrain mehr verwenden kannst. Es gibt dafür allerdings auch spezielle Shader, die eine "Kugelwelt" auch auf einer flachen Welt simulieren.
  13. Die NPCs werden mit den Terrainsegmenten umgesetzt und da die NPCs ab einer gewissen Entfernung nicht mehr angezeigt werden, fällt dem Spieler das Umsetzen der NPCs auch nicht auf. Die Segmente müsse natürlich groß genug sein, damit dieses "Umschichten" dem Spieler nicht auffällt.
  14. Wenn du die obige Methode verwendest, dann kommt der Spieler auch wieder an seiner Ursprungsposition an. Da gibt es keinen Unterschied zu der Bewegung auf einer Kugel. Der einzige Unterschied ist, daß du keine Horizontkrümmung hast und keinen Horizont in dem Sinne, daß beispielsweise Gebäude dahinter verschwinden.
  15. Ich kenne dieses Verfahren vom "Parallax Scrolling" 2D. Der Spieler läuft hier ja nur von links nach rechts. Man nimmt dabei eine bestimmte Anzahl von Hintergrundplanes (Texturen) (beispielsweise 3) um die 2D-Landschaft zu bilden. Wenn der Spieler nun die Position zwischen der 2. und 3. Plane erreicht, dann wird die 1. Plane wieder vor die 3. gesetzt. Dies macht man nun immer wieder und somit kann der Spieler nie den rechten Rand erreichen: p 123 231 312 123 p * p = Position Spieler * 1 = einzelne Texturplane * 123 = 3 Texturplanes hintereinander (2D Landschaft) Das Ganze kann man nun auch in 4 Richtungen machen und dabei nicht Planes sondern ganze 3D-Terrain(segmente) umsortieren (neu setzen).