# How can I assign a layer to tiles on an individual level?

I've just started out with my first game in Unity. It's a simple 2D Platformer with a tile-based level.

When coding in the movement, I used the Physics2D.OverlapCircle() and an empty to check whether my player was touching the ground. However, I need to use a layer to make sure only the ground is detected.

my code below

//fixed update used for physics calculations
void FixedUpdate()
{
//right or left arrows being pressed
float moveX = Input.GetAxis("Horizontal");

Vector2 moveDir = new Vector2(moveX * playerSpeed, rb.velocity.y);
rb.velocity = moveDir;
}

//update used for spacebar input and force
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rb.velocity = Vector2.up * jumpForce*Time.deltaTime;
}

//is my circle overlapping any other colliders
Collider2D collider =  Physics2D.OverlapCircle(feet.position, checkRadius, groundLayer);
Debug.Log(collider);
}

When I tried assigning layers to my tiles, I couldn't find a way to do it.

I would be really grateful if anyone could show me how to, or if anyone can tell me a more efficient way to deal with jumping in a 2D platformer.

• Have you considered placing a second tilemap under the same grid for your non-walkable tiles? Sep 13, 2020 at 12:35
• Thank you for your help! It's working wonderfully right now. Sep 26, 2020 at 1:21
• I'm glad you've solved your problem! Want to write up your solution as an Answer below to help future users? Sep 26, 2020 at 1:23

## 1 Answer

I'm Assuming you are using tiles as prefab. So just change the layer of walkable tiles in the main prefab.

Also, you can manually add the layer via script.Referance

Make a tile script and add it to the tile prefab.

• From the screenshot, it looks like they're using a tilemap component, not individual prefabs per tile. Sep 14, 2020 at 12:13
• Yes I am using the tilemap system. Thank you for your help anyway. Sep 26, 2020 at 1:21