박민혁의 개발

점멸 구현 본문

TIL

점멸 구현

박민혁_kog 2023. 12. 19. 17:01
    void Flash()
    {
        Vector2 player = transform.position;
        Vector2 mouse = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Vector3 dir = (mouse - player).normalized;
        RaycastHit2D hit = Physics2D.Raycast(player, dir, 1.5f, layerMask);
        Vector3 target = dir;
        if (hit)
        {
            target = dir * hit.distance;
        }
        else 
        {
            target = dir * 1.5f;
        }
        gameObject.transform.position = transform.position + target;
    }

 

포인트는 if문의 hit인데 이 코드의 점멸거리는 1.5f 이다

 

사실 원하는 위치로 이동시키는거라 이동 방향을 정하고 현재 포지션에 더해주는것 만으로 코드가 끝날수 있지만

그 경우 점멸 위치에 벽이 있다면 끼어 버리게 된다

 

그래서 레이캐스트를 레이어 마스크를 만날때까지 쏘는게 raycasthi2d hit 가 그역할을 해주며

 

현재 layermask는 wall 부분을 담고 있다 

 

즉 1.5 거리 만큼 가거나 wall 레이어를 만난다면 레이캐스트가 부딪힌것

 

아래 if문에서 만약 히트가 성공했다면 (무언가에 부딪혔다면) 그 레이의 길이만큼만 방향으로 이동하여 벽앞까지만 가고

그 너머를 가지 않는것

 

아니라면 원래거리 1.5f 만큼을 이동한다

'TIL' 카테고리의 다른 글

유니티 언어 설정  (1) 2024.06.14
의외로 심플한 블랙홀 구현  (0) 2023.12.19
상태이상 구현하기 그런데 최적화를 곁들인  (0) 2023.12.19
데바데 스킬 체크 구현  (1) 2023.12.19
유니티 유도 미사일  (1) 2023.12.19