Jump to content
Unity Insider Forum

wARmAcH1n3

Members
  • Posts

    19
  • Joined

  • Last visited

  • Days Won

    4

wARmAcH1n3 last won the day on February 28

wARmAcH1n3 had the most liked content!

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

wARmAcH1n3's Achievements

Member

Member (2/3)

6

Reputation

  1. Es ist sonst zu leicht und der Spass dauert dann nur 2,5 Minuten, das ist zu einfach. Habe ja auch 3 Heilungsitems in der Map verteilt. 🙂
  2. Die Alpha-Version vom ersten Boss ist fertig. Die Grafik fĂŒr den Boss habe ich selber erstellt, aus bestehenden Grafiken aus dem Internet. Der Boss wird noch mehr Hitpoints bekommen als im Video:
  3. Ich habe beschlossen, die Pixel Skys zu kaufen und auszuprobieren. Kostet ja nicht viel, ist mir den Versuch wert.
  4. Ich habe es jetzt hingekriegt, die Skybox pixelart-mÀssig darzustellen. Aber ich bin mir nicht sicher ob das ausreichend harmonisch zu den anderen Grafiken ist. Was meint ihr? Soll ich nicht lieber dieses Asset kaufen oder den Himmel so lassen wie in meinen 2 Bildern? https://assetstore.unity.com/packages/2d/environments/pixel-skies-background-pack-205562
  5. Danke fĂŒr deine Worte und Kritik. Um den Sound will ich mich spĂ€ter kĂŒmmern, aber vielleicht hast du Recht und ich sollte das Sound-reinmachen vorziehen, damit die Videos auch Sound haben. Mal ĂŒberlegen. Die Transparenz der Figur zeigt die temporĂ€re Unverwundbarkeit des Spielers kurz nach einen Treffer an. Ich bin abhĂ€ngig von den Grafiken die mir der AssetStore liefert. Ja die grauen Plattformen sind noch etwas zu grob, werde mal danach schauen um sie zu verbessern. Die grĂŒnen Plattformen habe ich selber erstellt, aus einer gelieferten Vorlage. Leider habe ich mal Grafiken, die sind 32 Pixel per Unit und manche sind mit 16 Pixel per Unit. Das kann ich leider nicht verhindern, beziehungsweise erachte ich das als zu aufwendig, weil ja auch schon 5 Levels fertig sind. Der Hintergrund ist eine HDR-Skybox. Ich habe versucht, das HDR-Bild mit niedriger Auflösung zu ersetzen, aber dies war dann nicht pixelart-mĂ€ssig sondern wurde in der geringen Auflösung weich gezeichnet. Muss dafĂŒr noch eine Lösung finden in der Zukunft, um den Himmel auch in Pixelart darzustellen. Momentan gebe ich mich noch zufrieden, aber dieses Thema will ich auch in der Zukunft angehen. Die Grafiken der Gegner versuche ich auszutauschen, wenn ich in der Zukunft einen Grafiker finden kann. Das Verhalten der Gegner-KI will ich aber so beibehalten. Die Spieler-Figur ist nur ein Dummy. Das jetzige Dummy erfĂŒllt seinen Zweck aber er wird als erstes ersetzt, wenn ich einen Grafiker finde. Danke fĂŒr deine Gedanken!
  6. Danke, ich stecke viel Liebe rein. Das ist das erste mal dass ich damit Geld verdienen will. FrĂŒher habe ich Mods gemacht: https://warmach1n3.wordpress.com/
  7. Ich habe etwas an der QualitĂ€t gearbeitet. Der Spielercharakter ist ein Platzhalter. Bei den Feinden ist es noch nicht sicher. Der diagonale Boden ist nicht endgĂŒltig. Die Grafiken sind vom Asset Store. Was meint ihr? Ist die QualitĂ€t ok?
  8. Leveldesign und Programmierung von mir, Grafiken sind aus dem Asset-Store.
  9. Ich habe es hingekriegt, ein Skript, das die Map kopiert und an die Tilemap angehĂ€ngt ist. Die Position und die RĂ€nder der Map stelle ich manuell ein. using UnityEngine; using UnityEngine.Tilemaps; public class GroundTilemapScript : MonoBehaviour { public GameObject tileMapPreflab; protected Tilemap tileMapComponent; protected Tilemap[] tileMapClone = new Tilemap[8]; public Vector2Int tileMapPosition; public Vector2Int tileMapSize; protected static bool hasDone = false; public Grid grid; public float tileMapBorderLeftPosition; public float tileMapBorderRightPosition; public float tileMapBorderTopPosition; public float tileMapBorderBottomPosition; // Start is called before the first frame update void Awake() { tileMapBorderLeftPosition = (float)tileMapPosition.x - (((float)tileMapSize.x) / 2f); tileMapBorderRightPosition = (float)tileMapPosition.x + (((float)tileMapSize.x) / 2f); tileMapBorderTopPosition = (float)tileMapPosition.y + (((float)tileMapSize.y) / 2f); ; tileMapBorderBottomPosition = (float)tileMapPosition.y - (((float)tileMapSize.y) / 2f); ; } void Start() { if(!hasDone) { tileMapComponent = tileMapPreflab.GetComponent<Tilemap>(); tileMapClone[0] = Tilemap.Instantiate(tileMapComponent); tileMapClone[0].transform.SetParent(grid.gameObject.transform); tileMapClone[0].transform.position = Vector2.left * tileMapSize.x + Vector2.up * tileMapSize.y; tileMapClone[0].transform.position += tileMapComponent.transform.position; tileMapClone[1] = Tilemap.Instantiate(tileMapComponent); tileMapClone[1].transform.SetParent(grid.gameObject.transform); tileMapClone[1].transform.position = Vector2.left * tileMapSize.x; tileMapClone[1].transform.position += tileMapComponent.transform.position; tileMapClone[2] = Tilemap.Instantiate(tileMapComponent); tileMapClone[2].transform.SetParent(grid.gameObject.transform); tileMapClone[2].transform.position = Vector2.left * tileMapSize.x + Vector2.down * tileMapSize.y; tileMapClone[2].transform.position += tileMapComponent.transform.position; tileMapClone[3] = Tilemap.Instantiate(tileMapComponent); tileMapClone[3].transform.SetParent(grid.gameObject.transform); tileMapClone[3].transform.position = Vector2.up * tileMapSize.y; tileMapClone[3].transform.position += tileMapComponent.transform.position; tileMapClone[4] = Tilemap.Instantiate(tileMapComponent); tileMapClone[4].transform.SetParent(grid.gameObject.transform); tileMapClone[4].transform.position = Vector2.down * tileMapSize.y; tileMapClone[4].transform.position += tileMapComponent.transform.position; tileMapClone[5] = Tilemap.Instantiate(tileMapComponent); tileMapClone[5].transform.SetParent(grid.gameObject.transform); tileMapClone[5].transform.position = Vector2.right * tileMapSize.x + Vector2.up * tileMapSize.y; tileMapClone[5].transform.position += tileMapComponent.transform.position; tileMapClone[6] = Tilemap.Instantiate(tileMapComponent); tileMapClone[6].transform.SetParent(grid.gameObject.transform); tileMapClone[6].transform.position = Vector2.right * tileMapSize.x; tileMapClone[6].transform.position += tileMapComponent.transform.position; tileMapClone[7] = Tilemap.Instantiate(tileMapComponent); tileMapClone[7].transform.SetParent(grid.gameObject.transform); tileMapClone[7].transform.position = Vector2.right * tileMapSize.x + Vector2.down * tileMapSize.y; tileMapClone[7].transform.position += tileMapComponent.transform.position; hasDone = true; } } private void OnDrawGizmosSelected() { Gizmos.color = Color.blue; Gizmos.DrawWireCube((Vector2)tileMapPosition, (Vector2)tileMapSize); Gizmos.DrawWireSphere((Vector2)tileMapPosition, 10f); } } Das an die GameObjects (Feinde, Kugeln und andere) angehĂ€ngte Skript. Es berechnet die kĂŒrzeste Entfernung zum Spieler aus den möglichen Transportpositionen und nutzt diese Position fĂŒr den Transport: using UnityEngine; public class CheckObjectPositionScript : MonoBehaviour { protected GameObject player; protected SupanthaPaul.PlayerController playerCheck; private Vector3 objectPosition; private Vector3 playerPosition; // Start is called before the first frame update protected virtual void Start() { player = FindAnyObjectByType<SupanthaPaul.PlayerController>().gameObject; playerCheck = player.GetComponent<SupanthaPaul.PlayerController>(); } // Update is called once per frame protected virtual void FixedUpdate() { bool change = false; objectPosition = transform.position; playerPosition = player.transform.position; float distanceObjectX = Mathf.Abs(objectPosition.x - playerPosition.x); float distanceObjectXRight = Mathf.Abs((objectPosition.x + playerCheck.tileMapSize.x) - playerPosition.x); float distanceObjectXLeft = Mathf.Abs((objectPosition.x - playerCheck.tileMapSize.x) - playerPosition.x); float distanceObjectY = Mathf.Abs(objectPosition.y - playerPosition.y); float distanceObjectYTop = Mathf.Abs((objectPosition.y + playerCheck.tileMapSize.y) - playerPosition.y); float distanceObjectYBottom = Mathf.Abs((objectPosition.y - playerCheck.tileMapSize.y) - playerPosition.y); if (distanceObjectX < distanceObjectXRight && distanceObjectX < distanceObjectXLeft) { } else if (distanceObjectXRight < distanceObjectXLeft) { change = true; objectPosition.x += (float)playerCheck.tileMapSize.x; } else { change = true; objectPosition.x -= (float)playerCheck.tileMapSize.x; } if (distanceObjectY < distanceObjectYTop && distanceObjectY < distanceObjectYBottom) { } else if (distanceObjectYTop < distanceObjectYBottom) { change = true; objectPosition.y += (float)playerCheck.tileMapSize.y; } else { change = true; objectPosition.y -= (float)playerCheck.tileMapSize.y; } transform.position = objectPosition; if (change) Debug.Log(gameObject.name +" "); } } Das dem Player beigefĂŒgte Skript: playerPosition = transform.position; if (playerPosition.x > tileMapBorderRightPosition) { playerPosition.x -= (float)tileMapSize.x; } else if (playerPosition.x < tileMapBorderLeftPosition) { playerPosition.x += (float)tileMapSize.x; } if (playerPosition.y > tileMapBorderTopPosition) { playerPosition.y -= (float)tileMapSize.y; } else if (playerPosition.y < tileMapBorderBottomPosition) { playerPosition.y += (float)tileMapSize.y; } transform.position = playerPosition;
  10. Die Map ist grĂ¶ĂŸer als der Bildschirm, so ungefĂ€hr 2-4 mal die BildschirmgrĂ¶ĂŸe. Die Gegner und der Player sollen sich frei bewegen innerhalb des Levels ohne LevelrĂ€nder. Das Problem ist wenn der Spieler zum Beispiel links vom rechten Rand ist und der Gegner rechts vom rechten Rand, dass der Gegner nicht in die Mitte versetzt wird, sondern erst wenn der Spieler ĂŒber den rechten Rand geht, dann soll der Spieler und der Gegner in den mittleren Bereich unbemerkt versetzt werden (und am linken Rand rauskommen), um so das GefĂŒhl zu erzeugen, dass die Map sich unendlich wiederholen kann, wenn man immer in eine Richtung geht. So wie in diesen Spiel (mein Vorbild): Teddy Boy
  11. Ach so, nein das mache ich nicht, ist bei mir das gleiche Fenster. Aber irgendwie muss dieser FPS Drop im Editor doch ein Bug von Unity sein. Werde den mal melden in der offiziellen Unity Seite.
  12. Ich möchte, dass eine 2D-Plattformer Map sich wiederholt. Damit meine ich, dass wenn ich am rechten Rand vorbei gehe, dass ich auf dem linken Rand wieder rauskomme. Genauso wie mit oben und unteren RĂ€ndern. Ich habe mir ĂŒberlegt, die gesamte Map, an die RĂ€nder zu kopieren, so dass die Map immer durch die Kopien am den RĂ€ndern umschlossen ist. Und dann irgendwie durch die Gameobjekt.transform.position im Script den Spieler und die Feinde immer bei der GrenzĂŒberschreitung wieder in die Mitte zu versetzen. Gibt es da vielleicht einen einfacheren Weg? Dass die Map dann insgesamt dann 9 mal vorkommt in der Scene ist doch etwas unpraktisch.
  13. Was meinst du genau? Wie kann ich das anders im Editor machen?
×
×
  • Create New...