MustafGames Geschrieben 12. September 2019 Melden Share Geschrieben 12. September 2019 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. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Movement : MonoBehaviour { Rigidbody2D rb; Animator ani; BoxCollider2D col; public float curSpeed; public float maxSpeed = 2.0f; public Vector2 curDir; public float curVel; public float smooth = 0.4f; void Awake () { this.gameObject.AddComponent<BoxCollider2D>(); col = GetComponent<BoxCollider2D>(); col.offset = new Vector2(0, -0.065f); col.size = new Vector2(0.125f, 0.125f); this.gameObject.AddComponent<Rigidbody2D>(); rb = GetComponent<Rigidbody2D>(); rb.gravityScale = 0; rb.constraints = RigidbodyConstraints2D.FreezeRotation; ani = GetComponent<Animator>(); } void Update () { ani.SetFloat("X", Input.GetAxisRaw("Horizontal")); ani.SetFloat("Y", Input.GetAxisRaw("Vertical")); } void FixedUpdate () { if (Input.GetAxisRaw("Horizontal") != 0 || Input.GetAxisRaw("Vertical") != 0) { curDir = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")); curSpeed = Mathf.SmoothDamp(curSpeed, maxSpeed, ref curVel, smooth); curDir.Normalize(); rb.MovePosition(rb.position + (curDir * curSpeed) * Time.fixedDeltaTime); } else { curDir = Vector2.zero; curVel = 0; curSpeed = 0; } } } MfG Mustaf Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 12. September 2019 Melden Share Geschrieben 12. September 2019 Muss irgendwie am Setup der Tiles liegen oder an Physics Materials, denn mit dem Script alleine kann ich das Problem nicht reproduzieren. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MustafGames Geschrieben 12. September 2019 Autor Melden Share Geschrieben 12. September 2019 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? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MustafGames Geschrieben 12. September 2019 Autor Melden Share Geschrieben 12. September 2019 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. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.