플레이어의 점프 구현을 rigidbody2d.velocity의 y값을 이용해 처리중이였다.
tilemap collider과 using composite collider을 통해 지형을 제어중이다.
//for fall faster in air
if (rigid.velocity.y >= -0.5f)
{
if (rigid.velocity.y <= 0.1f)
{
animator.SetBool("onJump", false);
}
rigid.gravityScale = normalGravityScale;
}
else if(rigid.velocity.y<0)
{
//rigid.gravityScale = normalGravityScale;
rigid.gravityScale = fallingGravityScale;
}
위 코드는 velocity.y와 비교해 공중에 떠있다면 더 빨리 떨어지게 하기위해 gravityscale을 변경해주는 방식이다.
하지만 0과 비교하자니 계속 velocity.y가 앞으로 걷기만해도 조금씩 변화되어서 문제였다.
따라서 0.5와 비교해보려했지만 그 값보다도 커질때가 가끔 생겨서 중력때문에 느리게 걸어진다..
혹시 몰라 player의 collision detection도 continuous로 변경했지만 똑같았다.
결국 rigidbody.velocity.y의 더 정확한 threshold를 찾아야 해결될 문제같아서
그냥 bool형변수 onGround를 이용해 체크하기로 했다.