Jump to content
Unity Insider Forum

Sascha

Administrators
  • Content Count

    11,977
  • Joined

  • Last visited

  • Days Won

    608

Sascha last won the day on August 7

Sascha had the most liked content!

Community Reputation

2,428 Excellent

7 Followers

About Sascha

  • Rank
    Community Manager
  • Birthday 08/13/1990

Contact Methods

  • Website URL
    http://13pixels.de

Profile Information

  • Gender
    Male
  • Location
    Hamburg
  • Interests
    Programmierung

Recent Profile Visitors

48,663 profile views
  1. Ich sehe da nirgendwo etwas, was das beschriebene Verhalten erklären könnte. Kopiere dir am besten deine Szene und fang an, in der Kopie Dinge zu löschen, bis das Problem weg ist, um die Sache einzugrenzen.
  2. Also, in dem Code den du gepostet hast ist weder etwas mit Maus drin noch mit Zeitverzerrung. Hier liegt das Problem also nicht. Du braucht schon irgendetwas mit Mouse Over oder z.B. mit Time.timeScale. Tippe auf letzteres, evtl. durch von irgendwo kopierten Code?
  3. Wär halt irgendwo sinnvoll, wenn du mal verlinkst, was du da gefunden hast. Auf allen Seiten, die ich jetzt extra rausgesucht habe; von denen ich angenommen habe, du könntest sie meinen, steht das im Beispielcode, wie man das macht. https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter.html https://docs.unity3d.com/ScriptReference/Collision-contacts.html
  4. Ich bin ziemlich verwirrt - du löschst die Objekte schon direkt beim Erstellen. Zwar mit Verzögerung, aber trotzdem direkt dann. Du löschst die Dinger also alle zweimal. Da sollte schon einiges an Fehlermeldungen in der Konsole auftauchen. Die drei durchnummerierten Listenvariablen lassen wir gerade mal außen vor. Dass deine Methoden alle Coroutinen sind, die keine yield-Statements außer direkt vorm Ende haben, auch. Was mir aber noch auffällt ist, dass du dreimal etwas in eine Liste tust und danach nicht mehr. Ab i == 3 wird das instanziierte Objekt in keine Liste mehr gepackt. Kann sein, dass i nur bis 2 geht, aber ist natürlich eine mögliche Fehlerquelle.
  5. Gibt verschiedene Arten, das zu machen, aber eine Variante wäre natürlich, sich den Normalenvektor der Kollision anzuschauen.
  6. Pack die Spinnen alle auf einen Layer und Stelle Kollisionen innerhalb dieses Layers in der Layer Collision Matrix aus.
  7. Kann halt auch sein, dass die Schleife beim Instanziieren kaputt ist und die Objekte falsch erzeugt oder falsch in die Liste einträgt. Aber ja, das war meine Kernaussage: Wenn du eine Liste hast und da genau einmal alle GameObjects drin sind, die du löschen willst, dann funktioniert das auch, und dein Code dafür hat dabei keine sichtbaren Fehler.
  8. Fragst du mich gerade, wo in deinem Code, den ich nicht kenne, sich ein Fehler befindet?
  9. Läuft auf dasselbe hinaus. Abgesehen von der inkorrekten Terminologie ist da kein Fehler zu erkennen, der sitzt woanders.
  10. Wenn du Kräfte haben willst, gilt weitestgehend™: Ganz oder gar nicht. Wenn du einen Rigidbody benutzen willst, dann solltest du diesen auch vollständig für die Bewegung nutzen. Aktuell teleportierst du ja deine Spinne in jedem Frame ein kleines Stück. Du setzt dabei ganz manuell in jedem Frame die Zielposition. Wenn du jetzt Gravitation haben willst, hätte das Einfluss darauf, wo die Zielposition liegt. Sonst würdest du ein Stück nach unten fallen, aber dann sofort wieder auf die Ursprungshöhe zurückkommen, weil deine Teleport-Zielposition die neue Höhe nicht automatisch mit einbezieht. Wenn du aber einfach auf das, was der Rigidbody macht, deine Patrouille obendraufrechnest, dann kann das zu unerwünschten Ergebnissen kommen, weil der Rigidbody sich schon ohne dein Script horizontal bewegen kann. Du kannst also entweder komplett auf Rigidbody-Bewegung umsteigen - Ich würde dann dazu raten, in FixedUpdate den velocity-Vektor zu nehmen, die X-Komponente auf "links" oder "rechts" zu setzen, die Y-Komponente sein zu lassen und das dann wieder in den RB zu füttern - oder halt komplett beim eigenen Script bleiben. Dann müsstest du den "bin ich auf dem Boden"-Check und die Gravitation selber bauen.
  11. Kann ich gerade nicht sagen, aber da du die Bewegung nicht über den Rigidbody laufen lässt, sollte dieser entsprechend eingestellt werden. Ich nehme an, du willst den Rigidbody für Kollisionen verwenden?
  12. Ich mag ja ganz gerne, alles, was im Screen Space ist, auf einen Canvas zu tun und dann dort mit Unterobjekten zu arbeiten. Dann hat der Canvas zwei Kind-Objekte; in einem sind alle Rätsel drin und im anderen die anderen Dinge. Vorteil davon ist, dass du Änderungen am Canvas Scaler und anderen Canvas-Eigenschaften nur einmal machen musst. Ansonsten hast du in der Canvas-Komponente die Eigenschaft "Sort Order" - Je höher der Wert, desto mehr im Vordergrund ist der Canvas.
  13. Das ist aber auch mächtig krummer Code, das hier wäre äquivalent: var _ability = UnityEngine.Object.Instantiate(Resources.Load<Ability>(_abilityName)); Aber ansonsten so wie beschrieben: Ein Ability-Objekt wird aus den Resources geladen und dann geklont.
  14. Die Anleitung zum Profiler, die ich verlinkt habe (nicht die folgenden Seiten vergessen!) ist recht umfangreich. Und Videos gibt es zu dem Thema auch. Kannst ja auch nicht sagen "Ich baue jetzt nen Tisch, kenne mich aber nicht mit dem Hammer aus, muss irgendwie anders gehen." Musst du dir jetzt halt aneignen. Oben im Graphen hast du einen Überblick über die Framerate. Je höher der Graph an einer Stelle ist, desto länger hat der Frame gebraucht, also weniger FPS. Mach mal Pause wenn du gerade einen FPS-Drop hast und klicke dann im Profiler auf den Spike. Dadurch markierst du den Frame und in der Liste in der unteren Hälfte erscheint eine Auflistung der Dinge, die Unity gemacht hat und wie lange sie jeweils gedauert haben, mit absteigender Dauer. Das erste Element der Liste ist also das, was im Frame am längsten gedauert hat. Es gibt Dinge, die müssen halt sein, die dürfen dann auch soundso lange dauern, aber andere Sachen sollten das nicht. Du kannst auch schauen, wie ein kurzer Frame aussieht und dann vergleichen, was in einem langen Frame dazu gekommen ist. Wird etwas zusätzliches gemacht oder dauern die Sachen nur dieses Mal länger? Denke auch daran, dass du die Punkte auf der Liste aufklappen kannst, um zu schauen, welcher Teil eines Elements so viel Zeit kostet. So kannst du das Problem weiter eingrenzen.
×
×
  • Create New...