Jump to content
Unity Insider Forum

MichaelH

Members
  • Posts

    79
  • Joined

  • Last visited

  • Days Won

    1

MichaelH last won the day on April 6

MichaelH had the most liked content!

About MichaelH

  • Birthday 07/28/1955

Profile Information

  • Gender
    Male
  • Location
    Hamburg

Recent Profile Visitors

1,769 profile views

MichaelH's Achievements

Advanced Member

Advanced Member (3/3)

17

Reputation

  1. Ich habs befürchted, ich werd meine Projektstruktur wohl nochmal überarbeiten müssen, aber deswegen hab ich ja nachgefragt. Dank dir.
  2. Danke dir. Das hilft 😃
  3. Ich schalte ja in beiden Fällen das gesammte Childobject an oder ab (den Sector). Meine Frage geht mehr in die Richtung ob in beiden Fällen beim "Einschalten" die Callbackfunktionen Awake und Start neu aufgerufen werden oder es vielleicht sogar besser ist Kopien der Prerfabs zu Instanzieren und zu Destoyen wenn man das möchte ? Ich weiß eben nicht wie Unity das intern so handhabt.
  4. Moin, in meinem Projekt befinden sich mehrere Level die in Sektoren aufgeteilt sind. Diese Sektoren möchte ich nach Bedarf (PlayerPosition, Portal etc.) aktivieren oder deaktivieren. Welche Methode ist dafür besser geeignet, oder ist das egal ? Welche Vor- und Nachteile ergeben sich daraus ? public void ActivateSector(Vector2 pos, bool state) { transform.GetChild(GetSectorIndex(pos)).gameObject.SetActive(state); } public void EnableSector(Vector2 pos, bool state) { transform.GetChild(GetSectorIndex(pos)).GetComponent<Sector>().enabled = state; }
  5. "Ich vermute stark ..." hat Sascha schon geschrieben. Um dir weiterzuhelfen solltest du mal was von deinem Code zeigen.
  6. Deine Tilemap hat nicht die richtigen Collider. Als erstes solltest du einen Tilemap Collider 2D nehmen. Das reicht eigentlich schon, nur wird für jedes Tile ein Collider erstellt. Die kann man zusammenfassen mit einem Composite Collider 2D. Dieser fügt gleichzeitig einen Rigidbody 2D hinzu. Beim Tilemap Collider Hacken bei Used By Composite setzen und den Rigidbody 2D Static machen (sonnst saust deine Tilemap nach unten ab).
  7. Hab jetzt nochmal in der Scripting API ein wenig geforscht, currentSector = Instantiate( sectors[GetSectorIndex(transform.position)]); Destroy(currentSector.gameObject); das macht was ich wollte 😃
  8. Ok, hier mal die ganze Klasse LevelManager. Ist nicht so lang. Ev fällt dir ja auch noch zur Verbesserung der Funktionen ein. using UnityEngine.Experimental.Rendering.Universal; using System.Collections.Generic; using UnityEngine; public class LevelManager : MonoBehaviour { [SerializeField] GameObject player; [SerializeField] List<Sector> sectors; int[,] sectorIndex; float minX, maxX, minY, maxY; Vector2 sectorSize = new Vector2(12, 9); Vector2 playerArea; Sector currentSector; void Start() { playerArea = sectorSize / 2 - Vector2.one; CreateSectorIndexArray(); // Set startsector transform.position = GetSectorPosition(player.transform.position); currentSector = sectors[GetSectorIndex(transform.position)]; Instantiate(currentSector); } private Vector2 GetSectorPosition(Vector2 pos) { pos.x += sectorSize.x / 2 * Mathf.Sign(pos.x); pos.y += sectorSize.y / 2 * Mathf.Sign(pos.y); pos.x = (int)(pos.x / sectorSize.x) * sectorSize.x; pos.y = (int)(pos.y / sectorSize.y) * sectorSize.y; return pos; } private void OnTriggerExit2D(Collider2D collision) { if (collision.gameObject != player) return; Vector2 pos = transform.position; Vector2 point = collision.ClosestPoint(pos); point -= pos; if (point.x > playerArea.x) pos.x += sectorSize.x; else if (point.x < -playerArea.x) pos.x -= sectorSize.x; else if (point.y > playerArea.y) pos.y += sectorSize.y; else if (point.y < -playerArea.y) pos.y -= sectorSize.y; Debug.Log($"New Positon: {pos}"); int index = GetSectorIndex(pos); if (index >= 0) { // currentSector.enabled = false; // DestroyImmediate(currentSector); Destroy(currentSector); // Destroy(currentSector.gameObject); currentSector = sectors[GetSectorIndex(pos)]; Instantiate(currentSector); transform.position = pos; } else Debug.Log($"No sector at {pos}"); } private void CreateSectorIndexArray() { minX = sectors[0].transform.position.x; maxX = minX; minY = sectors[0].transform.position.y; maxY = minY; foreach (Sector sec in sectors) { if (sec.transform.position.x < minX) minX = sec.transform.position.x; else if (sec.transform.position.x > maxX) maxX = sec.transform.position.x; if (sec.transform.position.y < minY) minY = sec.transform.position.y; else if (sec.transform.position.y > maxY) maxY = sec.transform.position.y; } int i = (int)((maxX - minX) / sectorSize.x) + 1; int j = (int)((maxY - minY) / sectorSize.y) + 1; sectorIndex = new int[i, j]; for (int k = 0; k < i; k++) { for (int l = 0; l < j; l++) { sectorIndex[k, l] = -1; } } float x,y; for (i = 0; i < sectors.Count; i++) { x = (sectors[i].transform.position.x - minX) / sectorSize.x; y = (sectors[i].transform.position.y - minY) / sectorSize.y; sectorIndex[(int)x, (int)y] = i; } } private int GetSectorIndex(Vector2 pos) { int x = (int)((pos.x - minX) / sectorSize.x); int y = (int)((pos.y - minY) / sectorSize.y); return sectorIndex[x, y]; } }
  9. Ich versuch seit Stunden per Script ein Instantiate Prefab(Clone) wieder aus der Hierarchy zu Entfernen ohne dabei das Prefab selbs zu beeinflussen. Das Prefab ist ein Variant Variant ... und Stellt den Sector eines Levels dar, der jenachdem wo sich der Player grade befindet, ein und ausgestellt wird. Hier mal ein Bild: Das kann doch nicht so schwer sein ?!?!
  10. Frage am Rande, was macht den Unterschied zwischen - public GameObject camera; - und - public Camera camera; - wenn eine Camera zugewiesen wird ?
  11. Wieder im dritten Abschnitt gescheitert 😫. War wohl der zehnte Versuch aber am 2ten Generator verknoten sich dann langsam meine Finger, der Rest des Lebens wird ausgehaucht und ich lande wieder ganz vorne. Macht schon Spass aber meine Reaktionen sind halt nicht mehr die besten. Die Flugmechanik find ich zudem sehr gelungen. Ein paar Sachen sind mir aufgefallen. Das Intro würd ich beim 2ten mal gern Überspringen und nicht immer nur ok,ok,ok drücken. Als Linkshänder benutze ich gerne die Pfeiltasten, das lässt sich zwar einstellen, wird aber noch nicht übernommen. Das Luftschiff ist an der Starttanke zu sehen, an der Zweiten, wo man damit startet, aber nicht wenn man sie Anfliegt. Die Tanken könnten vieleicht auch gekennzeichnet werden. Es hat einige Zeit gedauert bevor ich wusste wo ich nach Ableben neu gestartet bin. Ich könnte auch einen kleinen Lebensbonus zwischendurch mal vertragen. Ev. wenn man einige Tanks zerdeppert hat. Zuletzt fehte mir noch die obligatorische Sicherheitsabfrage wenn man das Spiel beendet. Achja, gefallen hat mir noch das man die Rohre zu Teil als Bande für die Bomben benutzen kann (ausbaufähig 😄). Weiter so.
  12. Moin, ich benutze camera.enabled = true oder false. Das funktioniert ohne Probleme.
  13. Entwarnung: NVidia hat nichts damit zu tun s.o. Nachdem ich es entfernt hatte war wieder alles schwarz. Hab die Zip-Datei nochmal runtergeladen. Und wenn man sie mit dem Explorer extrahiert erscheint das: Man sollte das ignorieren bzw. überspringen. Ich hatte beim ersten mal dann mit 7-Zip extrhiert, aber da war der Download wohl nicht mehr ganz sauber !?!? Naja, jetzt funktionierts auch wenn ich NVidia wieder einschalte. Zum Spiel komm ich dann später nochmal.
  14. Moin, habs jetzt auch mal runtergeladen und gestarted. nach dem zweiten Bild, Try out version, wirds schwarz, der Mauszeiger verschwindet und nichts passiert mehr. Ich komm dann nur noch über die Windowstaste raus und muss über die Taskleiste beenden. Es kann sein das nvidia dir da beim faden reinsemmelt:
  15. Stimmt, find ich aber nicht so Anfängerfreundlich.🙂
×
×
  • Create New...