Jump to content
Unity Insider Forum

wARmAcH1n3

Members
  • Posts

    28
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by wARmAcH1n3

  1. Gestern haben zwei Kumpels mein Spiel getestet und beide haben sich gewünscht, auch diagonal schiessen zu können. Ich weiss nicht. Zum einen wäre das ein höherer Aufwand, das stört mich nicht, aber das komplette Gamedesign wird verändert. Ich bin mir echt nicht sicher. So kann man dann auch nicht mehr nach links oder rechts laufen und gleichzeitig nach oben schiessen. Was meint ihr? Soll ich diagonal schiessen besser reinmachen? Mir gefällt persönlich das Spiel so wie es ist. Aber vielleicht macht es mehr Spass mit dem diagonal schiessen.
  2. Level 11 ist fertig, mit neuen Grafikset. Ich habe für diesen Level glaube ich nur 2 Tage gebraucht. Aber ich habe etwas Sorge um Inspiriation, so dass ich die nächsten 17 abwechslungsreich und originell gestalten kann.
  3. Soweit Sound und Musik reingemacht. Den Endgegner habe ich noch überarbeitet und verbessert, jetzt hat auch er einen Schadensbalken. Ich habe auch an den Optionsmenüs gearbeitet und bin zufrieden. Den Input habe ich mit "Rewired" umgesetzt.
  4. Danke für den Tip, ein Lied gefällt mir schonmal sehr gut, diesen werde ich auch kaufen. Werde mir alle ihre Lieder anhören. Werde mir auch alle kostenlosen Lieder im Asset Store anhören müssen. Und alle kostenpflichtigen Synthwave Lieder. Ich will sichergehen, alle Quellen optimal abzuschöpfen. Dies wird wieder viel Zeit kosten. Mal sehen ob ich 4 Lieder oder 10 Lieder zusammenkriege. Ich habe 3 mal 10 Levels, so sind es entweder 1 Lieder auf 9 Levels oder 3 Lieder auf 9 Levels plus ein Lied für die 3 Endgegner. Die Schwierigkeit ist auch, dass die Lieder in einen ähnlichen Stil sein sollen.
  5. Ich habe auf deinen Rat gehört und die letzten Tage am Sound gearbeitet. Ich habe dann vom Asset Store über 9.000 Sounddateien runtergeladen und mir davon 15-20 Sounds rausgepickt. Es war viel Arbeit aber ich bin zufrieden mit meinen Ergebnis. Die meisten Sounds waren sogar kostenlos. Jetzt muss ich das Gleiche machen mit der Musik. Kennt jemand von Asset Store einen guten Dark Synthwave Soundtrack? Die Auswahl ist so riesig!
  6. Gute Idee mit dem Schadensbalken. Ich werde in mich gehen und darüber nachdenken. Ich habe den Boss noch härter gemacht und mehr Hitpoints gegeben. Ist aber gut schaffbar wenn man die Taktik kennt.
  7. 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. 🙂
  8. 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:
  9. Ich habe beschlossen, die Pixel Skys zu kaufen und auszuprobieren. Kostet ja nicht viel, ist mir den Versuch wert.
  10. 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
  11. 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!
  12. 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/
  13. 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?
  14. Leveldesign und Programmierung von mir, Grafiken sind aus dem Asset-Store.
  15. 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;
  16. 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
  17. 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.
  18. 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.
  19. Was meinst du genau? Wie kann ich das anders im Editor machen?
  20. Ich habe nochmal geschaut, der Garbage Collector ist es nicht, der Spike ist nur in der Kategorie "Others" drin.
×
×
  • Create New...