Jump to content
Unity Insider Forum

minuschki

Members
  • Posts

    120
  • Joined

  • Last visited

  • Days Won

    3

minuschki last won the day on December 4 2022

minuschki had the most liked content!

1 Follower

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

minuschki's Achievements

Advanced Member

Advanced Member (3/3)

6

Reputation

  1. Für mich sieht die Deformation wir gewünscht aus. Das Bearbeiten des Zylinders funktioniert sehr flüssig. In der void Update() wird überprüft, ob die Maustaste auf dem Werkzeug gedrückt wurde. Ist dies der Fall, wird die Variabel aktion auf true gesetzt. Solange aktion == true ist, wird dann die void DeformCylinderMesh(Mesh mesh) aufgerufen. Dort wird dann bei Bedarf etwas vom Zylinder gefräst oder auch nicht. void DeformCylinderMesh(Mesh mesh) { Vector3[] vertices = mesh.vertices; int startVertexIndex = Mathf.Max (0, reihe * (numSegments + 1)); int endVertexIndex = Mathf.Min (startVertexIndex + anzahl * (numSegments + 1), 20301); xox = false; for (int i = startVertexIndex; i < endVertexIndex; i++) { float currentRadius = Mathf.Sqrt (vertices [i].x * vertices [i].x + vertices [i].z * vertices [i].z); // Berechne den aktuellen Radius des Punktes if (werkzeug.transform.position.z * -1 - 1.4f < currentRadius) { audioSourceDrehen.volume = 1f; xox = true; patricle.transform.position = new Vector3(werkzeug.transform.position.x, 0, -currentRadius); vertices [i].x *= 0.99f; vertices [i].z *= 0.99f; } } if (!xox) { audioSourceDrehen.volume = 0f; // Ton abschalten, wenn nichts mehr gefräst wurde patricle.transform.position = new Vector3(0, -100, 0); } mesh.vertices = vertices; mesh.RecalculateNormals(); }
  2. Hallo Sascha Es geht um ein "Drechselbank"-Projekt, bei dem der Anwender einen sich drehenden Zylinder bearbeiten kann. Ich benutze keine Plugins. Prozedurale Generierung aber schon. Zu Beginn wird ein Mesh für einen Zylinder mit 100 x 200 Punkten = 20'000 P. erzeugt. Diese Methode wird gleich zu Beginn ein einziges Mal aufgerufen. Das Mesh wird dann in der Folge vom Anwender deformiert. Es gibt auch eine Resetmöglichkeit, welche die Originalform des Zylinders wiederherstellt. Dies geschieht durch Zuweisung des Originalmesh ( meshFilter.mesh = originalMesh; ), welches am Anfang gespeichert wurde. Viel mehr ist da nicht. Ich habe diese Warnmeldung bezüglich knappem Arbeitsspeicher bislang nur ein einziges Mal erhalten. Darum habe ich mich gefragt, ob es vielleicht daran gelegen hat, weil ich bei diesem Projekt ziemlich oft den Playknopf drückten musste und sich dadurch irgendwelcher Müll ansammelt hat, den man bei Programmstart zuerst löschen müsste.
  3. Hallo zusammen Ich bin daran in Unity ein Spiel zu entwickeln und muss dieses daher sehr oft im Editor starten. Nach vielen Starts habe ich eine Warnung erhalten, dass nur noch wenig freier Arbeitsspeicher vorhanden sei und ich wurde aufgefordert, Unity und den Finder neu zu starten. Wo ist das Problem, dass sich der freie Arbeitsspeicher mit der Zeit verringert? Müsste man vor dem Beenden des Projektes irgendetwas löschen (clearen)?
  4. Hallo zusammen Ich habe ein Problem mit dem Linerenderer. Wie auf dem Bild zu sehen ist, möchte ich ein Sprite (Koi) dem Mauscursor folgen lassen. Das funktioniert eigentlich wie gewünscht und der Fisch schwimmt hinter dem Cursor her und biegt sich auch durch die 20 Segmente schön in Form, wenn er eine Kurve machen muss. Das Problem ergibt sich, wenn ich mit der Maus zu enge Kurven mache oder die Maus zügig hinter den Koi ziehe. Dann rollt sich der Fisch praktisch auf oder "verknotet" sich selbst (siehe rechte Seite des Bildes). Das sieht sehr unschön und unnatürlich aus und auch der transparente Schatten funktioniert durch die Überlagerungen der einzelnen Segmente nicht mehr richtig. Wie kann ich erreichen, dass der Fisch eben keine zu engen Kurven macht, obwohl die Mausposition das vielleicht möchte? Lässt sich dies per Code erreichen? Oder wie würdet ihr das angehen? using System.Collections; using System.Collections.Generic; using UnityEngine; public class Fisch : MonoBehaviour { public int length; public float targetDist; public LineRenderer lineRend; public Vector3 [] segmentPoses; Vector3 [] segmentV; void Start () { lineRend.positionCount = length; segmentPoses = new Vector3[length]; segmentV = new Vector3[length]; ResetPos (); } void Update () { Vector2 cursorPos = Camera.main.ScreenToWorldPoint (Input.mousePosition); transform.position = Vector3.Lerp (transform.position, cursorPos, Time.deltaTime); segmentPoses [0] = transform.position; for (int i = 1; i < segmentPoses.Length; i++) { Vector3 targetPos = segmentPoses[i - 1] + (segmentPoses[i] - segmentPoses[i - 1]).normalized * targetDist; segmentPoses[i] = Vector3.SmoothDamp(segmentPoses[i], targetPos, ref segmentV[i], 0.001f); } lineRend.SetPositions (segmentPoses); } void ResetPos() { segmentPoses [0] = transform.position; for (int i = 1; i < length; i++) { segmentPoses [i] = segmentPoses [i - 1] + transform.right * -targetDist; } lineRend.SetPositions (segmentPoses); } }
  5. Danke für deine ausführliche und informative Antwort! Ich verstehe nun die Problematik. Komischerweise sind eine ganze Reihe von solchen Minigolf Tutorials in Youtube zu finden, aber nirgends wird auf das Problem hingewiesen. Ich könnte mir aber folgende Lösungsansätze vorstellen: Variante ohne Rigidbody • Könnte man nicht mit einem abwärtsgerichteten Ray laufend den Untergrund abtasten und die Kugel so im Radiusabstand über den Boden gleiten lassen. So nach dem Prinzip Hooverboard). Aus meiner Sicht wäre es so möglich, über Mulden und Hügel zu rollen und die Kugel könnte auch in ein Loch fallen. Allerdings müssten bei dieser Variante noch Berechnungen gemacht werden, welche die Kugel je nach Steigung abbremst, beschleunigt oder ablenkt. Eventuell wäre es dann sinnvoll, dazu den Contactpoint und den dazugehörenden Normal zu Hilfe zu nehmen. Keine Ahnung, ob das so machbar wäre. Variante mit Rigidbody • Ich habe noch ein Tool (Realtime CSG), welches boolsche Operationen erlaubt. So könnte ich eine grosse Plattform erzeugen und diese dann mit Vertiefungen, Erhebungen oder Löchern und Randbegrenzungen versehen. Allerdings hätte diese Variante nicht die Möglichkeit mit Einzelmodulen eine ganze Bahn runtime zu generieren. Welche Variante würdest du empfehlen?
  6. Hallo zusammen Ich möchte gerne ein Minigolf in 3D kreieren. Dafür nehme ich mehrere im Grundriss quadratische Elemente (z.B. standard Cubes) und ordne diese genau zu einer Bahn an. Nun gebe ich der Kugel mittels rb.AddForce(power * transform.forward, ForceMode.Impulse); einen Antrieb und sie rollt zügig über die Bahn. Obwohl die Elemente haargenau den gleichen Y-Wert haben, hüpft die Kugel nach einer Weile vom Boden weg. Bei grösserer Geschwindigkeit schiesst sie dann plötzlich wie eine Kanonenkugel in die Luft. Wie kann das sein? Der Boden ist doch topfeben. Wenn ich die Kugel anstatt über 20 aneinandergereihte Cuben, über einen einzelnen sehr langen Cube (Balken) rollen lasse, rollt diese perfekt auf dem Balken und hebt keinen Millimeter vom Boden ab. Wenn ich anstatt den Standard Cubes meine richtigen Minigolfelemente benutzte (diese haben dann einen Meshcollider) passiert eigentlich der gleiche Effekt und manchmal ist es sogar so, dass die Kugel beim Übertritt ins nächste Element komplett gestoppt wird, als wäre sie gegen eine durchsichtige Wand geprallt. Wie kann ich also erreichen, dass die Kugel sauber über die Fläche rollt und nicht plötzlich abhebt?
  7. Hallo zusammen Ich habe über Youtube die Adobe-Seite Mixamo entdeckt, wo man kostenlos diverse Charaktere und eine recht grosse Anzahl an Animationen herunterladen und in Unity importieren kann. Das wäre alles wunderbar, wenn die Animationen dann auch fehlerfrei ablaufen würden - tun sie aber nicht! Zum Beispiel ist das linke Bein ungewöhnlich verbogen und macht aussergewöhnliche Bewegungen. Ebenfalls der linke Arm und die Finger der linken Hand verhalten sich komisch und zucken. Soweit ich das beurteilen kann, funktioniert die rechte Körperhälfte korrekt und die Fehler treten nur auf der linken Körperhälfte auf. Anscheinend haben auch andere ähnliche Probleme, wie man z.B. hier sehen kann: Ich habe mehrere Videos durchgesehen, aber keines hat bei mir funktioniert. In der Vorschau von Mixamo sieht alles normal aus. Auch in Blender werden die Animationen "Walking" und "Run" absolut korrekt abgespielt. In Unity ist der Rig des Charakters bereits auf humanoid umgestellt. Grundsätzlich laufen die Animationen, aber eben fehlerhaft. Weiss jemand von euch, warum die Fehler entstehen und wie man genau vorgehen muss, um diese zu beheben? So eine Step-by-step Anleitung wäre natürlich toll!
  8. Hallo zusammen Ich bin auf der Suche nach einer Möglichkeit, wie ich einen Pinsel mit transparentem Hintergrund (linke Bildhälfte: png mit Alpha) auf eine 2D Textur an verschiedene Positionen kopieren kann (rechte Bildhälfte). Also eine einfache Malfunktion. Die Umsetzung mit Ray usw. ist mir klar, so dass ich in der Lage wäre, bei gedrückter Maustaste die gewünschte Pinselposition zu ermitteln. Das Problem ist aber der eigentliche Kopiercode! Dabei muss die 2D Textur tatsächlich neu bemalt werden, also keine Lösung mit spawnen vom Pinsel-Prefab. Leider habe ich keinen Schimmer, wie man das bewerkstelligen könnte! Pseudocode: 1. Solange die Maustaste gedrückt ist 2. Kopiere den Pinsel an die Mausposition auf die 2D Textur 3. Wenn man die Transparenz (also Deckungsgrad des Pinsels) einstellen könnte, wäre natürlich super. Z.B.: Kopiere den Pinsel mit 20% Deckung. Kann mir bitte jemand zwei, drei Codezeilen liefern, wie der Kopiercode aussehen müsste! Besten Dank für eure Hilfe!
  9. Hallo zusammen Unter diesem Link https://news.infernalscoop.com/ahglzz habe ich ein Interview von dem Typen gelesen, der z.B. FlowScape in Unity realisiert hat. Seine Beispielprojekte finde ich visuell ziemlich beeindruckend. Das Erstaunliche ist aber, dass er solche Projekte praktisch ohne Code erstellen kann. Nach seinen Aussagen erreicht er das mit "Visual Scripting". - Ist das nun eine neue Technik, um Programme zu entwickeln? - Ist das bereits in Unity implementiert oder muss man das extra installieren? - Ist das auch für Unity 2017 verfügbar?
  10. Hallo zusammen Das folgende Script ist mit einem Button verknüpft. Wenn dieser Button gedrückt wird, wird ein Screenshot in den Projektordner gesichert. Im Editor funktioniert das einwandfrei (sowohl die Variante mit dem Datum wie auch die Variante mit fixem Filenamen). Problem: Nachdem ich Build und Run gedrückt habe, startet das Programm, aber das mit dem Screenshot funktioniert nicht mehr. Es wird kein Bild mehr gespeichert, zumindest kann ich es nirgends entdecken! Ich vermute, dass es sich um ein Pfadproblem handelt. Ich arbeite mit einem Mac OSX System, weiss aber nicht, wie man den Pfad zum Ordner, in den die Screenshots gespeichert werden können, korrekt setzen kann! Vielleicht fehlt irgend etwas im Stile von "Application.path" oder System.path". Eigentlich möchte ich, dass die Bilder in einen Ordner "Screenshots", welcher sich im Ordner "Dokumente" befindet, hineingespeichert werden! In meinem Fall: Harddisk > Benutzer > Benutzername > Dokumente > Screenshots Wie kann ich das beheben? Danke für eure Hilfe! using System.Collections; using System.Collections.Generic; using UnityEngine; public class screenshot : MonoBehaviour { public void shot () { Debug.Log ("Bild wurde gesichert!"); //var nameScreenshot = "Screenshot " + System.DateTime.Now.ToString("dd-MM-yyyy HH-mm-ss") + ".png"; //ScreenCapture.CaptureScreenshot(nameScreenshot); ScreenCapture.CaptureScreenshot("ScreenshotNEW.png");// , 1); für grössere Auflösung 1,2,3 oder 4 } }
×
×
  • Create New...