Jump to content
Unity Insider Forum

Jog

Members
  • Posts

    208
  • Joined

  • Last visited

  • Days Won

    12

Everything posted by Jog

  1. Hallo, Es gibt immer andere Möglichkeiten, manchmal hilft es etwas um die Ecke zu denken. ( Schlangenlinien Flug, mmmh da war doch was, ach ja Sinus Cosinus ) transform.Translate(Vector3.forward * Time.deltaTime * drivespeed); Wenn du z.b. eine Sinusfunction einbauen würdest fliegt die Rakete einen Sinusbogen zum Ziel. transform.Translate(new Vector3(Mathf.Sin(Time.time) * 0.9f, 0, 1) * Time.deltaTime * drivespeed); Gruß Jog
  2. Hallo, Welche Fehlermeldung du genau erhältst wäre schon hilfreich. Ich rate mal ins blaue. In der class MathQuestion hast du public List<int> fakeAnswers; eine Liste referenziert die aber noch auf null zeigt. In der anderen Classe greifst du mit question.fakeAnswers.Add(_result); auf die fakeAnswers Liste zu die noch nicht Initialisiert ist. In der class MathQuestion hättest du mit public List<int> fakeAnswers = new List<int>(); die Liste Initialisiert Sorry, Sascha war mal wie immer 1 Minute schneller😉 Gruß Jog
  3. Hallo, Du hast auf einem InputField 2* ein Event liegen dadurch wird die magier und back Methode gleichzeitig ausgeführt, z.b. würde set false und set true gleichzeitig gesetzt was natürlich Unsinn ist, und die Reihenfolge der Aufrufe ist auch nicht immer gleich. Deshalb ist es besser die Eingabe Auswertung im Script zu übernehmen. Siehe im obigem Beispiel. Gruß Jog
  4. Hallo, 1. Erzeuge ein InputField 2. Erzeuge ein Leeres GameObject und nenne es zum Beispiel „Eingabe „, weise dem GameObject Dieses Beispiel Script zu. using System.Collections; using System.Collections.Generic; using UnityEngine; public class InputAuswertung : MonoBehaviour { public void Auslesen(string input) // Muss public sein um im Inspector ausgewält werden zu können { if (input.Equals("Wer")) // ist input = Wer ? gibt true zurück wenn Ja { Wer(); // aufruf der Wer() Methode } else if (input.Equals( "was")) // ist input = was ? gibt true zurück wenn Ja { was(); // aufruf der was() Methode } else // wenn nicht tue dieses { Debug.Log("Falsche Eingabe !"); } } //*********************************** private void Wer() { Debug.Log("Die Methode Wer() wurde Aufgerufen"); } //**************************************** private void was() { Debug.Log("Die Methode was() wurde Aufgerufen"); } } 3. Im Inspektor gehst du bei InputField auf OnEndEdit(String) auf das + Zeichen und machst einen Linksklick . Bei None(Object) ziehst du das GameObject „ Eingabe“ bei No Function wählst du InputAuswertung -> Auslesen aus. OnEndEdit(String) löst ein Event aus wenn die Eingabe mit der Returntaste oder einem Klick außerhalb des Eingabefeldes beendet wurde und ruft die dort hinterlegte Methode auf. Hoffe das es dir etwas Hilft. Gruß Jog
  5. Hallo, Wahrscheinlich hast du vergessen im Inspector der Liste die GameObjecte zu zuweisen. Gruß Jog
  6. Hallo, Selber kann man keine Themen Löschen. Aber man sollte wenn man eine Lösung gefunden hat die Lösung im Thema Posten. Dann haben Leute mit dem selben Problem auch etwas davon. PS. Eigentlich wollte ich eine Lösung für das Problem Posten, macht nun ja auch keinen sinn mehr, außerdem wenn man weiß, dass es gelöst wurde braucht man sich die Arbeit auch nicht mehr unnötiger weise zu machen. Gruß Jog
  7. Hallo, Oder mit der ToString-Methode. Jeder Datentyp kann mittels seiner geerbten ToString-Methode in den Datentyp string umgewandelt werden. Beispiel : ..... .... public int Summe; void Update() { ZahlText.text = Summe.ToString(); // Wandelt den Datentyp int in den Datentyp string um. } Gruß Jog
  8. Hallo, Mir ist aufgefallen das ich seit ein paar Tagen keine Unity Insider Forum E-Mail Benachrichtigungen vom Forum mehr erhalte. In den Einstellungen ist alles markiert. Liegt vielleicht ein Problem mit dem Server vor? Gruß Jog
  9. Hallo, Einen Hab ich noch 😉 LateUpdate Wird zwar oft nicht verwendet oder vergessen dass es die überhaut gibt, ist aber in machen Situationen wichtig. Die Methode LateUpdate() wird aufgerufen, nachdem alle Update-Funktionen aufgerufen wurden, aber noch vor dem Rendern. Dies ist nützlich, um die Skriptausführung zu ordnen. Zum Beispiel sollte eine Verfolgerkamera, in der LateUpdate() Methode implementiert sein, da Objekte nachverfolgt werden, die möglicherweise in Update oder FixedUpdate Funktionen bewegt wurden. Dies sollte sicherstellen dass, alle verfolgten Objekte bewegt wurden, bevor die Kamera aktualisiert wird, um ein „Nachspringen“ der Kamera zu vermeiden. Gruß Jog
  10. Jog

    2023

    Hallo, Wünsche euch allen ein erfolgreiches und Stressfreies Jahr. Gruß Jog
  11. Hallo, Ich wünsche euch allen, 12 Monate Gesundheit, 52 Wochen Glück, 365 Tage ohne Stress, 8784 Stunden Liebe, 527040 Minuten Freude, 31622400 Sekunden Programmieren ohne Bug, In diesem Sinne Frohe Weinachten.⛄ Gruß Jog
  12. Hallo, Hab mal ein Beispiel von Unity eingedeutscht. Vielleicht hilft das dir weiter. Quaternion.eulerAngles public Vector3 eulerAngles; Gibt die Euler-Winkeldarstellung der Drehung zurück oder legt diese fest. Euler-Winkel können eine dreidimensionale Drehung darstellen, indem drei separate Drehungen um einzelne Achsen durchgeführt werden. In Unity werden diese Drehungen um die Z-Achse, die X-Achse und die Y-Achse in dieser Reihenfolge durchgeführt. Sie können die Drehung einer Quaternion festlegen, indem Sie diese Eigenschaft festlegen, und Sie können die Euler-Winkelwerte lesen, indem Sie diese Eigenschaft auslesen. Wenn Sie die .eulerAngles-Eigenschaft zum Festlegen einer Drehung verwenden, ist es wichtig zu verstehen, dass Sie zwar X-, Y- und Z-Drehungswerte zur Beschreibung der Drehung angeben, diese Werte jedoch nicht in der Drehung gespeichert werden. Stattdessen werden die X-, Y- und Z-Werte in das interne Format der Quaternion konvertiert. Wenn Sie die .eulerAngles-Eigenschaft lesen, konvertiert Unity die interne Darstellung der Drehung der Quaternion in Euler-Winkel. Da es mehr als eine Möglichkeit gibt, eine bestimmte Drehung mithilfe von Euler-Winkeln darzustellen, können sich die Werte, die Sie zurücklesen, erheblich von den von Ihnen zugewiesenen Werten unterscheiden. Dies kann zu Verwirrung führen, wenn Sie versuchen, die Werte schrittweise zu erhöhen, um eine Animation zu erzeugen. Weitere Informationen finden Sie im unteren Skripting-Beispiel. Um diese Art von Problemen zu vermeiden, wird empfohlen, mit Drehungen zu arbeiten, indem Sie beim Lesen von .eulerAngles nicht auf konsistente Ergebnisse angewiesen sind, insbesondere wenn Sie versuchen, eine Drehung schrittweise zu erhöhen, um eine Animation zu erzeugen. Im folgenden Beispiel wird die Drehung eines GameObject mithilfe von eulerAngles basierend auf dem Input des Benutzers veranschaulicht. Das Beispiel zeigt, dass wir uns nie darauf verlassen, die Quanternion.eulerAngles zu lesen, um die Drehung zu erhöhen, sondern sie mit unseren Vector3 AktuellerEulerWinkel festlegen. Alle Rotationsänderungen treten in der AktuellerEulerWinkel-Variablen auf, die dann auf die Quaternion angewendet werden, um das oben erwähnte Problem zu vermeiden. using System.Collections; using System.Collections.Generic; using UnityEngine; public class ExampleScript : MonoBehaviour { float rotationSpeed = 45; Vector3 AktuellerEulerWinkel; Quaternion AktuelleRotation; float x; float y; float z; void Update() { if (Input.GetKeyDown(KeyCode.X)) x = 1 - x; if (Input.GetKeyDown(KeyCode.Y)) y = 1 - y; if (Input.GetKeyDown(KeyCode.Z)) z = 1 - z; // Ändern des Vector3, basierend auf der Eingabe multipliziert mit Geschwindigkeit und Zeit AktuellerEulerWinkel += new Vector3(x, y, z) * Time.deltaTime * rotationSpeed; // Verschieben des Werts von Vector3 in das Quanternion.eulerAngle-Format AktuelleRotation.eulerAngles = AktuellerEulerWinkel; //Wende die Quaternion.eulerAngles-Änderung auf das gameObject an transform.rotation = AktuelleRotation; } void OnGUI() { GUIStyle style = new GUIStyle(); style.fontSize = 24; // Verwende eulerAngles, um die Euler-Winkel der in Transform.Rotation gespeicherten Quaternion anzuzeigen GUI.Label(new Rect(10, 10,0, 0), "Rotation X:" + x + " Y:" + y + " Z:" + z, style); //gibt den Quanternion.eulerAngles-Wert aus GUI.Label(new Rect(10, 60, 0, 0), "AktuelleRotation: " + AktuellerEulerWinkel, style); //gibt die transform.eulerAngles des GameObject aus GUI.Label(new Rect(10, 110, 0, 0), "GameObject World Euler Winkel: " + transform.eulerAngles, style); } } Bin auch nicht gerade ein Quaternion Freak.🙂 Gruß Jog
  13. Hallo, Auch von mir ein Willkommen und viel Spaß mit Unity! 🙂 Gruß Jog
  14. Hallo, @malzbie Da stimme ich dir voll und ganz zu. Es sollte ja nur ein Anstoß sein, um sich mit der Thematik auseinander zu setzen, wann man eine null Abfrage machen sollte. z.b. Wenn ein GameObject auf ein anderes GameObject zugreift. (Es könnte ja in der Zwischenzeit z. b. mit Destroy() zerstört worden sein) Gruß Jog
  15. Hallo, Wie " malzbie " schon erwähnt hat, hast du wahrscheinlich vergessen im Inspector per Drag and Drop das Text-Object zuzuweisen. Da man dieses gerne mal vergisst mach es Sinn dieses im Code zu überprüfen. Hab deinen Code als Beispiel mal mit einer Abfrage erweitert, vorausgesetzt die Text - Componente ist auch vorhanden. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PlayerOtherFunctions : MonoBehaviour { public float roundTimer; public Text levelCounterText; private float levelCounterFloat; // Start is called before the first frame update void Start() { roundTimer = 100f; if (levelCounterText == null) // Wenn nicht "null" alls gut, wenn "null" dann weise die Text-Componente zu. { levelCounterText = GetComponent<Text>(); // die Text-Componenete zuweisen, levelCounterText ist jetzt nicht mehr "null" } } private void Update() { roundTimer = roundTimer - Time.deltaTime; levelCounterFloat = 100f - roundTimer; levelCounterText.text = levelCounterFloat.ToString() + " %"; // gibt den String mit allen Nachkommastellen aus //levelCounterText.text = levelCounterFloat.ToString("0.0") + " %";// <=ausgabe mit 1 Nachkommastelle,ohne Nachkommastelle ToString("0") } } Gruß Jog
  16. Hallo, Auch von mir ein willkommen und viel Spaß! Gruß Jog
  17. Hallo, Danke für den Hinweis.🙂 Gruß Jog
  18. Hallo, @malzbie Schöner Trailer, macht Lust auf mehr .👍 Da ich dein Spiel schon getestet habe, freue ich mich schon auf die Vollversion. Gutes gelingen für den Termin der Veröffentlichung. Gruß Jog
  19. Hallo, Hast du daran gedacht dass, entweder beim Rigidbody der Is Kinematic Parameter, oder beim MeshCollider der Is Convex Parameter aktiviert sein muss um mit der OnTriggerEnter( ) Methode zu interagieren. Vorausgesetzt Rigidbody und MeshCollider liegen als Component auf dem selben GameObject. Gruß Jog
  20. Hallo, gameObject.tag == "Player" , ist ein String vergleich und gibt True oder False zurück .Dementsprechend kann man auch keinen Transform zuweisen. 2 Sachen die man mal gerne vergisst. 1. Hat dein Player auch einen Rigidbody ?, ohne Rigidbody keine Collisions Erkennung. 2. Du benutzt die OnTriggerEnter( ) Methode. Haben alle bei der Collision beteiligten Collider auch den IsTrigger Parameter Aktiviert?. Gruß Jog
  21. Hallo, In dem du es Programmierst.🙂 1.Die Fragenstellung ist mal wieder genial🙄. Infos wie z.b. Was hast du schon Programmiert, was funktioniert nicht, welche Fehlermeldungen erscheinen u.s.w., wehren sehr hilfreich . Ansonsten fischt man in trüben. Oder man hat den Verdacht, Schreib mir mal einen Code den ich gebrauchen kann.( Ist nicht Böse gemeint ) 2. Du solltest dich mal mit der Komponenten Programmierung in Unity auseinandersetzen, diese gehört zu den wichtigsten Basics in der Programmierung von Unity. Hier mal ein Beispiel zu deiner Frage. using System.Collections; using System.Collections.Generic; using UnityEngine; public class MySorting : MonoBehaviour { private SpriteRenderer mySpRenderer;// Eine Variable vom Type SpriteRenderer erstellen private int myLayer { get; set; } // Eine int Variable erstellen für den Layerwert // Start is called before the first frame update void Start() { myLayer = 9;// Layer auf den Wert 9 setzen mySpRenderer = GetComponent<SpriteRenderer>();// Die Komponente SpriteRenderer übergeben } // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.W)) // Ist die Taste w gedrückt? { mySpRenderer.sortingOrder = myLayer; //Setze den Order in Layer auf den Wert myLayer } } } Als Hausaufgabe kannst du mal probieren eine Abfrage zu Programmieren die den Layerwert wieder auf 11 zurücksetzt wenn der Wert 9 nicht mehr gebraucht wird. Gruß Jog
  22. Hallo, Eine Idee hätte ich noch, wenn das nichts nutzt ergebe ich mich😉. Geh mal oben in der Menüleiste auf: Edit -> Shortcuts, wähle dort -> 3D Viewport aus und schau mal welche Tasten dort hinterlegt sind. Das sind die Tasten, die für den Flythrough Modus definiert sind, diese kann man dort auch selbst festlegen. Wenn dort nichts eingetragen ist geht auch nichts beziehungsweise, nur die Tasten die dort eingetragen sind. Gruß Jog
  23. Hallo, Mhhhh Seltsam, müsste aber funktionieren habe es gerade mit den Version 2019.4, 2020.3, 2021.3 getestet geht makellos. Wie gesagt funktioniert nur im perspektivischen Modus, aber nicht im 2d Modus und die (Pfeiltasten) funktionieren sowieso nicht. Nur die W A S D Q E Tasten. Wen du die Tasten W A S D Q E benutzt musst du auch weiterhin die Rechte Maustaste im Screen View Gedrückt halten, sonst Funzt es auch nicht. Wenn die max Kamera Geschwindigkeit in den Settings mit 0.001 eingestellt ist und du ein sehr großes Level hast, sieht man die Bewegung fast nicht. Sonst kann ich mir auch keinen Reim darauf machen. Gruß Jog
×
×
  • Create New...