목록2024/10 (9)
피너클의 it공부방
문을 만들어줬다.Hinge Joint 2D를 이용해서 만들었다. 위에 처럼 작동된다.그리고 적을 만들었다.적이 플레이어를 따라오는걸 만들기 위해 navemesh를 적용했다.위에 처럼 적용 되었다. 그리고 적 오브젝트에 enemy로 플레이어를 따라가게 만들었다. 위에 처럼 따라다니게 된다.그런데 나는 적이 회전하지 않고 따라가는게 마음에 들지 않았다.그래서 적이 움직이는 방향을 쳐다보게 스크립트를 추가했다. 단순히 플레이어를 쳐다보는 것이 아닌 움직이는 방향을 쳐다본다.
먼저 적 오브젝트에 Circle Collider 2D를 넣어주고 Trigger를 체크해준다. void OnTriggerStay2D(Collider2D other){ if(other.tag == "Player"){ Vector3 direction = other.transform.position - transform.position; float angle = Vector2.Angle(direction, transform.right); if(angle 트리거를 항상 체크하며 만약 트리거 안에 들어온 오브젝트의 tag가 Player일 경우 조건문을 실행하며fieldOfViewAngle 보다 작으면, 즉 적의 시야 안에 들어있으면 빨간..
먼저 스프라이트 하나 생성한다.크기는 저 정도로 했다. 아래 원 스프라이트는 플레이어 캐릭터다.그리고 Hinge joint 2D 컴포넌트를 추가한다.문 힌지처럼 쓸 수 있다. 나는 좌측에 힌지가 있기를 원하니 좌측으로 힌지를 옮겨주겠다.중간에 Anchor의 X를 -0.5로 바꾸면 힌지가 좌측 끝으로 향한다.위에 사진처럼 된다.그다음 나는 문이 90도 까지만 열리면 좋겠다. 앞으로 90도 뒤로 90도그러니 Use Limits를 체크해주고 Angle Limits를 -90도와 90도로 맞춰준다.여기까지 하면 준비 끝이다. 실제 실행전에Rigidbody2D에 gravity를 0으로 바꾸는 것과 Box Collider 2D를 추가하는 걸 잊으면 안 된다. 원하는 데로 작동된다.
맵을 만들었다. 타일맵을 이용했다.먼저 바닥을 만들고벽을 만들었다. 벽의 collider를 보면 하나로 합쳐져 있는데기본적으로 Tilemap collider 2D만 적용하면 타일 하나하나에 콜라이더가 적용된다.하지만 아래 Composite Collider 2D를 적용하고Tilemap collider 2D에 Used By Compiste를 체크하면 위에처럼 하나로 합쳐진다. 이다음 플레이어에 시네머신 카메라를 넣어줬다.유니티 2D 시네머신 이용해서 카메라가 플레이어 따라다니게 만들기여기있는데로 만들었다. 위에 처럼 적용됐다.이다음 총쏘는걸 만들었다.처음에는 Addforce로 만들었는데 문제가 총알이 벽을 뚫는다는 것이다. 벽이 얇고 총알이 너무 빨라서 발생한 문제같은데결국 레이캐스트로 만들기로 마음 먹었다..
먼저 플레이어 캐릭터를 만들었다.그후 콜라이더랑 리자드 바디를 넣고 움직임과 마우스 방향을 바라보는 스크립트를 작성했다.이렇게 작성한다음 둘다 update문에 넣었다. 잘 작동된다. 이다음 총 스크립트를 만들었다.총 스프라이트를 넣은다음 콜라이더를 넣었는데 Trigger를 true로 해놨다.플레이어가 저 범위 위로 올라간다음 F를 누르면 플레이어가 총을 들고있는 스프라이트로 바뀌게 하는게 목표다.이건 플레이어 스크립트 안에 작성했다.나중에 칼도 만들거기 때문에 Knife까지 미리 작성했다.F를 누르고 트리거가 작동된 오브젝트의 태그가 Gun이면 바로 총 오브젝트를 파괴하고 총을 잡게 만들었다. 위에 처럼 작동된다.나중에 칼도 만들었지만 이건 생략하겠다.이 다음 맵을 만들었다.
먼저 시네머신을 install 해야한다.패키지 매니저에서 찾아서 install 하면 된다. Packages가 Unity Registy이다. in project 이런거 아니다.시네머신을 설치하면 Hierarchy에서 우클릭을 했을때 위처럼 Cinemachine이 나온다. 2D Camera를 클릭해준다.위에처럼 CinemachineVirtualCamera 컴포넌트가 있는 오브젝트가 생성된다.위에 보면 Follow 가 보일것이다. 시네머신이 따라다닐 오브젝트이니 우리의 플레이어 캐릭터를 넣어준다. 그럼 위에처럼 잘 따라다니게 된다.그런데 나는 카메라가 일정 범위 내에서 움직이기를 원한다.CinemachineVirtualCamera 컴포넌트 맨 밑에 Extensions 이라는게 있다.클릭하면 여러가지가 뜨는데..
플레이어 캐릭터가 레이캐스트를 쏜다라고 가정하겠다. 먼저 플레이어 캐릭터의 위치가 필요하다.이건 간단히 transform.position으로 구할수 있다. 그 다음에는 플레이어를 기준으로 마우스의 방향을 구해야 한다.Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);Vector2 rayDirection = (mousePosition - transform.position).normalized; Camera.main.ScreenToWorldPoint(Input.mousePosition) 으로 마우스의 위치를 구한다음플레이어 위치와 빼주고 normalized 해줌으로서 마우스의 방향을 구해준다. RaycastHit2D hit..
빌드하려고 하는데 갑자기 이런게 떴다.오류내용을 자세히 보면 recommend부붙이 보인다.gradle 이랑 compileSdkVersion 뭐 어쩌고 하고 있는데 이유는 모르겠는데 지금 Target ApI Level이 API level 33으로 되어있다. 그래서 이걸 highest installed로 바꿨더니 갑자기 작동된다. 이유는 모르겠다.