Eine einfache und schnelle Möglichkeit hat regex9 vorgestellt. Mit Eigenschaften kannst du kontrollieren, wie mit einem Objekt "von außen" umgegangen werden soll, beispielsweise ob man den Wert in der Variable lesen oder schreiben darf, sowie auf welche Art und Weise.

Eine weitere Möglichkeit wäre das Einführen einer eigenen Klasse. In C# kann man nämlich eine Operatorüberladung vornehmen. Du könntest dann für deine Klasse nur den "+" einführen, aber nicht die anderen arithmetischen Operatoren, sodass man den Wert in einer Instanz dieser Klasse immer nur erhöhen könnte (ist etwas komplizierter als das, weil man dann Objekte miteinander "verrechnet"). Das führt aber an dieser Stelle meiner bescheidenen Meinung nach zu weit, gerade wenn du nicht mehr mit dieser Variable machen möchtest als diese Einschränkung, dass man den Wert in der Variable nur erhöhen darf.

...zur Antwort

Schau mal in den Terrain Settings nach der Einstellung "Tree Distance". Diese Einstellung entscheidet darüber, ab welcher Distanz zur Kamera die Bäume nicht mehr zu sehen sind.

...zur Antwort
C# Programm Zweidimensionales Array?

Moin,

sitze schon ne Weile an einem Programm, das einen Integer (nennen wir ihn Zahl ) vom Benutzer einlesen soll. Ausgehend von Zahl soll dann wie folgt ein zweidimensionales Array erstellt werden:

  • das Array ist Zahl x Zahl groß
  • das Element oben links im Array (also [0, 0] ) hat den Wert Zahl x Zahl
  • jedes weitere Element rechts daneben hat jeweils -1 weniger
  • anders beschrieben: es wird von links nach rechts abwärts gezählt beginnend vom Wert Zahl x Zahl

Da ich mir den Lösungsweg Stück für Stück erarbeiten möchte, könnt Ihr auf die komplette Lösung/ bzw. Erklärung verzichten.

Ich weiß, dass man Zeilen und Spalten bei dieser Aufgabe beide mit for-Schleifen erstellen kann, doch der Einfachheit halber möchte ich erst verstehen, wie ich mit den Spalten vorgehen muss.

Ohne for-Schleife bekomme ich die erste Spalte problemlos erstellt und das sieht dann so aus:

oder:

Console.WriteLine("Geben Sie eine Zahl ein, bei der nach dem"+ "Schema Zahl*Zahl ein Array erstellet werden soll:");
            string eingabe = Console.ReadLine();
            int intEingabe = Convert.ToInt32(eingabe);
            Console.WriteLine("\n");
            int[,] eingabeArray = new int[intEingabe,intEingabe];
            int eingabeArrayLänge = intEingabe * intEingabe;

            //Erste Spalte:
            eingabeArray[0, 0] = eingabeArrayLänge;
            eingabeArray[1, 0] = eingabeArray[0, 0] - 1;
            eingabeArray[2, 0] = eingabeArray[1, 0] - 1;
            Console.WriteLine(eingabeArray[0, 0] + "\n" + eingabeArray[1, 0] + "\n" + eingabeArray[2, 0]);

Bis dahin kein Problem doch wie schaffe ich es nun, dass ich die erste Spalte nicht "von Hand" ausfüllen muss? Das muss doch irgendwie mit ner for-Schleife zu machen sein?

Doch ich komme da nicht weiter - egal wie ich es drehe und wende.. Wäre nett wenn jemand mir die passende for-Schleife zeigen könnte.

LG

...zur Frage

Schau zum Beispiel mal hier, wie man in C# durch einen multidimensionalen Array iteriert: How do you loop through a multidimensional array?

Dann musst du es nicht von Hand ausfüllen.

...zur Antwort

Das dürfte die Serie Shaolin Wuzang sein, das lief mal auf Kika. Auch die Beschreibung der ersten Folge auf der Wikia-Seite klingt sehr ähnlich.

...zur Antwort
10-15 Stunden

Einmal habe ich das gemacht, welchen Anime weiß ich nicht mehr, könnte Soul Eater gewesen sein, morgens um 10 Uhr angefangen und abends so um 9-11 Uhr wieder aufgehört.

...zur Antwort

Löschen von nicht sichtbaren Objekten ist vielleicht der falsche Ansatz beziehungsweise ein Optimierungsdetail, was schlussendlich viel Aufwand mit wenig Nutzen bedeutet.

Schau dir beispielsweise Occlusion Culling an. Das macht schon so was in der Art, es "versteckt" Objekte, die nicht im sichtbaren Bereich sind.

Das Löschen von Objekten macht dann Sinn, wenn du beispielsweise ein fortlaufendes Level hast mit pseudo-unendlich vielen Objekten, so dass irgendwann keine Objekte mehr erstellt werden können. Das dauert allerdings sehr lange, bis man den Punkt mal erreicht hat.

...zur Antwort

Das ist ein bekanntes Problem, schau mal hier, die Person hatte das gleiche Problem. Es gibt verschiedene Lösungsansätze, die beispielsweise hier gelistet sind.

...zur Antwort

Schau dir mal Timelines an. Creating Timelines könnte auch hilfreich sein. Die erlauben es dir, eine Bewegung graphisch darzustellen.

...zur Antwort
Wie behebe ich in Unity den Fehler CS1061 ('Player' does not contain a definition for 'GetPosition' ...)?

Ich programmiere erst seit ein paar Wochen und habe mithilfe von YouTube und dem Internet mich durch Stunden des Codens und ähnlichem geboxt.

Doch nun, nachdem ich mein erstes wirkliches Projekt gestartet habe, stoppt mich nun der Fehler

CS1061:Assets/LevelGenerator.cs(28,45): error CS1061: 'Player' does not contain a definition for 'GetPosition' and no accessible extension method 'GetPosition' accepting a first argument of type 'Player' could be found (are you missing a using directive or an assembly reference?).

Es wäre superduper megamäßig cool, wenn sich jemand meganettes meinen Code ansehen könnte, um mir zu sagen was mein Fehler ist.

Dankeschön an jeden, der sich die Zeit nimmt, um mir zu helfen. Dankeschön. 😃

Hier nun mein Code (er soll eine unendliche Welt generieren):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LevelGenerator : MonoBehaviour {
  private const float PLAYER_DISTANCE_SPAWN_LEVEL_PART = 200f;

  [SerializeField]
  private Transform levelPart_1;

  [SerializeField]
  private Transform levelPart_Start;

  [SerializeField]
  private Player player;

  private Vector3 lastEndPosition;

  private void awake()
  {
    lastEndPosition = levelPart_Start.Find("EndPosition").position;
    int startingSpawnLevelParts = 5;

    for (int i = 0; i < startingSpawnLevelParts; i++)
    {
    }
  }

  private void Update()
  {
    if (Vector3.Distance(player.GetPosition(), lastEndPosition) < PLAYER_DISTANCE_SPAWN_LEVEL_PART)
    {
      // Spawn another level part
      SpawnLevelPart();
    }
  }

  private void SpawnLevelPart()
  {
    Transform lastLevelPartTransform = SpawnLevelPart(lastEndPosition);
    lastEndPosition = lastLevelPartTransform.Find("EndPosition").position;
  }

  private Transform SpawnLevelPart(Vector3 spawnPosition)
  {
    Transform levelPartTransform = Instantiate(levelPart_1, spawnPosition, Quaternion.identity);
    return levelPartTransform;
  }
}

PS.: Danke an jeden, der hilft oder sich das hier auch nur wenigstens durchliest. 😃

...zur Frage

Kannst du bitte deine Implementierung von "Player" posten? Die Fehlermeldung bedeutet, dass es diese Methode in der Klasse "Player" nicht gibt. Falls du die Klasse selber geschrieben hast, musst du eine solche Methode auch selber implementieren.

Alternativ, wenn "Player" von MonoBehaviour erbt, kannst du auch das hier machen, sofern es inhaltlich das Gleiche bedeutet:

player.gameObject.transform.position
...zur Antwort

Die Game View verwendet die Kamera, die in der Szenenhierarchie konfiguriert ist, wohingegen die Scene View eine eigene Kamera verwendet. Ich würde vermuten, dass deine Objekte so in deiner Welt liegen, dass die Kamera der Game View diese einfach nicht im Bild hat.

Um das zu testen, schau dir genau an, wie deine Kamera im Spiel liegt und erstell dann einfach ein primitives Objekt wie einen Cube so, das dieser auf jeden Fall im Bereich der Kamera ist. Wird der Cube dann nicht angezeigt, ist es was anderes. Alternativ kannst du deine Prefabs natürlich auch so instantiieren, um das zu überprüfen.

Eine andere Idee wäre noch, dass die Normalen deiner Meshes in die falsche Richtung zeigen. Was dann nämlich passiert, wird beispielsweise hier gezeigt.

...zur Antwort

Es gibt verschiedene Datentypen, die Zahlen mit Nachkommaanteil darstellen, zwei populäre Datentypen sind float und double. Dabei kann double größere Zahlen darstellen als float, deswegen auch der Fehler, da eine Float-Zahl mit einer Double-Zahl multipliziert größer werden kann als der maximale Wert, den eine Float-Zahl annehmen kann.

Bei der Literalschreibweise ("Zahlen im Code schreiben") gibt es hierbei auch Unterschiede:

a = a * 0.1; // multipliziert a mit einer Double-Zahl

Was du aber möchtest, ist das hier:

a = a * 0.1f; // multipliziert a mit einer Float-Zahl

Mehr dazu kannst du in Microsoft's Floating-point numeric types (C# reference) finden, insbesondere im Abschnitt Real literals.

...zur Antwort

Meistens ist es nicht eindeutig, gerade Feen beispielsweise, da gibt es solche, die Schattenwesen sind, solche, die Lichtwesen sind und welche, die irgendwo dazwischen sind. Auch bei Menschen ist es unmöglich zu bestimmen, was wir sind, auch wenn Menschen das Potential für beides haben.

Allgemein könnte man sagen, dass Lichtwesen das größere Wohl im Blick haben, Güte zeigen können und eine Bereitschaft der Selbstaufopferung besitzen, wohingegen Schattenwesen nur ihr eigenes Wohl im Blick haben und auf Kosten anderer handeln.

...zur Antwort

Du kannst Unity auch für Apps verwenden, die keine Spiele sind, aber meistens lohnt sich das nicht, gerade wenn du nichts in 3D oder 2D visualisieren musst. Es gibt dann meist spezialisierte Frameworks, die dann deutlich mehr zur Entwicklung deiner App beitragen können.

Plattformunabhängigkeit wäre für mich persönlich kein ausreichendes Argument, um Unity für die Entwicklung einer App zu verwenden, die kein Spiel ist. Das können die meisten großen Frameworks und Umgebungen, die dich bei der Entwicklung von Apps unterstützen, auch.

...zur Antwort

Für jede Programmiersprache gibt es Code- und Namenskonventionen, die sich auch von Programmiersprache zu Programmiersprache unterscheiden, beispielsweise:

  • Codekonventionen für C#, Richtlinien für die Benennung und Bezeichnernamen aus dem C#-Programmierhandbuch von Microsoft.
  • Code Conventions for the Java Programming Language von Oracle.
...zur Antwort

Wir Menschen gewöhnen uns immer mehr an die Annehmlichkeiten der Technik und der Film "I, Robot" greift das auf. Es ist beispielsweise bei vielen sehr populären Apps bekannt, durch Skandale und Reverse Engineering, dass diese Apps so viele Daten über dich und dein Verhalten abschöpfen wie möglich, manchmal sogar illegal ohne dich darüber zu informieren. Die meisten Menschen interessiert das aber nicht mehr, weil "man es ja doch nicht verhindern könne und es eh jede App mache".

So ist es auch bei den Menschen in "I, Robot". Die Roboter bieten so viele Annehmlichkeiten, dass man sie nicht mehr hinterfragt. Lediglich Leute wie Spoon, der von einem Roboter gerettet wurde, weil dieser ein Mädchen wegen besserer Überlebenschancen dem Tod überlassen hat, haben bemerkt, wie gefährlich es ist, sich auf Roboter und damit Technik zu verlassen. Der Film eskaliert damit das, was wir heute mit Apps und Smartphone haben, um ein weiteres Level mit Robotern und entwickelter Technik.

...zur Antwort

Das geht an der Stelle nicht, nein. Die Objekte in deiner Szene und deine Prefabs existieren auf verschiedenen "Ebenen". In deiner Szene, das sind instantiierte Objekte, wohingegen deine Prefabs serialisierte Objekte sind, die instantiiert werden können.

Um dein Problem zu lösen, könntest du beispielsweise einen sogenannten Provider erstellen, der zur Laufzeit den Transform des Objekts bereitstellt, welchen deine Objekte verfolgen sollen.

Schau dir auch beispielsweise mal How can you get a reference to the player after it is spawned an, auch wenn der Beitrag schon etwas älter ist. Dort wird GameObject.tag benutzt, was dir erlaubt, den Spieler zu finden. Das wäre eine Möglichkeit, wenn auch keine effiziente Lösung. Die Performance kannst du später aber immer noch verbessern, sobald du etwas hast, was spielbar ist.

...zur Antwort

Dafür gibt es in Unity Coroutines mit der Anweisung WaitForSeconds. Das solltest du aber nicht in einer Methode wie OnTriggerEnter2D machen, da diese Methode jedes mal gerufen wird, sobald das Objekt einen entsprechend anderen Collider berührt.

Schau stattdessen mal, wie man in Unity einen Game Over Screen programmiert. Mit "unity game over screen" findest du da in der Suchmaschine deiner Wahl viele gute Ergebnisse.

...zur Antwort

Objekte werden immer automatisch skaliert, egal ob du einen großen Bildschirm in 4K anschaust oder einen kleinen Bildschirm auf dem Smarphone, beide zeigen das gleiche Bild. Natürlich sieht eine 32 Pixel Textur auf einem Smartphone ganz anders aus als auf dem großen 4K Bildschirm.

Damit das auch mit 2D klappt, wähle immer relative und nicht absolute Werte. Sag deinem 2D Element beispielsweise nicht "25 Pixel von rechts", sondern "5% von rechts", damit deine Elemente auch bei unterschiedlichen Bildschirmgrößen gleich sind und sich nicht überlappen.

...zur Antwort

Benutze verlustfreie Dateiformate für Texturen. Bei JPG beispielsweise gibt es einen Informationsverlust bei den Pixeln (das Bild wird unschärfer), um anderswo einen Vorteil zu bekommen, beispielsweise weniger Speicherverbrauch.

PNG kann verlustfrei sein, wenn du es so exportierst, dafür musst du die Kompression beim Exportieren aus stellen.

...zur Antwort
Welcher ist euer Lieblingsfilm von DreamWorks?

Neben z.B. Pixar, Disney und Illumination gibt es auch DreamWorks, welches zahlreiche Animationsfilme produziert hat und einige dieser Filme können mit Leichtigkeit mit den besten Pixar- und Disney-Filmen mithalten oder manche sogar übertreffen (mMn).

Ich bin ein großer Fan von DreamWorks, viele seiner Animationsfilme zählen zu meinen Lieblingsfilmen, z.B. Kung Fu Panda 1 und 2, Drachenzähmen leicht gemacht 1-3, Die Hüter des Lichts, Everest, Shrek 1 und 2, Ab durch die Hecke, Monsters vs Aliens...

Und ich möchte heute mal wissen, welcher euer Favorit ist. Ich werde dazu hier in der Beschreibung alle DreamWorks-Filme auflisten, so braucht ihr sie nicht zu suchen. In der Umfrage werde ich 6 dieser Filme bzw. Filmreihen aufführen, unter dem 7. Punkt könnt ihr dann euren Favoriten nennen.

  • Der Prinz von Ägypten 
  • Joseph – König der Träume 
  • Der Weg nach El Dorado 
  • Spirit – Der wilde Mustang 
  • Sinbad – Der Herr der sieben Meere 
  • Antz
  • Shrek 1-4
  • Große Haie – Kleine Fische
  • Madagascar 1-3
  • Wallace & Gromit – Auf der Jagd nach dem Riesenkaninchen
  • Ab durch die Hecke
  • Flutsch und weg
  • Bee Movie – Das Honigkomplott
  • Kung Fu Panda 1-3
  • Monsters vs. Aliens
  • Drachenzähmen leicht gemacht 1-3
  • Megamind
  • Der gestiefelte Kater
  • Die Hüter des Lichts
  • Die Croods
  • Turbo – Kleine Schnecke, großer Traum
  • Die Abenteuer von Mr. Peabody & Sherman
  • Die Pinguine aus Madagascar
  • Home – Ein smektakulärer Trip
  • Trolls
  • The Boss Baby
  • Captain Underpants – Der supertolle erste Film
  • Everest – Ein Yeti will hoch hinaus
  • Trolls World Tour

Folgend noch Links zu ähnlichen Umfragen von SANY3000:

https://www.gutefrage.net/frage/welcher-ist-euer-lieblingsfilm-von-pixar

https://www.gutefrage.net/frage/welcher-ist-euer-liebster-disney-film-aus-der-reihe-der-klassischen-meistwerke-die-noch-von-walt-disney-persoenlich-produziert-worden-sind-teil-1

https://www.gutefrage.net/frage/welcher-von-diesen-klassischen-disney-filmen-die-nach-dem-tod-von-walt-disney-erschienen-sind-ist-euer-favorit-teil-2

https://www.gutefrage.net/frage/welcher-ist-euer-liebster-disney-film-aus-der-reihe-der-meisterwerke-aus-den-2000er-und-2010er-jahren-teil-3

...zur Frage
Die Hüter des Lichts

Einer meiner absoluten Lieblingsfilme, einfach nur schön gemacht.

...zur Antwort