- Home /
Sprite Gets Stuck With Frozen Rotation
I am trying to prototype a simple platformer game. My actual project is quite complicated, but I reproduced the same problem I am having with the following minimal steps:
Create a tilemap, draw several PlatformWhiteSprite from Standard Assets next to each other to make a platform.
Create a square sprite, add BoxCollider2D and a Rigidbody2D components to it.
Add a TilemapCollider2D component to the Tilemap.
Freeze Z-axis rotation of the Rigidbody2D of the sprite.
Attach the script below to the sprite:
void Update() { GetComponent().velocity = new Vector2(2.0f * Input.GetAxis("Horizontal"), 0.0f); }
When moving the sprite back and forth along the platform, after some random amount of time it will get stuck and be unable to move any further. This only occurs with step 4 above (the Z axis rotation frozen), but I find that to be essential for my project. It seems to me that giving everything a physics material with 0 friction makes this bug occur less often, but it does not eliminate it. Replacing the box collider with a capsule collider does seem to perhaps eliminate it, but it doesn't make sense (to me) for a square to use a capsule collider.
I am guessing that my player sprite is somehow hitting the side of a tile that sticks up infinitesimally further than the tile before it, but (a) I don't know why things laid out on a grid would not be perfectly aligned, and (b) I don't know why it would only happen 1 in 100 times that I walk across that transition between tiles.
Can someone explain this? Thanks for your thoughts.
Your answer
Follow this Question
Related Questions
How do I get collisions between Tilemap Collider 2d and a Kinematic Rigidbody 2d? 1 Answer
Tilemap collider - character passes through wall 1 Answer
Problem with rotation in unity2D with PolygonCollider2D 0 Answers
2D Colliders stops working at random despite rigidbody, OnMouseDown not called 0 Answers
Is this a correct way to have multiple different compound colliders in one gameobject? 1 Answer