별 모양으로 타일이 사라지는 문제를 해결하니 이번엔 카메라가 문제. 이젠 조금만 드래그해도 겟단이 되어버리네 시불것;;; 요즘 애들은 겟단이 뭔지 아려나
어찌저찌 위의 문제를 해결하고 마름모꼴로 생성된 타일 묶음의 바깥을 따라 카메라 경계를 정해놓는 것까진 성공했는데 카메라 경계에 걸치는 순간 카메라가 부들부들 떨면서 경기를 일으키네. 카메라가 경계에 비벼도 아예 떨리지 않게 하거나 경계를 넘어도 드래그가 끝나면 부드럽게 경계까지 돌아가게 하려면 워째야할까 감이 안 잡힌다.
아래는 코드임. 위는 휠 클릭으로 드래그하는거, 아래는 카메라 포지션에 따라 경계 지정하는거
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //마우스 휠 클릭으로 화면 드래그 if (Input.GetMouseButton(2)) { transform.position -= new Vector3(Input.GetAxisRaw("Mouse X") * Time.deltaTime * dragSpeed, Input.GetAxisRaw("Mouse Y") * Time.deltaTime * dragSpeed, 0.0f); } transform.position = new Vector3(Mathf.Clamp(transform.position.x, -xLimit * ((yLimit - Mathf.Abs(transform.position.y)) / yLimit), xLimit * ((yLimit - Mathf.Abs(transform.position.y)) / yLimit) ), Mathf.Clamp(transform.position.y, -yLimit * ((xLimit - Mathf.Abs(transform.position.x)) / xLimit), yLimit * ((xLimit - Mathf.Abs(transform.position.x)) / xLimit) ), -10f); | cs |
아이러니하군. 정확한 x 의 값을 구하기 위해 정확한 y 값이 필요하고 정확한 y 값을 구하기 위해 정확한 x 값이 필요하네. 내 생각에는 xLimit- abs(x) 랑 yLimit - abs(y) 값이 음수 가 나오지 않도록 클래프 해주는게 좋을 거 같음.
아 이제보니 아래쪽 코드가 완전 딴 판으로 복붙되어있네..... 밑에 클래프는 대충 (최대 경계 포지션 - abs(현재 포지션)) / 최대 경계 포지션이야. 0~1까지 배율을 구해서 전체적인 경계가 반듯한 직사각형에서 마름모꼴로 바뀌도록 했어
평범하게 경계 범위를 직사각형으로 하니 경계 모서리 부분으로 화면을 이동시키면 타일이 거의 안보이더라고. 그건 썩 보기 좋은 광경은 아니어서 나 나름대로 수를 부려본거야. 지금 머리 아픈 건 경계에 부딪힐 때 부드럽게 걸치는 방법이야. 어후...
vector a 는 x 만 클램프 하고 y 는 원래대로인 좌표 로 설정하고 vector b 는 y 만 클램프 하고 x 는 원래대로인 좌표 로 설정해서 transform.position = (a + b) / 2 로 해봐. 부들부들 떨리는 거 없어지는지
그 유니티 UI, 스크롤뷰에서 콘테이너 범위 넘어가면 엘라스틱으로 탄성 줄 수 있는 것처럼 맵 끝에가면 살짝 넘어는 가는데 탄성으로 돌아오는 기능을 넣으면 뭔가 이쁘지 않을까
그 기능을 만들고 싶어ㅋㅋㅣㅣ
띠용~
바운더리는 지금처럼 클램프로 잡으시고 튕겨나가는건 이벤트처리로 실행시키면 될듯합니다 - dc App
해결함. 밥묵고 코드 올림