분류 전체보기
-
3인칭 캐릭터 만들어보기 3# 카메라궤도(자유시점) 만들어보기 (FreeLook 만들어보기)Unity유니티/캐릭터 2022. 6. 20. 00:34
기존에 캐릭터 이동+회전 그리고 캐릭터를 따라다니면서 회전도 같이 하는 카메라까지 만들었었다 이번엔 3인칭 게임에서 종종 프리룩이라부르는 자유시점 카메라 기능을 만들려 한다 다른 게임들을 보면 자유시점이 약간씩 차이가 있겠지만 바라볼 대상(캐릭터를)을 중심으로 회전을 하는 공통점이 있었다 사실 카메라를 캐릭터 자식오브젝트로 두고 하면 엄청 편하지만 내가 이번에 만들어왔던건 그런것없이 하이어아키창에 독립적으로 사용하는걸 목표로했었다 그래서 약간 귀찮아진점이 있는거같다; 1. 캐릭터 중심으로 원형태로 돌게 만들어보기 원의 특징은 반지름길이R만큼 곱해진 (Cosθ , Sinθ , 1) 벡터로 그 형태를 그리고 있는걸 알수있다 cos과sin 그래프를 합치어서 보면 위 그림과 같다 반지름은 저 xy값에 스칼라배한..
-
3인칭 캐릭터 만들어보기 #2 카메라 회전및 장애물감지Unity유니티/캐릭터 2022. 6. 16. 01:28
내가 어릴떄 했던 3인칭 게임들을 보면 유저의 모니터화면이 되는 카메라가 주로 2가지 특징이 있었다 1.캐릭터를 따라다니는 카메라 2.캐릭터와 카메라 사이 장애물이 있을떄 먼저 캐릭터를 따라다니려면 어떻게 할까 고민해보았다 이벤트 함수의 실행 순서 - Unity 매뉴얼 (unity3d.com) 이벤트함수 실행순서를 보면 업데이트함수 다음 LateUpdate란것이 오는데 유투브나 강의 영상들을보면 카메라이동등을 여기서 처리하는걸 봤다 업데이트함수가 끝나고 실행된다고 보면되는데 캐릭터를 따라다니는 카메라의 경우 캐릭터의 이동이 업데이트 함수에서 계산후 처리가 되면 픽스드업데이트에서 그걸 기반으로 처리하는 개념인듯하다 1.캐릭터를 따라다니는 카메라 참조할 캐릭터 _chr _rotSpeed, _camSpeed,..
-
3인칭 캐릭터 만들어보기 #1 키보드 입력으로 이동과 회전Unity유니티/캐릭터 2022. 6. 15. 16:13
요즘엔 게임을 많이 안해서 사실 잘 모르겠지만 어릴적에 했던 3인칭 게임중에 키보드의 W S로 이동(앞, 뒤로 움직임) AD로 회전을 하는 게임이 많이 있었던것으로 기억한다 사실 3인칭 조작도 종류가 엄청 다양하겠지만 모든걸 만들기엔 힘들거같으니.. 이동은 WS키로, 회전을 AD로 하는걸 만들어보고싶어졌다 먼저 이동속도와 회전속도 변수가 필요할것이다 그후 키보드의 입력을 받는 input변수와 키로 입력받는 벡터를 정규화까지해주면 방향벡터 dir까지 나오게된다 이동은 현재 월드공간에 어떤 좌표에 위치한 내 캐릭터에 방향벡터배만큼 스칼라값을 곱해준단 개념이기도하니 transform.TransformDirection(벡터) 함수를 이용해 나아가도록 했다 인자는 방향벡터를 받는다 회전은 인스펙터창에 있는 입력값..
-
마우스 클릭 지점으로 캐릭터 회전 + 이동시키기Unity유니티/캐릭터 2022. 6. 14. 19:53
마우스를 클릭하였을떄 해당좌표로 캐릭터를 이동 + 회전 시키는걸 만들어보고싶다 유니티에선 편하게 제공되는것이 많기에 그걸 적극 이용할 생각이다 먼저 Input.mousePosition이 있다, F12로 들어가서 확인해보면 픽셀좌표계에서의 현재 마우스포지션값을 가져올수있다 유니터의 기본 카메라, 메인카메라를 호출해 사용할수있는 다른 함수도 있는데 Camera.main.ScreenPointToRay가 있다 인자를 보면 Vector3 position 이 있고 설명으로는 카메라에서 스크린을 통과하는 점을 반환한다고 한다 그리고 반환값이 레이 구조체이다 레이캐스트를 써야겠다! RatcastHit 구조체가 있다 레이를 쏘고 어떠한 충돌이 일어낫을떄 , 즉 레이가 어떠한것에 닿앗을떄 그 정보를 담아두고 추후 사용을 ..
-
유니티) 역탄젠트 Mathf.Atan2를 이용한 회전Unity유니티/회전 2022. 6. 14. 14:34
저번에 CrossProduct외적과 Dot 내적으로 회전을 만들어보았다 이번엔 Mathf.Atan2를 이용한 회전도 만들어볼 생각이다 Mathf.Atan2 역탄젠트함수인데 , 위에 작성하듯 상당히 짧은 구문이다 당연히 역함수의 결과값이 라디안이기에 각도법으로 변환까지 해주었다 Mathf.Atan은 Mathf.Atan과 Mathf.Atan2 두가지가 있는데 Mathf.Atan은 인자를 한가지만 받고 Mathf.Atan2는 두가지를 받는다 무슨차이일까 역탄젠트 공식은 y/x이다 x는 밑변, y는 높이라 가정시 Atan에는 높이/밑변의 비율을 인자로 전달하고 끝이지만 Atan2에는 높이 밑변을 각각 전달할뿐만 아니라 부호또한 표시가 가능해진다 만약 가운데가 회전할 캐릭터고 12시 방향이 전방벡터Forward이..
-
유니티) 벡터의 외적을 이용한 회전Unity유니티/회전 2022. 6. 12. 15:33
저번엔 내적을 두번하여서 회전을 했었다면 이번엔 내적 + 외적으로 회전을 만들어보았다 원래 Atan2를 다시한번 살펴볼겸 글을쓰며 보려했는데, 외적이 갑자기 해보고싶어졌다 일을 나가기전 시간이 얼마 없기도하고 그저 간단하게만 만들어보고싶어 업데이트문에 떄려박았다;; _aim과 target은 같은것이다, 회전할 방향이 되어줄 씬에 배치된 오브젝트이다 회전할 캐릭터의 전방방향을 의미하는 forwardDir벡터와 바라볼 방향 , 회전방향이 되어주는 dir벡터 2개를 만들었다 dir벡터에 단위벡터(노말라이즈)를 한건, 벡터의 크기보다 방향이 중요해서였다 유니티제공함수로 Vector3.Cross를 쓰면 편하다! 외적은 내적과 달리 곱셈순서에 따라 값이 달라지니 주의해야한다 내적은 나의 앞뒤판별을 해주고, 외적은 ..
-
유니티) 벡터의 내적 (cos을 이용한 간단한 회전)Unity유니티/회전 2022. 6. 10. 14:46
벡터의 내적을 이용해서, 캐릭터의 좌우회전을 구현해보기로했다 Vector A , B를 예로들어 내적공식 => Dot(A,B) = Cosθ|A||B| 유니티에서 제공하는 함수중에 Vector3.Dot(a,b) 두벡터 ab의 내적값 반환해줌(내적은 벡터가 아닌 스칼라값을 반환함) Vector3.Magnitude(Vector A) 인자(벡터)의 길이를 반환해줌 Mahf.Acos(float a) 역함수로 인자로 코싸인θ을 받고 코싸인각도를 반환해줌 먼저 탑뷰에서 바라보는 형식으로 하는게 만들기 편하다 생각이들었다, y축 회전(위에서 바라볼떄 좌우회전)으로 구현하기로 했다 1) Update 비헤이버 업데이트는 매프레임마다 반복하는데, 매프레임마다 회전값을 구하며 회전을 하는게 별로라 생각이들었다 그래서 RotTh..
-
#1 수의 구조카테고리 없음 2022. 6. 3. 15:44
수의 종류 실수 (R) - 자연수(N), 정수(Z), 유리수(Q), 무리수(I)를 모두 포함하는 수 체계, 실제로 존재한다 생각되는 개념의 수 자연수 (N) - 10진법, 기수를 10으로 하는 수 체계 정수 (Z) - 양+, 음- ,0 으로 구성된 수 체계 유리수 (Q) - 정수원소인 A B가 있다 가정시, A != 0이 아닐떄 B/A로 표현이 가능한 수 체계 단 소숫점이 무한으로 뻗어나갈떄, 일정한 패턴이 반복되는 무한소숫대도 유리수에 포함 무리수 (I) - 정수원소인 A B가 있다 가정시, , A != 0이 아닐떄 소숫점이 무한으로 뻗어나가는 측정불가의 수치(반복된 소수점의패턴은 유리수에 포함) EX) 5/7 =0.7142857142857142....(571428이 반복되므로 유리수) ( 규칙성도 없..