Jump to content
Unity Insider Forum

malzbie

Moderators
  • Content count

    4,860
  • Joined

  • Last visited

  • Days Won

    302

Everything posted by malzbie

  1. malzbie

    NullReferenceException/ raycast

    Wenn diese Meldung kommt, dann ist etwas nicht da (oder nicht bekannt), was du aber ansprechen willst. In deinem Script willst du 2 unterschiedliche Dinge ansprechen. Einmal die Main Camera und einmal das Objekt CurrentPlaceableObject. Wenn die Zeile 52 wirklich auf die Camera verweist, dann hast du scheinbar in deiner Szene keine Camera, die den Tag MainCamera hat. Denn Camera.main will die Camera mit diesem Tag haben. Hast du evtl. die MainCamera, die immer in einer neuen Szene ist, gelöscht und einen neue Camera erstellt? Oder hast du mehrere Cameras in der Szene, aber die MainCamera ist deaktiviert?
  2. malzbie

    Der Tropfen ist da

    Willkommen!
  3. malzbie

    Invoke ruft nicht auf

    Ja, hast recht, @Sascha. Ich habe garnicht darauf geachtet, dass die Spielzeit auf 0 gesetzt wird. Obwohl ich es ja selber geschrieben habe! War zu spät gestern.
  4. malzbie

    Invoke ruft nicht auf

    Was willst du eigentlich erreichen? Der Text, wer gewonnen hat, soll eine gewisse Zeit sehen bleiben und dann weg gehen? Wenn ja, dann machst du da was falsch, denn die Update Methode wird jedes Frame aufgerufen. Sobald der linke oder der Rechte Player einen Punkt haben, wird jetzt jedes Frame das Canvas Objekt aktiviert, die Timescale auf 0 gesetzt und ein entsprechender Text übergeben. Du rufst auch jedes Frame den Invoke Befehl auf. Ob nun der rechte oder der Linke Player gewonnen hat, alles was innerhalb der If Abfrage steht sollte nur einmal ausgeführt werden. Also brauchst du eine boolsche Variable, die in der If Abfrage mit berücksichtigt wird. Du fragst also zusätzlich den Zustand dieser Variable ab. Z.B. ob sie false ist. Wenn es so ist, dann wird alles innerhalb der Abfrage abgearbeitet. Dort schaltest du diese eine Variable auf true, damit beim Nächsten Frame nicht wieder alles abgearbeitet wird. Denn nun ist sie ja nicht mehr false und die Bedingung ist nicht mehr erfüllt. Wenn du jetzt eine Coroutine starten würdest, anstatt einer Methode, dann könntest du dort einen Wartebefehl einstellen, der 1-3 Sekunden wartet. Erst nach dieser Wartezeit würde die Coroutine die weiteren Einträge abarbeiten. Ja und da würdest du dann das Canvas Objekt wieder deaktivieren und das machen, was danach passieren soll. bool showWinner=false; void Update(){ if(ball.scorePlayerLeft>=1 && !showWinner){ showWinner=true; canvas.SetActive(true); Time.timeScale=0; text,text="Player left won!"; StartCoroutine(WaitAndReset(1)); } } IEnumerator WaitAndReset(float duration){ yield return new WaitForSeconds(duration); canvas.setActive(false); Time.timescale=1; showWinner=false; // hier weitere Dinge einfügen, wie z.B. ein Laden einer neuen Szene. // oder evtl. die Punkte zurück setzen, denn der Score ist immer noch >=1. }
  5. Das Ganze Animationssystem von Unity ist noch lange nicht so gut, wie es echte 3D Programme wie Cinema4D, Maya, Blender usw. sind. Aber die Verbessern das System ständig und bringen Erweiterungen rein. Natürlich ändert sich von version zu Version dann einiges im Namen oder aber in der Menüposition. Das ist doof, wenn man gerade anfängt und dann beim Versionswechsel alles nicht mehr so ist wie man es kennt. Aber du siehst ja selbst, dass man die Dinge dann doch wieder findet. Das mit der Exit Time hast du richtig erkannt. Wenn der Haken gesetzt ist, wird die Animation bis zum Ende abgespielt und erst dann gibt es die Transition zum anderen State. Hast du da einen Animationsloop, kann das Wechseln zum anderen State mal schneller, mal langsamer passieren. Je nachdem wo die Animation gerade in deinem Loop ist. Meiner Meinung nach macht ExitTime nur dann Sinn, wenn man die Animation per Trigger startet und sie, nachdem sie einmal durchgelaufen ist, automatisch in einen anderen State wechseln soll. Du hättest also eine Transition von dieser Animation weg, ohne dass du eine Bedingung dafür nutzt, aber eben die ExitTime angehakt ist. Wenn du bei deiner Sprunganimation die Füße drehst, musst du auch schauen, dass sie wieder zurück gedreht werden, wenn du wieder gelandet bist. Denn wenn die Laufanimation nur die Fußposition animiert, dann bleibt natürlich die Drehung so, wie sie beim Sprung war. Eine Sache, die der Autor gemacht hat, aber du scheinbar nicht, ist die Verschachtelung der Sprites. Die ganzen Einzelteile sind Kinder des Überobjektes "Textures". Wenn er da die Füße animiert, dann sind diese Änderungen immer auch im Bezug zum Überobjekt. Gerade bei Positionsanimationen ist das wichtig, denn du willst ja nicht, dass der Fuß sich in der Welt bewegt, sondern nur im Bezugssystem des Überobjektes. Ich persönlich bin kein Freund von 2D Animationen, wo der Charakter aus mehreren Einzelteilen besteht. Ich erkenne klar die Vorteile bei diesem Style, aber ich würde eher einfach nur die Sprites wechseln. Ganz so, wie es zur alten Zeit war. Klar, das kostet mehr Speicherplatz weil man viele Sprites malen muss und man kann dem Männchen nicht mal einfach so ne andere Waffe geben. Dafür hat man aber viel mehr Möglichkeiten und Freiheiten bei der Gestaltung und man muss nicht jedes Einzelteil mit animieren. Zum Lernen ist das, was du da machst, aber ganz nützlich. Also schön weiter machen.
  6. Du machst was falsch! Lass das mit dem Record Butten mal sein. Geh auf 0:40 und drehe deinen Fuss einfach in den Winkel, den du haben willst. Dann klickst du auf den "Set Key" Button, direkt neben deiner Frameanzeige (da wo die 60 steht) und fertig. Diese Automatische Aufnahme gibt es in jeder 3D Software und auch hier. Aber im Endeffekt hast du nur die richtige Kontrolle, wenn du da manuell ran gehts. Ob du nun einen Wert für eine Achse direkt einträgst, oder aber das Objekt im Editor Fenster bewegst, bis es für dich richtig aussieht, ist egal.
  7. malzbie

    SketchUp - Hausmodell nach Unity

    Ich denke es ist Geschmacksache. Ein komplettes Haus zu importieren hat den Vorteil, dass es nur ein Mesh ist (wenn es denn nur ein Mesh ist) und etwas performater sein kann. Wenn du aber begehbare Dinge erstellst, könnte es schon ratsam sein, dass gewisse Teile einzeln sind. Die Böden, Treppen oder Dächer würde "ich" einzeln anlegen und dann für die Bestückung ausblenden. Egal wie du es machst. Irgendwas ist immer! Du musst einfach deinen Weg finden.
  8. malzbie

    Movement Bug?

    Es könnte sein, dass deine Tastatur da einfach nicht mit spielt. Bei billigeren Tastaturen können nicht beliebig viele Tasten gleichzeitig gedrückt werden. Manchmal gehen auch nur gewisse Kombinationen nicht. Das liegt dann an der internen Verschaltung der Signalleitungen.
  9. malzbie

    PC zusammen stellen

    Ja, der Unterschied ist groß. Die 1060 (habe ich) ist ca. 3 Mal so schnell wie die 660TI (hatte ich). Da ich bei meinen Flippern die 660 als empfohlene Graka angegeben habe, schaue ich immer, dass meine Tische (in HD Auflösung und wenn alle Posteffekte an sind) immer über 180fps liegen. Dann kann ich sicher sein, dass sie auf der 660 mit 60fps laufen.
  10. malzbie

    PC zusammen stellen

    Ob AMD oder Intel ist eigentlich ne Geschmackssache. Ich würde Intel nehmen. 4 Kerne reichen komplett aus. 6 sind super. Also da bist du obem mit bei. Die Taktfrequenz ist auch optimal. Gigabyte Board ist gut. 32 GB Ram ist super. Auch wenn 16 GB ausreichend sind. Kostet aber nicht viel, also nimms. Grafikkarte? Um Spiele zu erstellen, brauchst du diese Leistung nicht. Das Einzige was dauert, ist das Lightbaking und das macht man nun nicht oft. Zum Spieleerstellen und ein wenig Grafikkram reicht auch irgendwas mit 4 Kernen und 8GB Ram. Also da brauchst du dir überhaupt keine Sorgen machen. Nimm den, den du willst und leg noch ne NVIDIA 1080 mit bei. Es reicht auch ne 1060. Von den neueren Karte rate ich momentan noch ab, denn das was sie besser könnten wären die Raytrace Spielgelungen und das können die nur semi gut. Also da würde ich echt noch ein Jahr warten und jetzt nur ne 1060 kaufen.
  11. malzbie

    Berufliche Zukunft

    @Life Is Good Gute Worte!
  12. malzbie

    Texture2D / Einen Kreis via Script erstellen

    @Sascha Gutes Auge! Ich hatte mir die Formel gestern angeschaut und mir ist es nicht afgefallen.
  13. malzbie

    Inconsistend line endings

    Keine Ahnung, wo er den letzten Zeilensprung her holt. Aber ich würde mir da echt keinen Kopp machen. Das hatte Unity in der 5er Version auch ständig selbst gemacht, wenn du ein neues Script erzeugt hattest. Es hat glaube ich etwas mit CHR$(10) und CHR$(13) zu tun. 10 ist eine neue Zeile (\n) und 13 ist carriage-return (\r). Das sind uralte Befehle für die Typewriter bzw. Telefax Systeme, die immer noch unterschiedlich gehandhabt werden, (Unix,Linux zu Windows). Du nutzt ja den WriteLine Befehl. Brauchst du da denn \n überhaupt. Würde er nicht sowieso jedes Mal ne neue Zeile generieren? Du kannst auch \n\r nutzen, denn \r würde dann den Wagenrücklauf machen (carriage-return). Probier mal beide Varianten aus.
  14. malzbie

    Kommunikation zwischen Scripts?

    Genau! Trotzdem finde ich es natürlich auch wichtig die Möglichkeiten von c# und Mono zu zeigen. Kommt meiner Meinung nach immer auf den jeweiligen Stand des Fragenden an (und das erkennt man meist schon an der Frage). Ist er weiter fortgeschritten dann ja, ist er blutiger Anfänger, dann lieber nicht, weil er sollte ersteinmal die Grundlagen verstehen. Aber ich würde z.B. nie if(igendwas == true) schreiben. Das wäre dann doch zuviel des Guten.
  15. malzbie

    3D Object laggt (Vibriert)

    Wahrscheinlich bewegst du die Kugel nicht über die FixedTime sondern in der Update. Dadurch ist das Ganze nicht mehr synchron. Wenn du Rigidbodys bewegst, dann immer in der FixedUpdate und auch nur mit physikalischen Befehlen um die Physik im Spiel synchron zu halten und richtig berechnen zu lassen. Es sollte schon reichen, wenn du die Interpolation der Rigidbodies auf Interpolate stellst, um das Zittern zu umgehen. Warum hast du denn bei der Kugel die Schwerkraft an? Man sieht im hinteren Bereich des Films, dass die Kugel selbst am Zittern ist, also scheinbar die Schwerkraft gegen dein Bewegungsscript arbeitet.
  16. malzbie

    Malzbie's Flipper

    Ja, ganz am Anfang war es eine kleine Idee und ich habe einfach mal versucht die Physik in den Griff zu bekommen, denn es sollte ja alles physikalisch ablaufen. Nur Schwerkraft, Reibungen und Kollisionen. Inzwischen habe ich ganze 2 Arbeitsjahre in das Projekt investiert und ein gutes halbes Jahr wird es noch dauern, bis es komplett ist.
  17. Moin Leute. Ich hatte endlich mal richtig gut Zeit etwas an meinem Flipper zu basteln und ich will euch den aktuellen Stand hier mal zeigen. Ich bin total zufrieden mit dem Dingen und es macht mir richtig Spaß, weil es eben nicht nur programmieren ist, sondern eben auch gestalten. Ich kann ja alles irgendwie so ein bißchen. Und da ist dieser Flipper ein gutes Übungsprojekt, welches mich total erfüllt. Die Elemente erstelle ich in Cinema4D und nur wenige Dinge, sind modular nutzbar. Das macht zwar etwas Arbeit, wenn man merkt, dass dieses oder jenes nicht so funktioniert, aber man lernt halt auch worauf es ankommt. Bis jetzt habe ich gerade mal 11 kleine Scripts, die hauptsächlich für den Ton zuständig sind. Beleuchtung und Materialien/Texturen sind alle noch nicht in Arbeit. Wie die Spiellogik bzw. die Ziele sein sollen, das weiß ich schon zu 90%. Da ist noch einiges an Arbeit drin. Ist aber alles machbar. Denn bis jetzt habe ich gerade Mal so 50 Stunden investiert. (inklusive der Recherche im Inernet) Und wenn es auf 200 Std. hinaus läuft, dann ist das ein super Projekt für eine One-Man-Show. Bald kommt Neues!
  18. malzbie

    Malzbie's Flipper

    Junge Junge! Ich habe hier ja ewig nichts mehr geschrieben, dabei gibt es viele Neuigkeiten zu berichten. Seit dem November ist mein neuester Flipper "Playground" erhältlich. Dieses Mal ist ein Spielplatz das Thema und alles ist farbenfroh, süß und recht einfach. Aber es ist noch viel mehr passiert. Mir war gar nicht bewusst, wie viele Leute es gibt, die sich einen virtuellen Flipper als Cabinett bauen, also quasi einen Flippertisch mit seitlichen Knöpfen und mit Display da drin. Zuerst meldete sich jemand, der sogar einen 21:9 Monitor verbaut hat. Für diesen Ultrawide-Monitor im Hochkantformat hatte ich gar keine richtige Auflösung parat. Denn damit das Spielfeld da richtig rein passt, muss eine extra Ratio erstellt werden und alle Kamerapositionen müssen viel höher liegen. Das ist zwar erstmal nur ein Prototyp, aber trotzdem geil. Auf dem Bild ist momentan noch keine 21:9 Auflösung zu sehen. Aber das geht inzwischen. Wenn ihr wissen wollt, wie man sowas baut, dann schaut hier: https://www.instructables.com/id/Flipperkonsole-Für-PC-Flipper-Pinball-Console-for-/ Ja und dann gibt es die Jungs, die komplette Flippertische bauen und das Ganze dann mit der Software PinballX betreiben. Die Jungs haben einen eigenen Monitor für den Flipperkopf, wo dann sogenannte Backglass und die Scoreanzeigen zu sehen sind. Damit das alles mit PinballX funktioniert, müssen die Flipper einzeln startbar sein. Das habe ich denen mit Command-Line-Befehlen möglich gemacht. Es ist jetzt also möglich die Tische direkt zu starten, ohne dass man in das Intro und das Menü rein kommt. Falls euch das Interessiert dann schaut hier vorbei: https://www.pinballx.com/ Dort git es einen Link zum Forum und im Unterforum "User Projects" wird beschrieben, wie man die Software bestücken muss, damit meine Tische super laufen. Ja und momentan bin ich an meinem neuesten Tisch dran. Aber bis der Fertig ist, dauert es noch ne Weile. Hier ist schon einmal das von mir gemalte Backglass zu sehen:
  19. Welchen Controller man da benutzen sollte ist natürlich schwer zu sagen und kommt evtl. ein wenig auf die Zielgruppe an. Jeder, der auch Spiele spielt, wird mit einem XBox Controller super zurecht kommen. Allen anderen Leuten wird es wahrscheinlich egal sein. Der Vorteil bei XBox Controller ist die Kompatibilität zu Windows. Du musst keine besonderen Treiber aufspielen und es gibt gute Dokumentationen zur Achsen und Tastenbelegung im Netz.
  20. Wie wäre es denn mit nem wireless XBox Controller?
  21. malzbie

    Musik Ein und Aus

    Jawoll! Ach quatsch, manchmal ist das einfach so. Mach dir nix draus.
  22. malzbie

    [Gelöst]Xbox Controller Inputs

    Mit Unityeigenen Mitteln wird das schwierig (jedenfalls mit dem alten Inputmanager), denn wie du selber merkst, bringt es nichts wenn man auf einer Achse einen Wert addiert. Aus diesem Grund nutze ich XInputDotNet um die Controller abzufragen und vorallem um sie vom User innerhalb des Spieles konfigurieren zu lassen.
  23. malzbie

    Verständnisfrage Sound

    Puh! Du musst echt noch ein wenig an deinem Codeverständnis arbeiten. Vorallem an der Logik von Abfragen und den Zuständen von Variablen, Komponenten und Gameobjekten. Vorneweg: Ich sehe jetzt selber keinen Grund, warum das eine geht und das andere nicht. Ich sehe aber auch nicht wo gameStarted gesetzt wird. Trotzdem werde ich dir mal den Code zerpflücken und dir hoffentlich etwas Klarheit geben. if (this.GameObject != null) This ist die Klasse selbst, in der diese Abfrage steht. Dieses Script liegt auf einem Gameobject in der Szene. Das muss sogar so sein, denn in einer Szene kann keine Komponente existieren, wenn sie nicht auch auf einem Gameobjekt liegt. Somit ist die Abfrage komplett sinnlos. Du denkst dir jetzt sicherlich, dass es doch auch Klassen gibt, die nicht auf Objekten in der Szene sein müssen und trotzdem funktionieren, so wie die Mathf. Klasse. Ja natürlich. Diese sind aber Static und laufen nicht selbstständig ab. Erben also nicht von Monobehaviour, und haben auch keine Awake/Start/Update Funktionen. if (this.GameObject != null && gameStarted) Irgendwo wird diese Variable aus irgendeinen Grund auf true gesetzt. Möglicherweise wird sie auch irgendwo wieder auf false gesetzt. Wo, wann und warum diese Variable ihren Wert bekommt, weiß ich nicht. Diese Variable könnte aber eben das Probelm verursachen. if (this.GameObject != null && gameStarted && backgroundMusic =! null) Hier fragst du ab, ob denn die Referenzvariable backgroundMusic, die vom Typ Audiosource ist, auch wirklich auf eine Komponente verweist. Das ist gut, denn wenn man eine Komonente ansprechen will, die nicht bekannt ist, wird ein Fehler ausgeworfen. Ich perönlich würde aber aus Debug-Gründen diese Abfrage einzeln und als erstes machen. if(backgroundMusic=!null){ if(irgendwas){// weitere mögliche Abfragen, wenn nötig // hier die Audiosource steuern } } else{ // Hier springe ich nur rein, wenn die Variable keinen Verweis auf eine Komponente hat. print("backgroundMusic hat keine Audiosource zugewiesen"); } Wenn du also keine Komponente zugewisen hast, würde der Code idr eine Meldung raus werfen. Damit hättest du eine Fehlerquelle schon einmal abgedeckt. if (this.GameObject != null && gameStarted && backgroundMusic =! null && !musicPaused) Wieder eine Variable, die du irgendwo setzt, wenn irgend etwas eintritt. Auch hier weiß ich nicht wo und wann das passiert. Diese Abfrage machst du gleich 2 Mal hintereinander, denn in der nächsten Zeile if(!backgroundMusic.isPlaying && !musicPause) steht sie wieder drin. Oder ist das etwa eine weitere Variable, weil musicPause ohne D da drin steht? Wenn's eine weitere Variable ist, dann ist es ganz blöd, davon gehe ich jetzt mal nicht aus. Du hast wahrscheinlich nur einen Fehler beim Übertragen des Codes gemacht. Da aber in deiner oberen Abfrage schon klar ist, dass der Code nur dann ausgeführt wird, wenn musicPaused false ist, ist eine weiter Abfrage sinnlos und verkompliziert nur den Code und dessen Lesbarkeit. Wenn alle deine Bedingungen wahr sind, den das macht ja eine if-Abfrage, das ermitteln ob alle Bedingungen zusammen true oder false ergeben, dann wird die verknüpfte Audiosource gestartet. Also nur, wenn deine Audiosource nicht schon was abspielt, wird sie gestartet. Du siehst also, dass es schwierig ist, deinen Code zu entschlüsseln, weil zu viele unnötige Abfragen da drin sind. Außerdem werden Variablen abgefragt, über dessen Zustände wir nichts wissen. Wann und vorallem warum wird musicPaused und gameStarted auf true bzw. false gesetzt. Sind diese 2 Variablen evtl. noch woanders mit der Audiosource verknüpft und hebeln sich dewegen aus? Ich weiß es nicht. Aber du kannst es rausfinden.
  24. malzbie

    Berufliche Zukunft

    Nö! Ich selber bin jetzt 50 und habe den Schritt in meine Selstständigkeit vor fast genau 2 Jahren gemacht. Klar ich habe in allen Bereichen, die ich brauche, Erfahrungen und Wissen. Aber dass ich jetzt irgendwo ein Meister wäre, kann ich nicht sagen. Muss man auch nicht unbedingt. Klar, warum denn nicht? 34 ist ja nun kein Alter! Wenn du dich Umschulen lässt, dann lernst du ja was dabei. Natürlich brauchst du immer auch Erfahrungen, die dich festigen. Aber die bekommst du sau schnell. Wenn du die Erfahrungen für die nächste Situation nutzt, also abrufen kannst, weil du sie nicht wieder vergessen hast, dann wirst du deinen Weg machen. Ich kenne Leute, die ihre Erfahrungen nicht abspeichern und somit immer auf einem Level bleiben. Solche Leute werden nix. Aber die sind auch selten. Das weißt nur du alleine. Du programmierst ja schon ne Zeit lang und kannst ja auf deine Anfänge zurück blicken. Hast du was gelernt? Ja? Dann bist du wahrscheinlich auch geeignet. Klar, es gibt natürlich Hürden in der Anwendungsprogrammierung, wenn es z.B. in die höhere Mathematik geht, oder der maximalen Optimierung des Codes und dessen Zeitverbrauch. Und natürlich ist es immer so ne Sache, wenn man z.B. ein Sicherheitssystem erstellen soll, was auf gar keinen Fall irgendwelche mögliche Lücken oder Fehler enthält. Trotzdem kann man alles lernen und irgendwann richtig schwierige Dinge bewerkstelligen. Man kann! Ob man es auch schafft in die oberste Klasse zu kommen, weiß niemand. Aber wenn man es nicht versucht, wird man es nie wissen. Wenn dir das Prgrammieren spaß macht, egal für welchen Bereich du programmieren wirst, dann versuche es. Irgendwas arbeiten, nur um Geld zu verdienen, kann man immer. Aber etwas, was einem auch Spaß macht oder was einen zufrieden stellt, dass sollte jeder tun, denn das ist das Beste! Egal ob der Verdienst dann besonders gut ist, oder nicht. Was sich daraus entwickeln wird, kann man eh nie sagen. Mal geht's ab wie ne Rakete, mal bleibt man stecken und meistens geht es zufriedenstellend weiter. Man sollte es aber wenigstens einmal versuchen! (Ist meine persönliche Meinung)
  25. malzbie

    Trabant Driver: The Arcade Game

    Gefällt mir gut. Aber 2 der Autos scheinen den Weg aus den Kreisel heraus nicht zu finden.
×