Jump to content
Unity Insider Forum

Seyshiro

Members
  • Content count

    41
  • Joined

  • Last visited

Everything posted by Seyshiro

  1. Hi@all, ich bin z.Z. dabei mir für ein kleines Projekt in Unity einen Game Charcter mit mehreren Animationen in Blender zu erstellen. Nun bin ich allerdings auf ein kleines Problem gestoßen, das mich ein wenig Wurmt. Wenn ich z.B. eine Animation habe, bei der nur die Joints für die Wirbelsäule manipuliert werden müssen und bei einer weiteren Animation, nur die Joints für die Arme und Beine, dann besteht das Problem, dass nach dem Abspielen, der Arm-und-Bein-Animation die Wirbelsäulen-Animation nicht mehr in ihrer üblichen Ausgangspose ist, da die Joints für Arme und Beine ja von der anderen Animation manipuliert wurden. Jetzt wäre der simpelste Gedanke einfach der, dass ich am Anfang der Wirbelsäulen-Animation auch Keyframes für die Joints der Arme und Beine und bei der Arm-und-Bein-Animation am Anfang Keyframes für die Joints der Wirbelsäule setze damit die jeweiligen Ausgangspositionen der Joints in den einzelnen Animationen auch beibehalten werden aber ist das auch die richtige Vorgehensweise? Oder gibt es da möglicherweise eine einfachere Methode? Denn das stelle ich mir ziemlich umständlich vor, wenn man mehrere Animationen für ein Objekt hat, man dann später eine weitere Animation hinzufügen will, z.B. einen Follow-Path-Modifier für bestimmte Joints, und dann in allen anderen Animationen diese Modifier deaktivieren muss. Phu... ich hoffe ihr versteht was ich meine.
  2. OK, sowas habe ich schon befürchtet. Dann muss ich mir mal Gedanken machen, wie ich da am besten den Überblick behalte. Danke für eure antworten.
  3. Hi@all, Ich hoffe, dass sich der ein oder andere schon ein wenig mit Shader Graph auseinandergesetzt hat und mir sagen kann, ob es schon möglich ist, damit einen transparenten Shader mit Lichtbrechung umzusetzen.
  4. Seyshiro

    on trigger stay pendant (gelöst)

    Versuchs mal hiermit. using UnityEngine; public class TriggerChecker : MonoBehaviour { private bool isInTrigger = false; private void OnTriggerEnter(Collider other) { isInTrigger = true; } private void OnTriggerExit(Collider other) { isInTrigger = false; } private void Update() { if (!isInTrigger) { // do something } } } Ich hab den Code zwar nicht getestet aber er sollte eigentlich funktionieren. Im if-Block innerhalb der Update Methode kannst du jetzt deinen Code ausführen.
  5. Seyshiro

    Lichtbrechung mit Shader Graph

    @malzbie Danke für die schöne Erklärung. Ist das Erstellen so eines Fake-Lichtbrechungs-Shaders für glatte Oberflächen auch mit dem Shader Graph möglich? Und wenn ja, wie kann ich das am besten umsetzen? Mir fehlt da irgendwie der Ansatz.
  6. Seyshiro

    Skript nur für den Editor

    Ich verstehe leider nicht so wirklich was du meinst. Könntest du das bitte noch etwas näher erläutern. Was für Datenstrukturen und was genau meinst du mit Felder?
  7. Seyshiro

    Lightweight Pipeline und Shadergraph

    Da ich mich selbst auch sehr für die neuen Render Pipelines interessiere habe ich mich mal ein bisschen damit auseinander gesetzt und mich ein bisschen darüber belesen. Es kann sein das ich mich irre ( was mich sehr freuen würde ) aber wie es aussieht, funktionieren die meisten Post Processing Effects noch nicht mit den neuen Pipelines. Ist halt alles noch in der Preview-Phase aber da das Unity-Team sich damt z.Z. stark auseinandersetzt denke ich mal , dass das in den nächsten paar Releases funktionieren wird.
  8. Seyshiro

    Skript nur für den Editor

    Bin mir jetzt nicht 100%ig sicher ob es das ist was du suchst, aber probier mal folgendes: #if UNITY_EDITOR // Editor-Only-Code #endif Alles was innerhalb dieser Directive steht, wird nur im Editor ausgeführt, nicht aber im fertigen Build.
  9. Seyshiro

    Kamera fliegt durch Objekte

    Er meint, dass du ein Empty Object erstellst und diesem dann die Camera als Child unterordnest. Dann gibst du dem Empty Object noch einen Collider, einen RigidBody und das Script, das für die Bewegung zuständig ist. (Welches du vorher sicherlich der Camera selbst zugeordnet hast)
  10. Seyshiro

    Maximaler Polycount pro Scene ?

    Die Anzahl der sichtbaren Polygone die man ohne große Leistungseinbußen auf dem Bildschirm darstellen kann hängt nicht nur ein bisschen sondern sehr stark vom System ab. Ich habe das Wort "sichtbar" deswegen unterstrichen, weil Unity (so wie so ziemlich jede andere moderne Gameengine) hauptsächlich die Polygone berechnet, die auch auf dem Bildschirm sichtbar sind, d.h. wenn wenn sich ein Objekt hinter einem anderen befindet oder außerhalb des Sichtbereiches der Camera, und somit auf dem Bildschirm nicht angezeigt wird, dann wird auch keine Rechenleistung für die Darstellung dieser Polygone verschwendet. (Bei Dingen wie physikalischen Berechnungen sieht die Sache wieder etwas anders aus). Zudem gibt es auch noch so schöne Systeme wie LOD (Level of Detail), mit denen man nochmal einiges an Grafikleistung einsparen kann. Desweiteren denke ich nicht, das es sich so sehr auf deine FPS Rate auswirkt, ob du nun 30 oder 300 Texturen verwendest. (Korrigiert mich bitte jemand wenn ich da falsch liege) Alles in allem denke ich nicht, dass man bei der Anzahl der maximal sichtbaren Polygone einen pauschalen Wert veranschlagen kann, da es von mehreren Faktoren abhängig ist. Ich würde sagen, hier gilt wie bei so vielen Dingen: So viel wie nötig so wenig wie möglich.
  11. Seyshiro

    Meine Figur bewegt sich Grundlos nach Linksoben

    Ich hab das Script mal so übernommen wie es ist und bei mir gibt es keine Probleme. Du könntest mal versuchen das hier: if (xEingabe != 0 || yEingabe != 0) { Debug.Log("x: " + xEingabe + " | y: " + yEingabe); } ans Ende deiner Update-Methode einzufügen und gucken, ob in der Console was ausgegeben wird, wenn sich deine Figur wieder von allein bewegt. Wenn ja, dann ist das Problem möglicherweise ein Hardwareproblem. Ansonsten gibt es noch die Möglichkeit, dass irgend ein anderes Script auf deine Figur zugreift und die Position verändert. Eine weitere Möglichkeit wäre (sofern deine Figur eine Rigidbody2D-Componente besitzt) das deine Figur aufgrund irgendwelcher Physics-Einstellung Bewegt wird.
  12. Seyshiro

    Powerleiste nach Gegnertod auffüllen

    OK, wie dein Name und der Quellcode schon vermuten lassen bist du noch ganz am Anfang aber gib nicht auf, das war jeder mal. =) Also als erstes setzt du deine "isDead" Variable 2 mal auf "true" das ist zwar nicht schlimm aber unnötig. Daher würde ich dir erstmal empfehlen, innerhalb deines if-Blocks in der Methode "ApplyDamage()" diese Zeile zu entfernen: isDead = true; da du genau das gleiche sowieso nochmal in der Death()-Methode machst. Dann möchtest du ja, dass die Variable "health" auf 2 steigt, nach dem sie kleiner oder gleich 0 ist. In deiner Death()-Methode machst du mit deiner health-Variable aber folgendes: health = health - 1; Das heißt, du verringerst ihren Wert um eins. Da du aber ihren wert auf 2 gesetzt haben möchtest (nicht um 2 erhöht, sondern auf 2 gesetzt) müsste die Zeile so aussehen: health = 2; Wenn das dann immer noch nicht funktioniert, dann hast du noch irgendwo anders fehlerhaften Code.
  13. Seyshiro

    Enerigeleiste soll sich nach einem Gegnertod auffüllen

    https://forum.unity-community.de/topic/13945-powerleiste-nach-gegnertod-auffüllen/
  14. Seyshiro

    Powerleiste nach Gegnertod auffüllen

    Das klappt nicht, weil du versuchst auf die enemy-Komponente zuzugreifen, obwohl du das GameObjekt, das die Komponente enthält zerstörst , sobald die Variable "health" <= 0 ist. Sobald du "Destroy(gameObject)" aufrufst, ist das GameObject (mit samt der Komponente) nicht mehr vorhanden.
  15. Seyshiro

    Daily Reward System Fehler

    Bin mir nicht ganz sicher ob das dein Problem löst aber die ersten beiden Codezeilen un deiner Start-Methode sehen so aus: string lastSavedTime = PlayerPrefs.GetString("LastRewarded"); lastRewarded = ulong.Parse(lastSavedTime.ToString()); in der 2. Zeile versuchst du lastSavedTime in einen string zu convertieren, obwohl diese Variable bereits ein string ist.
  16. Hi@all, ich bin mir leider nicht ganz sicher, ob ich hier im Bereich "Animation" richtig bin, oder ob mein Problem mehr in den Bereich "Scripting" gehört. Wie dem auch sei, ich leg einfach mal los. Im Prinzip ist mein Problem eigentlich recht schnell erklärt. Ich möchte, dass sich 2 Kreise verformen, wenn sie sich berühren, ähnlich wie wenn man 2 Gummibälle aneinander drücken würde. (Im Anhang ein Bild, welches zeigt, wie ich mir das Vorstelle.) Die Größe der Kreise und der Punkt der Kollision sind Variabel. Daher denke ich mall, dass dieser Effekt irgendwie dynamisch erzeugt werden müsste aber leider hab ich nicht mal im Ansatz einen Plan, wie ich das am besten anstelle. Hat irgendjemand eine Idee wie man das am besten umsetzen könnte?
  17. Hi@all, ich bin mir nicht sicher ob ich hier im richtigen Bereich bin, da ich nicht weiß, ob das ein Problem meines Scripts ist oder ob der Fehler irgendwo anders liegt. Am besten ich erkläre gleich mein Problem. Ich habe meiner Scene ein Sprite hinzugefügt, welches sich bei Tastendruck um eine bestimmte Achse drehen soll, dazu habe ich diesem Object eine HingeJoint2D-Component hinzugefügt (und natürlich auch nen RigidBody2D). Bei dieser Component habe ich "Use Motor" aktiviert (Motor Speed wird später per Script gesteuert) und da ich möchte, dass sich dieses Sprite nur in einem bestimmten bereich dreht habe ich auch noch "Use Limits" aktiviert und die Limits so eingestellt, wie ich sie benötige. Desweiteren habe ich dem Object noch einen PolygonCollider2D hinzugefügt. Mein Script, welches den Motor vom HingeJoit2D steuern soll sieht folgendermaßen aus: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Hinging : MonoBehaviour { public KeyCode key; public float motorSpeed; private JointMotor2D jointMotor; // Use this for initialization void Start () { jointMotor = GetComponent<HingeJoint2D>().motor; } // Update is called once per frame void Update () { if (Input.GetKey(key)) { jointMotor.motorSpeed = motorSpeed; } else { jointMotor.motorSpeed = motorSpeed * -1; } GetComponent<HingeJoint2D>().motor = jointMotor; } } Wenn ich das jetzt ausprobiere, dann muss ich die eingestellte Taste ca. 1 Sekunde lang gedrückt halten, bis das Object in der Scene auf den Tastendruck reagiert. Weiß jemand woran das liegen könnte, bzw. wie ich das Problem beheben kann? P.S.: Wenn ich den PlygonCollider2D entferne, dann reagiert das Object ohne verzögerung aber den Collider brauche ich.
  18. Hi@all, ich bin grade dabei, das Shader-Tutorial von dieser Seite durchzuarbeiten. Jetzt habe ich einfach mal folgendes Code-Snippet per Copy&Paste ins Visual Studio eingefügt, um mir den Effekt mal im Editor anzuschauen: Shader "Custom/MyPersonalShader" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct v2f { float4 pos : SV_POSITION; fixed3 color : COLOR0; }; v2f vert (appdata_base v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.color = v.normal * 0.5 + 0.5; return o; } fixed4 frag (v2f i) : SV_Target { return fixed4(i.color, 1); } ENDCG } } } Wenn ich diesen Code nun speichere erscheint in der Console folgende Fehlermeldung: "Shader error in 'Custom/MyPersonalShader': undeclared identifier 'UnityObjectToClipPos' at line 22 (on d3d11)". Meine Unity-Version ist 5.3.5 (falls das was zu sagen hat). Auf einer anderen Seite der Unity-Dokumentation habe ich auch gelesen, dass diese Funktion ein Teil der UnityCG-Lib ist, diese hab ich ja auch included, daher kann ich diese Fehlermeldung nicht wirklich nachvollziehen. Weiß vielleicht jemand von euch, wo das Problem liegt?
  19. Ich denke mal, das ich in der Kategorie Allgemeine Hilfe mit meinem Anliegen richtig sein sollte. Es geht darum, das ich in einem Spiel für Android beim tippen auf das Display einen kurzen AudioClip abspielen möchte, was an sich soweit kein Problem darstellt. Allerdings gibt es zwischen dem Tippen auf das Display und dem Abspielen des AudioClips eine - zwar nur ganz leichte aber trotzdem spürbare - Zeitverzögerung. Jetzt wollte ich mal fragen woran das liegen könnte und wie ich diese Zeitverzögerung verhindern kann. P.S.: Das Dateiformat der Audiodatei ist ".mp3" und bei den Einstellungen des AudioClips in Unity habe ich soweit alles bei den Default-Werten belassen.
  20. Seyshiro

    Zeitverzögerung bei Touch-Sound verhindern

    OK, das werde ich nachher mal ausprobieren, danke für deine schnelle Antwort.
  21. Als erstes möchte ich mich mal für den doch etwas verwirrenden Thementitel entschuldingen, allerdings ist mir leider nichts besseres eingefallen. Ich hatte vor kurzem die Idee zu einem kleinen Mini-Game. Dafür habe ich 27 Sechsecke erstellt. Nun soll in einem Zeitintervall von 0.2 Sekunden per Zufall eintschieden werden, ob sich ein Feld dreht oder nicht. Dazu die Logik zu programmieren ist soweit kein problem für mich. Jedoch stellt sich mir jetzt die Frage, ob ich dafür ein Script erstellen sollte, welches ich dann jedem der 27 Objekte zuweise, oder ob ich ein Script erstelle, das ich einem einzigen Objekt zuweise (z.B. der MainCamera), worin sich ein Array befindet, in dem ich alle Sechsecke einfügen kann und diese dann mittels einer Schleife per Zufall drehen lasse. Mein Grundgedanke dahinter war einfach die Frage, ob es Performance-Technisch besser ist 27 Update-Methoden zu haben oder eine Update-Methode in der z.B. in einer foreach-Schleife alle 0.2 Sekunden 27 mal etwas passiert.
  22. OK, hab jetzt die Lösung für das Problem gefunden. Wenn ich ans Ende der OnInspectorGUI-Methode noch diesen Code anhänge: if (GUI.changed) { EditorUtility.SetDirty(test); } dann funktioniert alles einwandfrei.
  23. Hi@all... ...und sorry für den verwirrenden Thementitel. Ich versuch mein Problem mal etwas genauer zu erläutern. Dazu habe ich hier erstmal ein Script vorbereitet (ja ich weiß, dass das nicht viel Sinn macht, aber das ist auch nur zur Erläuterung^^): using UnityEngine; using UnityEditor; using System.Collections; public class TestScript : MonoBehaviour { public int testVariable; } [CustomEditor(typeof(TestScript))] public class TestEditor : Editor { private TestScript test; void Awake () { test = (TestScript)target; } public override void OnInspectorGUI () { test.testVariable = EditorGUILayout.IntField("Test-Variable", test.testVariable); } } Wenn ich nun dieses Script einem Prefab aus dem Asset Bereich hinzufüge und dieses Prefab in die Hierarchy ziehe, dann kann ich zwar von beiden Objekten (sowhol aus Assets als auch aus Hierarchy) den Wert testVariable im Inspector ändern aber sobald ich das Spiel starte, ändert sich dieser Wert beim Objekt aus der Hierarchie automatisch in den Wert aus dem Assets-Object. Woran könnte das liegen und wie kann ich das unterbinden? Ich hoffe, dass mir jemand von euch helfen kann.
  24. Seyshiro

    gezeichnetes Symbol erkennen

    Hi@all, also ich habe grade folgendes Problem... ich möche ein Spiel für Smartphones erstellen, bei dem ein Spieler eines von mehreren Symbolen auf das Display zeichnet und dann soll erkannt werden, um welches Symbol es sich handelt, jetzt wollte ich mal fragen, ob jemand eine Idee hat, wie man sowas am effektivsten umsetzen könnte. Ich hatte an eine Art Raster gedacht, in dem dann die einzelnen Punkte verglichen werden und dann geprüft wird, mit welchem Symbol die Punkte im Raster am meisten übereinstimmen, jetzt wollte ich mal wissen, ob es da andere (einfachere, schneller, etc.) Möglichkeiten gibt, soetwas zu realisieren?
  25. Seyshiro

    Script aus einem Objekt zum Bearbeiten nutzen.

    Hmm... Ein Interpreter für Unity... Das ist eigentlich ne gute Idee für ein Gruppenprojekt. Vieleicht werde ich mir demnächst mal ein paar Gedanken um ein leicht erweiterbars Grundgerüst dafür machen.
×