Jump to content
Unity Insider Forum

MustafGames

Members
  • Content Count

    376
  • Joined

  • Last visited

  • Days Won

    4

MustafGames last won the day on February 20

MustafGames had the most liked content!

Community Reputation

10 Gut

About MustafGames

  • Rank
    Advanced Member

Recent Profile Visitors

1,242 profile views
  1. Grüße, habe Gestern mal auf 2019.2.5f1 geupdated von 2019.1.0f2, jetzt hat es in meiner Szene alles zurückgesetzt was ich eingestellt hatte im Inspector... Wie schlecht ist Unity bitte den gemacht das sowas passiert? 2. Problem wenn ich in meiner Tilemap ein Objekt platziere auf z-Achse 0 im Brush Menü und dann auf z-Achse 1 ein anderes platziere ist das von Achse 0 darüber? Manchmal kotzt Unity einfach nur ab.. MfG Mustaf
  2. Falls Sie an meinem Code eine Verbesserung finden, würde ich mich freuen, die Figur soll ja langsam immer schneller laufen bis zu einem gewissen Punkt solange Sie sich bewegt. Für alle die eine Lösung suchen wenn Sie einen Box Collider 2D benutzen als Character Collider und eine Tilemap nutzen. Ändert folgendes: Used by Composite im TilemapCollider2D aktivieren Rigidbody2D mit static aktiviert zur Tilemap hinzufügen CompositeCollider2D hinzufügen zur Tilemap. (Sollte das nicht klappen dann ein PhysicsMaterial2D hinzufügen und an den Einstellungen im Material basteln). Thema kann als gelöst markiert werden.
  3. Das Projekt ist frisch und Physics Materials benutze ich keine. Collider Option Grid nutze ich für die Tiles. Edit: Als Sort Mode für die Tilemap benutze ich Chunk, nur manchmal sortiert das ziemlich schlecht. Bei Individual muss ich ja die Transparency Sort Order ändern auf Custom, hast du für meine Variante (Draufsicht) da ein paar Tipps?
  4. Hallo, wenn ich mit meinem Rigidbody2D die Figur in eine Ecke des Spiels bewege, bleibt die Figur dort stecken. Die Figur hat einen BoxCollider2D und die Tilemap den TilemapCollider2D beiden sind auf Z Achse 0.
  5. Na so einfach wie du dir das bei mir vorstellst ist es nicht. Mein Projekt ist ein 2D Projekt, da Unity den NavMesh aber nicht für 2D Projekte aktuell vergeben hat, habe ich einen NavMeshSurface2D Script aus dem Netz implementiert, meine Figur ist komplex und doch gut strukturiert, da es ein Isometrisches Spiel ist muss noch einiges beachtet werden. Mein Hauptobjekt (mit NavMeshAgent und Movement Script) und Scale auf 1, 1, -0.1 damit es 2D wirkt. hat als Child ein Objekt welches nur die Rotation auf 22.5, -45, -22.5 setzt das hat wiederum dann als Child mein eigentliches Model, die Rotation muss hier gesetzt werden sonst sieht alles schlecht aus. Problem ist jetzt das wenn ich meinen Agent updateRotation auf false setzte, geht alles er läuft und so, nur die Figur schaut immer in die selbe Richtung. Lass ich update Rotation auf true, dreht er sich aber die Figur ist dann wie eine Scheibe und das sieht blöd aus. Jetzt muss ich die Rotation die der Agent auf sein Objekt setzt auf mein Model übertragen.
  6. Transform t = transform.GetChild(0).GetChild(0); Vector3 v = agent.velocity + transform.position; v.y = 0; t.LookAt(v); Rotiert trotzdem über alle Achsen, und wenn ich die Achsen nachträglich auf 0 setze, sieht es schrecklich aus.
  7. Grüße, mir geht gerade ein Problem auf die Nerven welches ich nicht gelöst bekomme, daher frag ich hier nach. Ich habe einen NavMeshAgent und dieser hat ja die Möglichkeit agent.updateRotation auf false zu setzen. jetzt geht alles nur die Figur dreht sich nicht, den das Model ist als Child Objekt des NavMeshAgent Objekts gegeben. Jetzt möchte ich das Child Objekt nur um die Y-Achse immer in die Richtung drehen wo mein Agent zuletzt hingesehen hat, nur wie? mit agent.velocity und LookAt rotiert es über alle 3 Achsen trotz das ich velocity.y auf 0 setze? Komme einfach nicht weiter! Mfg Mustaf
  8. Grüße, Zum selber nachtesten, braucht ihr nur eine Object als Spieler, welches in der Scene dann verschoben wird, ein Grid mit CellSize auf 1,1,0 und eine Tilemap mit Standartwerten. bin auf ein Problem gestoßen, wenn ich meine Welt generiere sieht es schon erstmal ganz gut aus, es werden immer die Chunks um dem Spieler herum generiert auch richtig angeordnet, etwas mittiger zum Spieler könnte es sein, es lädt immer dann die Chunks wenn der Spieler unten links in der Ecke ist. Problem 2: Die Noise sieht irgendwie komisch aus, als würde es die Positionen der Chunks nicht richtig berechnen, kann sein das ich irgendwo einen Tippfehler habe nur ich finde diesen nicht. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Tilemaps; [System.Serializable] public class Terrain { public string name; public float height; public TileBase tile; } public class WorldGeneration : MonoBehaviour { public Tilemap tilemap; public Terrain[] terrains; private int size = 10; private float scale = 50; private int octaves = 6; private float persistance = 0.55f; private float lacunarity = 1.92f; void Start () { tilemap.ClearAllTiles(); } void Update () { LoadChunks(); } public void LoadChunks () { Vector2Int pos = new Vector2Int((Mathf.RoundToInt(transform.position.x -5) / (size / 2)), Mathf.RoundToInt(transform.position.y -5) / (size / 2)); for (int x = -1 + pos.x; x <= 1 + pos.x; x++) { for (int y = -1 + pos.y; y <= 1 + pos.y; y++) { Vector2Int a = new Vector2Int(x, y); Vector2Int b = new Vector2Int(a.x * (size / 6), a.y * (size / 6)); //Debug.Log(b + ""); Vector2Int c = new Vector2Int(b.x - (size / 8), b.y - (size / 8)); float dist = Vector2.Distance(pos, c); //if (dist < 15) { Generate(b, false); //} else if (dist > 15) { // Generate(new Vector2Int(chunk_x, chunk_y), true); //} } } } public void Generate (Vector2Int pos, bool unload) { for (int x = (pos.x * size); x < (pos.x * size + size); x++) { for (int y = (pos.y * size); y < (pos.y * size + size); y++) { float noiseHeight = Noise(x, y); for (int t = 0; t < terrains.Length; t++) { Vector3Int tpos = new Vector3Int(x, y, t); if (!unload) { if (noiseHeight > terrains[t].height) { tilemap.SetTile(tpos, terrains[t].tile); } } else { tilemap.SetTile(tpos, null); } } } } } public float Noise (int x, int y) { float amplitude = 1; float frequency = 1; float noiseHeight = 0; for (int i = 0; i < octaves; i++) { float noise = Mathf.PerlinNoise((x - (size / 2)) / scale * frequency, (y - (size / 2)) / scale * frequency) * 2 - 1; noiseHeight += noise * amplitude; amplitude *= persistance; frequency *= lacunarity; } if (noiseHeight > 1) { noiseHeight = 1; } else if (noiseHeight < 0) { noiseHeight = 0; } return noiseHeight; } } Würde mich sehr freuen wenn Ihr es mal testen könntet und vielleicht sogar mir sagen könntet wo ich mich verschrieben habe. MfG Mustaf
  9. Edit: public void LoadChunks () { int new_size = size - 1; int playerx = Mathf.RoundToInt(player.position.x); int playery = Mathf.RoundToInt(player.position.y); Vector3Int cellpos = tilemap.WorldToCell(new Vector3(player.position.x, player.position.y, 0)); Vector2Int pos = new Vector2Int(playerx / new_size, playery / new_size); Debug.Log(cellpos); for (int x = -loadDistance; x <= loadDistance; x++) { for (int y = -loadDistance; y <= loadDistance; y++) { //Chunk Positionen um die Spielerposition -1, 0 1 etc.. Vector2Int a = new Vector2Int(x + pos.x, y + pos.y); //Chunk Positionen verwendtbar zum generieren in 16er Schritten Vector2Int b = new Vector2Int(a.x * new_size, a.y * new_size); //Das selbe nur auf die Mitte ausgerichtet Vector2Int c = new Vector2Int(b.x - (new_size / 2), b.y - (new_size / 2)); //Hier muss mal irgendwie die Position so stark ansteigen das es Mittig beim Spieler ist //Interessant ist das durch mein Grid sind 4.26F des Spielers = 16 Felder im Grid, irgendwie muss das mit einberechnet werden? Vector2Int d = new Vector2Int(c.x, c.y); Vector2Int lastpos = new Vector2Int(d.x, d.y); Komme gerade überhaupt nicht weiter, einziges Erkenntnis ist mein Kommentar über Vector2Int d. Vielleicht hat von euch jemand eine Idee? Edit 2: Lösung gefunden, ist abhängig von den Einstellungen im Grid, bedeutet bei einer Grid Größe von 0,26f muss das hinzugefügt werden: int AlphaX = Mathf.RoundToInt(player.position.x / 4.26f) * new_size; int AlphaY = Mathf.RoundToInt(player.position.y / 4.26f) * new_size; Vector2Int d = new Vector2Int(c.x + AlphaX, c.y + AlphaY); Nächstes Problem ist folgendes: float dist = Vector2.Distance(lastpos, pos); if (dist < loadAndUnload.x) { Generate(lastpos, false); } else if (dist > loadAndUnload.y) { Generate(lastpos, true); } Ich versuche nun Abhängig von der Position des Spielers und des äußersten Chunks, Chunks zu laden oder zu deaktivieren. Hab das nur noch nie gemacht und bräuchte da vielleicht nen Anstups.
  10. Hallo, ich komme gerade nicht drauf, ich lade 1 Reihe im Moment um den Chunk der beim Spieler ist herum, jedoch sind die Chunks nicht im Raster angeordnet, bewegt sich der Spieler nur leicht, werden auch die Chunks nur verschoben und nicht im Raster angeordnet. Das ganze funktioniert über einer Tilemap. Frage ist nun wo hab ich falsch gerechnet und müsste es anders machen? Variable size bedeutet die Chunkgröße in diesem Fall 16 bzw. 17. LoadDistance ist bei 1 also eine Chunk-Reihe um den Spieler herum. public void LoadChunks () { Vector3Int cellpos = tilemap.WorldToCell(new Vector3(player.position.x, player.position.y, 0)); Vector2Int pos = new Vector2Int(cellpos.x - (size / 2), cellpos.y - (size / 2)); for (int x = -loadDistance; x <= loadDistance; x++) { for (int y = -loadDistance; y <= loadDistance; y++) { Vector2Int lastpos = new Vector2Int(pos.x + (x * size), pos.y + (y * size)); float dist = Vector2.Distance(lastpos, pos); if (dist < loadAndUnload.x) { Generate(lastpos, false); } else if (dist > loadAndUnload.y) { //Generate(lastpos, true); } } } } MfG Mustaf Hoffe bei meinen schwer verständlichen Erklärungen kann trotzdem jemand es verstehen.
  11. Na ich habs jetzt ganz einfach gemacht und alle Sprites (Tiles) einfach mit einer Outline per Paint Programm versehen.
  12. Grüße, kennt jemand von euch einen Weg den Outline Effect auf eine Tilemap zu wirken? Mfg Mustaf
  13. Ja hab ich aber hatte auch im übergeordneten Objekt die Rotation geändert aber das muss man im untergeordneten machen, jetzt sieht es super aus. Danke Leute.
×
×
  • Create New...