Jump to content
Unity Insider Forum
  • 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

    789
  • Joined

  • Last visited

  • Days Won

    64

Zer0Cool last won the day on September 15

Zer0Cool had the most liked content!

Community Reputation

177 Excellent

6 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,287 profile views
  1. Schade, ich denke die Idee war nicht verkehrt. Ok, das mit der Steuerung ist vielleicht problematisch, aber warum drehst du die ganze Szenerie nicht einfach auf den Kopf, wer sagt, daß Wasser immer unten sein muss, taucht er halt nach oben!? Schau dir mal diesen Anime hier an, ich musste dabei an dein Spiel denken xD https://myanimelist.net/anime/34599/Made_in_Abyss Da könnte man ein schönes Spiel draus machen
  2. Pfeil fliegt an Zielpunkt vorbei

    Fehler, hab's geändert..., wie gesagt der Code ist ungetestet. Lerp kommt aus der Klasse "Mathf".
  3. Pfeil fliegt an Zielpunkt vorbei

    Hab Code nochmal geändert ...
  4. Pfeil fliegt an Zielpunkt vorbei

    Naja, aber wenn dein Pfeil eine Parabel beschreiben soll, dann ist es nicht weiter verwunderlich, daß er über das Ziel hinausschießt (der Pfeil fliegt dann über das Ziel hinaus, da er ja noch eine nach oben gerichtete Kraft hat, zusätzlich zu der Kraft, die du jedes Frame übergibst). Das ist ja dann kein Pfeil mehr, sondern eher ein Verhalten wie bei einem Katapult... In Spielen wird bei einem Pfeil oft keine Parabel verwendet, sondern einfach der direkte Weg. Ansonsten müsstest du einen Parabelflug berechnen und die wirkende Kraft ganz exakt jedes Frame übergeben, macht man dies nicht, ist ein exaktes Treffen bei einer Parabel nicht möglich, es ist dann eher ein "Probieren". Ein Parabelflug ist ja normalerweise ein Mix aus Schwerkraft (in Unity: Y) und einer vorwärts gerichteten Kraft (in Unity: transform.forward). Oder man fängt eben an zu "Tricksen" und zwingt das Geschoss nach beispielsweise halber Flugstrecke in die "Umlaufbahn" des Zieles. Dabei würde man die nach oben gerichtete Kraft abhängig von der Entfernung zum Ziel immer weiter verringern... Dabei würde dann eine Parabel entstehen die gegen Ende hin Richtung Ziel stark abfällt (wäre aber nicht weiter schlimm, da in der Realität, ein Geschoss auch relativ schnell absinken kann) Ungetesteter Code (kann Syntaxfehler enthalten): using UnityEngine; public class shotFly : MonoBehaviour { [HideInInspector] public GameObject target; public float upForce; private Vector3 dir; private Rigidbody2D rb; private Vector3 targetPos; private float startDistanceTarget; private void Start() { rb = GetComponent<Rigidbody2D>(); targetPos = target.transform.position; targetPos += new Vector3(0f, 2f, 0f); //Offset for pointing on head rb.AddForce(Vector2.up * upForce); Vector3 targetDir = targetPos - transform.position; startDistanceTarget = targetDir.magnitude; } private void FixedUpdate () { dir = targetPos - transform.position; rb.AddForce(dir); transform.rotation = Quaternion.LookRotation(Vector3.forward, rb.velocity); Vector2 currentVelocity = rb.velocity; float velY = currentVelocity.y; float currentDistanceTarget = dir.magnitude; float distanceTraveled = 1.0f - (currentDistanceTarget / startDistanceTarget); float velYNew = Mathf.Lerp(velY, 0, distanceTraveled); currentVelocity.y = velYNew; rb.velocity = currentVelocity; if (dir.magnitude < 1f) Destroy(gameObject); Debug.DrawLine(transform.localPosition, targetPos, Color.red); } private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Enemy") { collision.GetComponent<enemy>().health -= 10f; Destroy(gameObject); } } }
  5. Pfeil fliegt an Zielpunkt vorbei

    Was passiert, wenn du rb.AddForce(Vector2.up * upForce); entfernst?
  6. Animiertes Garagentor Rolltor

    Ich würde das Tor "einfach" animieren und beim Öffnen und Schließen der Garage diese Animation abspielen. Dafür kannst du in Unity einen Animationsclip erstellen und beliebige Attribute deines Garagentores animieren. Es lassen sich Position, Rotation, Scale deiner Gameobjekte und sogar Komponenten (z.b. Meshrenderer / Farbe / Material) animieren. https://unity3d.com/de/learn/tutorials/s/animation Für ein Garagentor könntest du z.b. recht einfach den Y-Scale (Höhe des Tores) in Verbindung mit der Y-Position (Rollposition des Tores) einer Plane oder eines Quads animieren.
  7. Toggle AN und AUS

    Negiere doch einfach beim Spielstart und es passt wieder?!: if (statistik == 1) { toggleStatistik.isOn = false; } else { toggleStatistik.isOn = true; }
  8. Fog Effects Optionen mit PostProcessing

    Der Postprocessing Fog Effect hängt als Skript an der Kamera und hier "waren" auch die meisten Settings dieses Effektes zu finden (zumindest war das vor Unity 2017 so). Allerdings hat die Einstellung des Standardnebels (unter Lightning) auch Auswirkungen auf diesen Posteffekt, zumindest ist mir das so im Gedächtnis. Ich glaube es war vor allem die Farbe des Nebels. Kann aber sein, daß sie das noch einmal geändert haben in Unity 2017 und sie alle Settings in den Scenetab des Lightning Fensters verschoben haben. Der ganze Effekt arbeitet nur im Deferred Rendering Path und dieser ist in Unity 2017 von Haus aus deaktiviert!
  9. Texte nacheinander ausblenden

    Ich würde einen UI-Text nehmen und diesen in ein Canvas im "World Space" packen. Daraus würde ich ein Prefab machen. An das Prefab kommt auch noch ein Skript, welches unten beschriebene Aktionen ausführt. Soll nun im Game eine Info erzeugt werden, wird eine Instanz erstellt (und ggf. die Order im Layer des Canvas wird gesetzt) . Der Canvas (bzw. das GO) der Instanz wird dann über eine Coroutine ausgehend von seiner Ausgangsposition immer weiter nach oben geschoben (gescrolled). Das GO des Canvas sollte dabei immer in Richtung Camera gedreht werden. Zusätzlich wird der Canvas ab einem bestimmten Zeitpunkt ausgefaded (siehe "CrossFadeAlpha" oder "CanvasGroup.alpha"). Für weitere Texte wiederholt sich einfach dieses Procedere, damit ist der älteste Text immer oben und neuere Texte werden immer unten gespawnt (an der Startposition). Wenn du nur maximal 4 Texte haben möchtest, dann müsstest du zusätzlich noch alle bereits gespawnten Instanzen in eine sortierte! Liste packen und alle Elemente über 4 entfernen (d.h. es wird dann den entsprechenden Instanzen der Befehl gegeben sich zu zerstören).
  10. Blood (shader) system

    Hier mal ein Video eines Versuches der Visualisierung von Metaballs (Blobs). Leider musste ich feststellen, daß die Performance der Visualisierung von Metaballs fast exponentiell mit der Menge an Metaballs abnimmt und selbst mit einigen Optimierungstricks (GPU Calculations, Shader im Screenspace ohne Meshdaten) die Performance nicht wesentlich besser wird. Für einen entsprechenden Blutpartikeleffekt - der mir vorschwebt - würde ich vermutlich mindestens 50 Blobs benötigen oder mehr. Auch eine punktuelle Vorberechnung des "Scalarfeldes" innerhalb eines 3D-Grids beansprucht bereits so viel CPU-Zeit, daß es für eine Verwendung in einem Spiel nicht mehr geeignet ist. Wenn man nur 10000 Punkte (10*10 Meter * 100 Auflösung pro Gridcube) innerhalb eines 3D-Raumes "vorberechnet", um ca. 50 Blobs darzustellen (für eine spätere Trilinear-Interpolation innerhalb des Shaders) droppt die FPS bereits auf unter 20 und der Shader der dann das Scalarfeld noch darstellen muss, ist noch gar nicht mit einberechnet (oder eben bei einer anderen Methodik die Erstellung eines Meshes). Ich habe auch andere im Netz bereits vorhandene Lösungen gesichtet und diese stellen jeweils höchstens 5-10 Blobs dar und das dann auch nur in einem begrenzten 3D-Raum zwischen 1x1 bis 3x3 Meter. Erhöht man hier die Anzahl der Blobs oder erweitert den 3D-Raum entspechend, sinkt die Performance dieser Methoden noch unter der hier gezeigten Variante (25-30 Blobs mit ca. 50-60 FPS). Video: https://streamable.com/h6h9i
  11. PlayerPrefs.DeleteAll

    Wenn du es eh beim Login wieder löschst, dann würde ich diese Daten überhaupt nicht in den PlayerPrefs speichern (dies schützt auch davor, daß Spieler nachträglich die Registry manipulieren), sondern z.b. in einer statischen Klasse. Die hält ihre Daten auch szenenübergreifend solange das Spiel läuft.
  12. Licht ght einfch aus???

    Graphics Settings -> Tier Settings -> Tier 3 (Desktop) -> Use Defaults (off) -> Rendering Path -> "Deferred" oder direkt bei der Kamera in der Szene. Wie arbeiten Quality Settings und Tier Settings zusammen? https://forum.unity.com/threads/tiers-in-graphicsettings.485408/
  13. Roll a Ball game kann nicht coden :3

    Dein "PlayerController" und deine beide "UI-Texte" sollten jeweils szenenübergreifend erhalten bleiben. Ich kann hier nur über deinen Szenenaufbau spekulieren, wenn nun beispielsweise dein "PlayerController" in jeder Szene neu geladen wird und deine UI-Texte nicht, dann gehen die Referenzen auf deine UI-Texte verloren. Ich vermute auch mal du bekommst Fehlermeldungen in der Unity-Console oder? Vermutlich hast du einfach nur in deiner 2. Szene keine Verknüpfung mehr zwischen deinem Playercontroller und deiner UI gesetzt ("countText" & "winText2). Du könntest nun in jede Szene deinen Playercontroller und deine UI packen und die Verknüpfung erneut im Inspektor setzen oder... ... du lädst in einer eigenen Szene nur deinen Playercontroller und deine UI (alle UI-Objekte hängen unter einem Gameobjekt). In dieser Core-Szene stellst du dann wie gewohnt die Verknüpfung zwischen deinem Playercontroller und der UI her ("countText" & "winText2 im Inspector bei deinem Playercontroller setzen). Nach dem Laden markierst du sowohl das GO des Playercontrollers als auch das GO unter dem deine UI hängt mit folgender Methode: https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html Du kannst auch einfach eine Klasse aus dem obigen Codebeispiel machen (einfach Klasse sinnvoll benennen) und dieses Skript an die beiden GO in deiner Core-Szene hängen. Deine "Game-Szenes" (Levels) lädst du nun ganz normal zusätzlich, allerdings enthalten diese Levels keinen Playercontroller und keine UI mehr.
  14. Timer Problem

    Das wäre nicht so das Problem. da Time.time ja bei jedem Spielstart zurückgesetzt wird. Time.time ist also keine Echtzeit, sondern enthält die Sekunden seit Spielstart. Du müsstest aber "timer" (der ja die aktuellen Sekunden enthält, die vom Spieler verbraucht wurden) speichern und den dann wieder nach dem Laden auf "timer" draufaddieren (hehe die Berechnung wird immer länger). timer = loadedTimer + Time.time - resetTimeStamp - pauseTimeSum;
  15. Rauch unter der Decke verteilen

    Ich vermute man kann zwar die Partikel abbremsen, auslöschen und zurückspringen lassen, aber ihnen einen seitlichen Drall geben, da sehe ich keine einfache Möglichkeit. Dann kann man noch einzelne Partikelkollisionen erkennen, aber ich sehe keine Möglichkeit den konkreten Partikel - der kollidiert ist - herauszufischen (hierrüber könnte man ja dann den einzelnen Partikel im Partikelsystem manipulieren.). Ich würde https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnParticleCollision.html verwenden und dann bei einer Kollision das Partikelsystem durchiterieren. und dann über GetParticles() und SetParticles() die Partikel in Reichweite des Colliders entsprechend modifizieren. Die Idee mit den 2 Systemen ist nicht schlecht. Du kannst auch ein Subpartikelsystem (sub emitter module) erstellen. Dieses spawnt dann beispielsweise einen Partikel (nach links oder nach rechts unter die Decke) bei einer Kollision eines Partikel des 1. Systems. Der Partikel des 1. Systems wird dabei vernichtet.
×