빨간색이 캐릭터고 파란색이 버튼을 누를시 캐릭터가 이동할 위치야
스킬을 썼을 때 만약 파란색과 땅이 겹치면 Raycast를 해서 닿는곳에서 x축으로 -0.5f 인 곳에 캐릭터를 이동시키고 싶은데
Raycast 부분을 제대로 구현 못하겠어
playerScript.transform.position = Physics2D.Raycast((Vector2)playerScript.transform.position, Vector2.right, 4.5f).point + new Vector2(-0.5f, 0f);
이렇게하면 본인의 collision에 부딪혀서 제자리에서 x축으로 -0.5f만큼 이동하더라고
그래서 LayerMask 부분 추가해서 Player의 LayerMask인 9를 무시하도록 적었는데
playerScript.transform.position = Physics2D.Raycast((Vector2)playerScript.transform.position, Vector2.right, 4.5f, 9 ).point + new Vector2(-0.5f, 0f);
Raycast반환값이 (0f,0f) 원점이 되더라
9가 아니더라도 다른 LayerMask를 추가해봐도 그래
왜 이런거야? 일단 검색해서 다른 방법으로 구현은 했는데 안되는 이유를 모르겠어
int layerMask = 1 << LayerMask.NameToLayer("Ground");
이렇게 해주고 layerMask 넣는 부분에 이거 넣으니까 되긴하는데 이것도 왜 되는건지 모르겠어
레이어 마스크에 대한 개념과 쉬프트연산에 대한 개념을 찾아보세요
해당 댓글은 삭제되었습니다.
고마워! 비트플래그 쓴다는게 찾아도 안나오더라
응 이해됐어 ㅋㅋㅋ <<쓸때 뭔가 bit 각자가 bool같은데 싶었는데 비트플래그라는 방식이 있을줄 몰랐음. 할로윈데이 잘보냈나보네 기분좋아보인다 ㄳㄳ
아 비트플래그를 이해 못하겠다는거로 보여서 열심히 답해준거구나. 너가 알려주기 전까지 LayerMask검색해도 비트플래그 쓴다는 말이 안보인다는 뜻이였어