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
votes
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);