# 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? – DMGregory Sep 13 '20 at 12:35
• Thank you for your help! It's working wonderfully right now. – Arkhaven369 Sep 26 '20 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? – DMGregory Sep 26 '20 at 1:23

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. – DMGregory Sep 14 '20 at 12:13
• Yes I am using the tilemap system. Thank you for your help anyway. – Arkhaven369 Sep 26 '20 at 1:21