Jump to content
Unity Insider Forum

Schokokeks15

Members
  • Content Count

    7
  • Joined

  • Last visited

Community Reputation

1 Neutral

About Schokokeks15

  • Rank
    Newbie
  1. 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
  2. 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
  3. @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
  4. 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
  5. @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
  6. 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
  7. 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...