1
votes

I have found other people asking for this on the internet but I haven´t found a solution. I have a 2d game using tilemaps and composite collider. But when I add a composite collider I can´t use ontriggerenter or raycasts to detect the ground. So I have completely removed the ability to jump because there is no way of knowing if the player is on the ground or not, resulting in the ability to jump again before landing. Has anyone found a way around this?

1
I use both of those methods with my composite collider, would be helpful if you could provide more information about your hierchy or give some samples.AresCaelum

1 Answers

0
votes

There shouldn't be any issues with your approach. Without code examples all I can give you is some general pointers:

OnTriggerEnter

Use OnTriggerEnter2D(Collider2D col) to detect Trigger enters in a 2D environment. OnTriggerExit2D for leaving, OnTriggerStay2D for every frame you're still colliding with other colliders.

Don't forget that one of the objects need to have a Rigidbody2D (if you don't want to use physics, select "Kinematic" in the dropdown and check the "Use Full Kinematic Contacts". For improved collision detection, change the Collision dropdown to "Continuous".

Raycast

When using Raycasts you need to, either start the raycast from a position that doesn't include your own hitboxes, or make sure the raycast ignore its own layer.

// Raycast down ignoring Player layer
int layerMask =~ LayerMask.GetMask("Player");
RaycastHit2D hit = Physics2D.Raycast(transform.position,
                                     Vector2.down,
                                     layerMask: layerMask);