Jump to content
Unity Insider Forum

Schokokeks15

Members
  • Content Count

    13
  • Joined

  • Last visited

Community Reputation

1 Neutral

About Schokokeks15

  • Rank
    Member
  1. Hallo nochmal, stellen wir uns nochmal ein Spiel wie "Syndicate" vor. Es gibt Häuser, Straßen, Lampen etc. Dinge, die sich eigentlich (!) wiederholen. Im Orginal ein Tileset, wo ich mir was zusammenstellen kann. Aber, um bei dem Beispiel zu bleiben, ich möchte nicht einfach ein Straßen-Tlle neben ein anderes packen, wo eins wie das andere aussieht (wenn es z.B. eine lange Straße ist), sondern mal da einen Abfluss einbauen, dort ein Schlagloch und ich möchte über einen Teil der Straße eine Bremsspur einbauen. Aber nur da, wo ich will. Es kann ja mehrere Straßen geben. Im Laufe der Länge der Straße soll sich auch die Textur ändern... All das, unabhängig von der Größe oder Länge der Straße... Mache ich das am effektivsten über viele, viele Renderings in meinem 3D-Programm und zahllose Tiles, oder erstelle ich in meinem 3D-Programm die ganzen Strassen (wobei die Texturgröße ein Problem werden könnte, oder gibt es eine andere Möglichkeit? Indem ich z.B. in Unity 1km Straße als Cube erzeuge und die Textur darauf verteilen kann?) Am besten gleich mit dem Gehweg dazu? Weil der sieht ja wieder ganz anders aus... 😉 Ich hoffe, das ist nicht zu theoretisch. Mir geht es um den effektivsten Ablauf dabei. Vielen herzlichen Dank und nicht hauen. Ich habe vor dieser Frage hier viel recherchiert und keine Antwort gefunden die sagt "Ja, Nein, SoundSo"... Es geht mir einfach um das Verständnis. Nochmals Danke und ein schönes Wochenende, Schokokeks
  2. Ich finde es übrigens super, dass Du zum lernen anregst und nicht einfach etwas machst und postest, weil Du weißt wie es geht, sondern nur den Tritt in die richtige Richtung angibst und auch noch eine gute und logische Erklärung dazu abgibst. Das machen hier bestimmt auch viele andere Mitglieder so. Aber ich wollte das mal gesagt haben. Denn nur so lernt man was und ist nicht nur die ganze Zeit am kopieren und einfügen... Nochmals vielen Dank, Schokokeks PS: Beatboxing kenne ich, aber Greyboxing muss ich googeln... 🙂 🙂 🙂
  3. HeyHo... ich hab´s hinbekommen!!! Und mein Lernniveau ist mächtig gestiegen! Vielen Dank nochmal!!! Musste dem leeren Gameobjekt die Position und Rotation der Kamera geben. Dann bei der Kamera die Werte auf 0. Bei Player Pivot das neue GameObjekt rein ziehen (das meintest Du vorhin^^), und das Movement-Script anpassen, wie Du es oben angegeben hattest. Habe ich was vergessen?^^ Danke Dir und noch ein schönes Wochenende. Und die nächsten Fragen von mir kommen bestimmt... 😉 Viele Grüße, Schokokeks
  4. Und Deine Meinung zu den anderen Fragen sind auch sehr hilfreich gewesen! Habe ich eben vergessen, noch zu erwähnen... 😉
  5. Hallo Sascha, vielen Dank für Deine sehr ausführliche Antwort. Diese hilft mir auf jeden Fall weiter. Ich bin zwar noch am grübeln, was Du genau mit "in das Feld reinziehen" meinst, aber ich komme schon noch dahinter. Denn wenn ich einfach nur deine beiden Codezeilen in das Script für die Player-Bewegung einbaue, passiert auf Tastendruck leider gar nichts. Eventuell ist es aber auch zu spät und ich habe etwas ganz wesentliches übersehen... Nochmals vielen Dank und Dir noch einen schönen Samstag Abend, Schokokeks
  6. Hallo zusammen, habe ein paar kurze Frage, denn ich bin beim durchsuchen des Forums und von Google nicht fündig geworden (eventuell ist auch nur meine Brille dreckig)... Ich bin absoluter Anfänger in Unity, habe aber schon so einiges mit dem Survival Tutorial gelernt. Aber ich verstehe noch einige Sachen nicht ganz und brauche daher dringend ein paar Anregungen von Euch: 1. Im PlayerMovement-Script steht unter anderem das hier: void FixedUpdate () { // Store the input axes. float h = CrossPlatformInputManager.GetAxisRaw("Horizontal"); float v = CrossPlatformInputManager.GetAxisRaw("Vertical"); // Move the player around the scene. Move (h, v); // Turn the player to face the mouse cursor. Turning (); // Animate the player. Animating (h, v); } void Move (float h, float v) { // Set the movement vector based on the axis input. movement.Set (h, 0f, v); // Normalise the movement vector and make it proportional to the speed per second. movement = movement.normalized * speed * Time.deltaTime; // Move the player to it's current position plus the movement. playerRigidbody.MovePosition (transform.position + movement); } Frage: Wenn ich die Kamera auf Position -5, 8, -8, Rotation 45, 45, 0 stelle, habe ich eine schöne ISO-Perspektive. Wenn ich nun "W" drücke, möchte ich, das mein Player wirklich nach "Norden" läuft und nicht nach "NordOst". Also nicht entlang der X-Achse. War das verständlich beschrieben? ;-) 2. Wenn ich mir einen Level im 3D-Modus zusammen bastle (nehmen wir als Beispiel für die Ansicht das "alte" Spiel "Crusader No Regret" oder "Syndicate" ), würdet Ihr in Blender den gesamten Level bauen und dann komplett importieren, oder nur die Böden und Wände und dann die Objekte dazu, oder alles als ein Tile erstellen und einfügen? Inwieweit würdet ihr mit den Cubes und Planes in Unity arbeiten und nur die Texturen drauf packen? Oder alles in 3D-Programmen wie Blender erstellen und importieren? Vielen Dank und bitte nicht hauen, wegen diesen dummen Fragen. Euch noch einen schönen Samstag, -Schokokeks
  7. Hallo Lightstorm, das verstehe ich jetzt nicht. Habe es versucht so zu lösen: using UnityEngine; public class SphereMovement : MonoBehaviour { new private Rigidbody2D rigidbody2D; public float speed = 1f; public float speedstop = 0f; private bool movingRight = true; private bool m_FacingRight = true; public LayerMask groundLayer; bool IsGrounded() { Vector2 position = transform.position; Vector2 direction = Vector2.down; float distance = 1.0f; RaycastHit2D hit = Physics2D.Raycast(position, direction, distance, groundLayer); if (hit.collider != null) { return true; } return false; } private void Awake() { rigidbody2D = GetComponent<Rigidbody2D>(); } private void FixedUpdate() { if (!IsGrounded()) { var horizontalMovement = speed * (movingRight ? 1 : -1); rigidbody2D.velocity = new Vector2(horizontalMovement, 0); } else { var horizontalMovement = speedstop * (movingRight ? 1 : -1); rigidbody2D.velocity = new Vector2(horizontalMovement, 0); } } private void OnCollisionEnter2D() { movingRight = !movingRight; m_FacingRight = !m_FacingRight; Vector3 theScale = transform.localScale; theScale.x *= -1; transform.localScale = theScale; } } Leider ohne Erfolg. Stehe total auf dem Schlauch... Übrigens, wenn ich ab morgen nicht mehr nerven sollte, ich bin für eine Woche beruflich unterwegs...^^ Besten Dank und Dir und Euch ein schönes Wochenende, Alex
  8. Ah, verstehe. Alles klar. Danke! Du hast es angeboten, also komme ich mal drauf zurück. Ich habe ein wenig "gespielt" und einige Zusammenhänge gelernt. Aber jetzt hänge ich seit einiger Zeit an folgendem Problem fest. Und zwar soll ein Ball solange in eine Richtung rollen, bis er gegen einen Collider stößt. Dann soll er in die entgegengesetzte Richtung zurück rollen. Das klappt schon mal. Wenn nun ein Loch im Boden ist, soll er durchfallen. Das geht auch. Aber ich jetzt zwei Probleme: Erstens rollt bzw. bewegt sich der Ball weiter in die jeweilige Rollrichtung, wenn er fällt. Er soll aber wie ein Stück Blei einfach nach unten fallen und die Rollanimation soll stoppen. Zweitens soll der Ball nicht, wenn er auf den Boden aufkommt (was für ihn auch ein Collider ist) sofort dir Richtung ändern. Für den Groundcheck mittelt Raycast habe ich mich übrigens entschieden, weil so die Sprites nicht mehr an den einzelnen Bodentiles nicht mehr hängen bleiben...^^ Ich habe es mit folgende Code versucht. Wo ist hier mein Denkfehler? using UnityEngine; public class SphereMovement : MonoBehaviour { new private Rigidbody2D rigidbody2D; public float speed = 1f; private bool movingRight = true; private bool m_FacingRight = true; public LayerMask groundLayer; bool IsGrounded() { Vector2 position = transform.position; Vector2 direction = Vector2.down; float distance = 1.0f; RaycastHit2D hit = Physics2D.Raycast(position, direction, distance, groundLayer); if (hit.collider != null) { return true; } return false; } bool IsBlocked() { Vector2 position = transform.position; Vector2 direction = Vector2.right; float distance = 1.0f; RaycastHit2D hit = Physics2D.Raycast(position, direction, distance, groundLayer); if (hit.collider != null) { return true; } return false; } private void Awake() { rigidbody2D = GetComponent<Rigidbody2D>(); } private void FixedUpdate() { if (!IsGrounded()) { var horizontalMovement = speed * (movingRight ? 1 : -1); rigidbody2D.velocity = new Vector2(horizontalMovement, 0); } if (!IsBlocked()) movingRight = !movingRight; m_FacingRight = !m_FacingRight; Vector3 theScale = transform.localScale; theScale.x *= -1; transform.localScale = theScale; } } Vielen Dank und einen schönen und erholsamen Abend, Alex
  9. @Lightstorm: Wow, das sind viele hilfreiche Infos. Da muss ich jetzt erstmal vieles im Kleinen testen und verstehen. Vielen Dank dafür. Momentan stehe ich vor einem grundlegenden Verständnisproblem (bitte nicht lachen): Aber warum packst Du für die Character-Steuerung nicht alles in ein Script? Wo die PlayerInputs drin stehen, die entsprechenden Animationen und Sprite-Movements ausgeführt werden, geprüft wird, ob der Character "onGround" ist usw.? So, ich lese dann mal in Deinem Link weiter... 😉 Nochmals herzlichen Dank, -Alex
  10. Hallo Lightstorm, vielen Dank für Deine sehr ausführliche Antwort. Das macht alles absolut Sinn, was Du schreibst. Leider bin ich kein Programmierer, daher wird es nicht einfach. Aber ich verstehe was Du meinst und es ist ja noch kein Meister vom Himmel gefallen... 😉 Ich denke, ich werde das so machen: wenn zwei Scripte funktionieren, kann ich ja versuchen, die miteinander zu verbinden und die Einstellungen über den Editor zu machen. Erst mal was ganz Einfaches und dann halt mehr und mehr...^^ Nochmals herzlichen Dank und noch einen schönen Tag, Alex
  11. @Lightstorm: vielen Dank für Deinen Tip. Der erste Hinweis mit den Triggern ist sicherlich der Bessere. Denn es soll verhindert werden, dass wenn sich eine Tür schließt, oder plötzlich eine Pflanze vor dem Gegners wächst wird, dass sich der Gegner in dem Objekt "festfrisst". Es soll also nicht möglich sein, ein Objekt in den Weg des Gegners zu packen, wenn dieser den "Tile" betreten hat... @Sascha: Dein Script funktioniert wunderbar. Muss jetzt nur noch erreichen, dass sich der Gegner in die andere Richtung dreht, nachdem er auf den Collider getroffen ist. Aber das kriege ich hin... Nochmals Danke!!! Alex
  12. Hallo Sascha, vielen Dank für Deine Antwort. Diese hilft mir auf jeden Fall weiter. Auch Deine Erklärungen zum RigidBody sind einleuchtend und sehr gut erklärt. In diesem Zusammenhang werde ich Dein Script gleich mal ausprobieren und ansonsten weiter lernen, lernen, lernen... Das die letzte Frage nicht sooo trivial ist...naja, da wische ich mir schon mal die Schweißperlen von der Stirn... 😉 Nochmals herzlichen Dank und einen schönen Abend, Alex
  13. Hallo zusammen, ich bin neu hier und sage erst einmal Hallo! Hallo! So, jetzt bitte nicht hauen, aber ich habe das Forum und Google durchgesehen, aber nichts gefunden was mir hilft. Daher hier eine Frage: Es geht um ein reines 2D-Plattform-Spiel. Ohne scrollen. Ich habe einen Gegner erstellt, der sich nur entlang der X-Achse bewegen soll. Bis er auf einen Box-Collider stößt. Egal, ob damit der "Rahmen", der "Boden" oder ein "Tile" gemeint ist. Dann soll er sich drehen und in die entgegengesetzte Richtung zurück laufen, bis er wieder auf ein Hindernis stößt. Mehr soll der gar nicht machen. Nicht schießen, nicht den Spieler suchen oder sonst irgendwas. Stumpf von links nach rechts bis ein Hindernis auftaucht. Oh, doch - der Gegner soll eine weitere Animation ausführen, wenn er auf ein Hindernis stößt - und zwar soll er sich in die jeweils andere Richtung drehen. Ich habe zwar ein paar Sachen im Internet gefunden, aber die passen alle nicht. Habe die Version 2018.3.4. Ich will Euch gar nicht die Zeit stehlen und eine fertige Script-Lösung haben, sondern nur gern wissen, wo ich ein Tutorial zum lernen finde, wie ich das ganze anstelle. Denn es stellen sich mir folgende Fragen: 1. Was muss in das Script rein? 2. Was muss ich wie im Animator anpassen? 3. Welche Einstellungen und "Components" werden bei dem Gegner benötigt? 4. Wie kriege ich das hin, dass wenn sich der Gegner an bzw. in der Position einer Tür befindet und diese sich schließen soll, dies nicht mehr geht? Sonst bleibt er ja stecken...^^ Ich weiß, viele für Euch lächerliche Fragen, aber mich treiben diese schon seit Tagen um, da ich wie gesagt noch kein entsprechendes Tutorial im Internet gefunden und seitdem mehr als nur ein Brett vor dem Kopf habe. Also würde ich mich über einen Stupser in die richtige oder einen Hinweis auf einen Link oder sonstige Hilfe sehr freuen. Vielen Dank und Euch allen noch einen schönen Abend, Alex
×
×
  • Create New...