Jump to content
Unity Insider Forum

minuschki

Members
  • Posts

    103
  • Joined

  • Last visited

  • Days Won

    2

minuschki last won the day on September 15 2021

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)

3

Reputation

  1. Hallo zusammen Ich habe immer wieder das Problem, dass Texturen auf importieren Objekten nicht wie erwartet angezeigt werden. Im Bildbeispiel sieht man einen Unity Cube, der die Texture (512 x 512) korrekt darstellt. Das gleiche Material auf das importierte Starship-Modell angewendet, zeigt aber nur eine graue Fläche und die Details sind verschwunden. Wenn ich im Material das Tiling höher einstelle, werden die Strukturen auf dem Cube wie erwartet kleiner, aber beim Ship-Modell flackert es nur ein bisschen und die Oberfläche zeigt sich in einem anderen Grauton. Der Effekt tritt bei mir immer dann auf, wenn ich fbx-Modelle in Blender exportiere (vielleicht liegt ja dort das Problem) und dann in Unity importiere. Wie muss ich vorgehen, damit das Ship-Modell ebenfalls die gewünschten Texturstrukturen wie beim Würfel anzeigt? Besten Dank für eure Hilfe
  2. Hallo malzbie Das ist ja wieder mal ein Ratschlag vom Profi und er leuchtet ein! Ich werde deinen Vorschlag mit dem Animationstool bestimmt ausprobieren. Besten Dank für deine ausführliche Antwort und Mühe!
  3. Ich habe es jetzt nach langem Ausprobieren selber herausgefunden! Ich denke, so ist es richtig. Falls das nicht stimmt, könnt ihr mich gerne korrigieren! p1 = new List<Quaternion> {new Quaternion(0.0f, 1.0f, 0.0f, 0.0f), new Quaternion(0.0f, 1.0f, 0.0f, 0.0f), new Quaternion(0.0f, 1.0f, 0.0f, 0.0f)};
  4. Hallo zusammen Ich habe in meinem Projekt eine menschliche Figur mit Bones. Nun möchte ich verschiedene Körperhaltungen jeweils in einer List<Quaternion> direct im Code vordefinieren und diese dann gezielt auslesen, wenn die Figur in eine andere Körperhaltung gebracht werden soll. Um an die Quaternion-Rotationsdaten zu kommen, bewege ich die Figur über den Inspector in die gewünschte Körperposition. Dann löse ich einen Debug.Log aus, der mir z.B. (0.0, 1.0, 0.2, 0.0), (0.1, 1.0, 0.0, 0.0), (0.0, 1.0, 0.4, 0.0) als transform.rotation für die ersten drei Gelenke ausgibt. Nun das Problem: Wenn ich nun die Debug.Log-Ausgabe kopiere und manuell in den Code einfüge, erhalte ich Fehlermeldungen und bereits bei der ersten 0.0 wird ein Fehler angezeigt: Assets/DrehenLerp.cs(90,33): error CS1026: Unexpected symbol `,', expecting `)' Assets/DrehenLerp.cs(90,95): error CS1519: Unexpected symbol `;' in class, struct, or interface member declaration Assets/DrehenLerp.cs(92,0): error CS1026: Unexpected symbol `}', expecting `)' Was stimmt denn da in der Zeile "p1 = new List<Quaternion> {(0.0 ....)};" nicht oder wie muss das korrekt dort stehen? Für eine Integerliste wärs ja: t = new List<Int> {1, 6, 14}; Für eine Stringliste wärs ja: s = new List<String> {"Haus", "Baum", "Katze"}; Eine Quaternionliste müsste wie aussehen: q = new List<Quaternion> { ? }; Danke für eure Hilfe! Debug.Log (startQuad[0] + ", " + startQuad[1] + ", " + startQuad[2]); // die gesammelten Daten in eine Zeile ausgeben // Das ist die Debug.Lob Ausgabe, die ich kopiere: (0.0, 1.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0) p1 = new List<Quaternion> {(0.0, 1.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0)}; // bereits bei der ersten 0.0 gibts ein Problem
  5. Danke für die Antwort! Also lasse ich das mit den Joints und das mit der inversen Kinematic wird mir wahrscheinlich auch zu kompliziert. Im angehängten Bild habe ich so eine Art Planetensystem angewendet. Dabei kreisen die weissen Punkte jeweils wie Monde um die blauen Planeten und ziehen je eine gosse Kreisscheibe mit sich. Nun berechne ich den Schnittpunkt dieser grossen Kreisscheiben (hellblauer Punkt in der Mitte des Bildes = Zeichenstift). Die blauen Planeten sind Childs eines Empty Gameobjects, welches ebenfall rotiert. Im Moment muss ich mich mit solchen Spielerein begnügen.
  6. Hallo zusammen Ich möchte in Unity gerne eine mechnische Zeichenmaschine (Harmonograph) bauen. Drei grüne Räder rotieren und bewegen dabei mechanische Arme, die jeweils durch Gelenke verbunden sind. Der Gelenkpunkt mit dem schwarzen Kreis stellt den virtuellen Zeichenstift dar. Je nach Rotationstempo und Drehrichtung der grünen Räder ergeben sich dann unterschiedliche "Pendelmuster". Ich habe mit vorgestellt, das als 2D Projekt mit Sprites umzusetzen. Ich habe ein wenig mit balkenähnlichen Sprite-Armen und Hinge Joints herumprobiert, komme aber nicht recht vorwärts, zumal ich nicht weiss: 1. ob das mit Joints überhaupt funktioniert 2. welchen Typ Joint man dafür nehmen sollte 3. welche Einstellungen ich verwenden muss 4. wie ich erreichen kann, dass die Gelenke verbunden bleiben Im Moment zerreisst es mit dauernd die Gelenkverbingung, wenn der Antriebsarm sich nach links oder rechts bewegt. Der angehängte Arm entfernt sich dann um eine gewisse Distanz vom anderen Arm weg, bleibt aber in einer "losen" Verbindung am Hauptarm hängen. Ist es prinzipiell aber korrekt, die ganze Geschichte mit Hinge Joints zu machen? Irgendwelche hilfreiche Vorschläge?
  7. Ich habs jetzt rausgekriegt! Danke für deine Hilfe!
  8. Ich komme da leider nicht weiter! Zwar habe ich inzwischen in meinem 3D Projekt den "Rigidbody.SweepTest" durch die "Physics.SphereCast"-Methode erfolgreich ersetzen können (betrifft den Code nach der Sternenzeile). Bei der Umsetzung im 2D Projekt (Carromspiel) funktioniert der Code aber leider nicht mehr. Ich habe versucht, ihn auf 2D anzupassen (statt RaycastHit > RaycastHit2D und anstatt Physics.SphereCast > Physics2D.CircleCast). Es erscheint nur eine Fehlermeldung "Use of unassigned local variable `hit'. Keine Ahnung, woran das liegt. Ich bräuchte eigentlich nur die Position des Strikers bei einer voraussichtlichen Kollision und die Position des Spielsteines, welcher mit dem Striker angespielt würde! Kann mal bitte jemand einen Blick auf den fehlerhaften Code werfen? Hier die 2D Variante, welche leider nicht funktioniert if (Input.GetMouseButton(0)) { RaycastHit2D hit; if (Physics2D.CircleCast(transform.position, 0.5f, transform.forward, 10f)) // Striker Position, Radius, Richtung, Distanz { hitObject = hit.transform.gameObject; hitDistance = hit.distance; Debug.Log(hitObject); Treffpunkt.transform.position = hitObject.transform.position;//hitDistance; // Position des Strikers bei Kollision } else { hitObject = null; hitDistance = 10f; } } ****************************************************************************************************************************************** Hier die 3D Variante, welche problemlos funktioniert ****************************************************************************************************************************************** public class EinfacherTest : MonoBehaviour { public GameObject hitObject; public float sphereRadius; public float maxDistance; Vector3 origin; Vector3 direction; float hitDistance; void Update () { origin = transform.position; direction = transform.forward; RaycastHit hit; if(Physics.SphereCast(origin, sphereRadius, direction, out hit, maxDistance)) { hitObject = hit.transform.gameObject; hitDistance = hit.distance; } else { hitObject = null; hitDistance = maxDistance; } } void OnDrawGizmosSelected() { Gizmos.color = Color.red; Debug.DrawLine (origin, origin + direction * hitDistance); Gizmos.DrawWireSphere (origin + direction * hitDistance, sphereRadius); } }
  9. Aha! Wie immer sehr kompetent und hilfreich eure Tipps! So weiss ich wenigstens, in welche Richtung ich recherchieren muss. Besten Dank!
  10. Hallo zusammen Für ein 2D Carromspiel möchte ich dem Spieler eine Hilfslinie anzeigen lassen, die anzeigt, in welche Richtung sich sein Spielstein nach einem Treffer bewegen wird. Bei 3D-Objekten gibt es da die Möglichkeit einen Rigidbody.SweepTest anzuwenden, der (wie das linke Beispiel im Bild zeigt) auch wunderbar funktioniert. Für 2D-Objekte steht meines Wissens aber kein solcher Rigidbody2D.SweepTest zur Verfügung. Oder vielleicht doch? Wie kann man nun den Vector2 von A und B vorausberechnen, welcher dann für die Richtungsanzeige genutzt werden könnte?
  11. 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!
  12. 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!
  13. 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?
  14. 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...