Trigger issues
I'm developing a platformer game currently for a school project, and as such I want there to be a jump feature. However, I don't want the player to be able to jump before hitting the ground again. The players been set as a rigidbody2D, and has a circle collider (just a placeholder for now).
In terms of the actual code I've set up the movement file so that it has the Y-Velocity and a grounded bool variable.
if (Input.GetKeyDown("space") && grounded == true)
{
PlayerYVelocity += 14.5f;
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.name == "Player")
{
grounded = true;
}
}
void OnTriggerExit2D(Collider2D other)
{
if (other.name == "Player")
{
grounded = false;
}
}
Note, none of the OnTrigger code is inside the update function.
The issue I'm having is that I've set this up and as far as I can tell it should work (I'm still really new so maybe there's something that's glaringly obvious), as I've set two colliders on the floor, one as the actual collider and one as the trigger. After attaching the scrip to the player, it just doesn't seem to work. When I'm on the floor i can jump, but once I've jumped i can keep jumping.
Any help or advice would be appreciated.
Answer by DingoDave · Dec 24, 2016 at 06:20 PM
I found the problem, I set the trigger to apply if it collides with the "player" which it is attached to. I fixed this by changing the code:
if (other.name == "Player")
to
if (other.tag == "Floor")
and setting the floor sprites to be under a new tag named "Floor". The issue was that the player could never collide with itself meaning the value could never change. Hope this helps anyone who needs it.
Your answer
Follow this Question
Related Questions
My trigger won't activate the UI when the player collides with it. 0 Answers
Moving a child object to collide with wall. 1 Answer
Destroy instatiate object on trigger enter / collision,destroy instantiate prefab on trigger enter 0 Answers
Destroying Object OnTriggerEnter2D not working 1 Answer
Rigidbody moving on platforms 0 Answers