목록유니티 여러가지 (23)
피너클의 it공부방

transform.rotation으로 회전 각도를 구하려고 하면위 처럼 0과 1 사이의 값만 나왔는데transform.rotation.eulerAngles를 사용하니까위에처럼 값이 나오는걸 볼 수 있다.

그냥 재시작 하면 사라진다. 대충 컴퓨터 문제가 아니라 유니티 프로그램 문제라는것 같다.

마우스의 위치를 받아준다음마우스위치 - 오브젝트 위치를 함으로서 방향을 구할때 사용할 벡터를 구한다.그후 Mathf.Atan2와 Mathf.Rad2Deg를 이용해 각을 구한뒤Quaternion을 rotation에 넣어주면 된다. 잘 작동된다.

위에 에서 아래로 내려가는게 목표다. 위에서만 이동하고 있고 아래로 내려가면 Border때문에 끊긴다. 아래로 내려가면 Border가 바뀌게 할것이다.Up_Trigger와 Down_Trigger를 만들고 위 아래로 BoxCollider2D로 경계를 만들었다.이때 둘이 겹치게 하는게 포인트다.Up_Trigger에 넣을 스크립트다. 들어가면 bool_in을 체크하고 나가면 bool_out을 체크한다.Up_Trigger에서 나갔는데 Down_Trigger는 bool_in이 체크되어있는 상태면 어떤 상태일까아래 하얀 원이 있는 그 곳일것이다. 즉 위에서 아래로 내려온 상황일것이다.그럼 시네머신의 border를 아래 border로 바꿔주면 된다.이건 Down_Trigger에 들어가는 스크립트다.하이라키에서는 이렇..

먼저 스프라이트를 하나 준비했다.지금 위에 스프라이트가 하나 있다. 하얀색이어서 보이지가 않는다.이걸로 메테리얼을 하나 만들거다.위에 스프라이트를 유니티에 가져와주고 메테리얼을 하나 만들어준다.스프라이트 세팅은 위에처럼 했다.그후 만든 메테리얼의 Albedo에 스프라이트를 넣어준다.그후 메테리얼의 Shader를 Sprites/Default로 바꿔준다.linerenderer로 라인 하나 만들어 줬다. 포지션만 5, 5 로 바꿔줬다.이제 라인 렌더러 Materials를 방금 만든 DottedLine으로 바꿔준다.그 다음 TextureMode를 Tile로 바꿔준다 그러면 옆에처럼 라인이 바뀐걸 볼수있다.왜냐하면 내가 한가지를 까먹었기 때문이다.스프라이트 설정으로 돌아가서 WrapMode를 Repeat로 바꿔준..

Quaternion.AngleAxis (float angle, Vector3 axis) : axis를 중심점으로 삼아서 angle만큼 회전 시킨다. Vector3.forward를 중심점으로 30만큼 회전 시키면위의 사진에서위의 사진으로 바뀐다.그렇다면 Vector3.forward를 Vector3.back으로 바꾸면 어떻게 될까아까는 Z가 30이었는데 지금은 Z가 -30이다.중심점에 따라 위처럼 차이가 난다.

Mathf.Atan2 (float y, float x) : y와 x 값을 이용해 각도를 라디안 값으로 반환위의 사진에서 tan(L) = b/a 이다. L이 있으면 b/a를 구할수있다.arctan는 tan의 역함수다. +의 역함수는 -고 tan의 역함수는 arctan이다.tan가 L로 b/a를 구할수 있다면 arctan는 b/a로 L을 구할수있다.Mathf.Atan2가 arctan인것이다.위의 값은 arctan(1/0) = arctan(+무한대)그 다음은 arctan(0/1) = arctan(+0)그 다음은 arctan(-1/0) = arctan(-무한대)그 다음은 arctan(0/-1) = arctan(-0) 을 출력한다.위에 처럼 값이 나온다. 3.14에서 유추 할수 있듯이 기본적으로 생각하는 0~36..

먼저 적 오브젝트에 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를 추가하는 걸 잊으면 안 된다. 원하는 데로 작동된다.

먼저 시네머신을 install 해야한다.패키지 매니저에서 찾아서 install 하면 된다. Packages가 Unity Registy이다. in project 이런거 아니다.시네머신을 설치하면 Hierarchy에서 우클릭을 했을때 위처럼 Cinemachine이 나온다. 2D Camera를 클릭해준다.위에처럼 CinemachineVirtualCamera 컴포넌트가 있는 오브젝트가 생성된다.위에 보면 Follow 가 보일것이다. 시네머신이 따라다닐 오브젝트이니 우리의 플레이어 캐릭터를 넣어준다. 그럼 위에처럼 잘 따라다니게 된다.그런데 나는 카메라가 일정 범위 내에서 움직이기를 원한다.CinemachineVirtualCamera 컴포넌트 맨 밑에 Extensions 이라는게 있다.클릭하면 여러가지가 뜨는데..