0
\$\begingroup\$

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

enter image description here

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.

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

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.

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.