Unity Rotate
오브젝트를 회전시키고 싶을 땐 다양한 방법이 있겠지만 그중 Rotate를 사용해서 회전할 수 있다!
- Unity/Study
- · 2022. 12. 17.
OVR Avatar Arm IK
나중에 따로 손모델 만들어서 해볼예정 아직 프로토타입 #1 이건 컨트롤러가 아닌 Hand Tracking으로 하는중
- Unity/VR
- · 2022. 11. 24.
Animator Oveeride Controller를 클릭해보자! 이렇게 [+] 달려있는 Animator가 생긴다 Controller에 아무것도 없는, 비어있는 상태인데 기존에 만들어둔 Player 컨트롤러를 넣어주면 아래에 Original 애니메이션 클립들이 존재한다 여기에 덮어씌우고 싶은 애니메이션 클립을 넣으면 된다 오버라이딩 애니메이션을 처음써봐서 신기했다! 끄읏!
상단 [File] -> [Build Settings...]을 누르면 이렇게 Scene을 관리할 수 있는 Window창이 하나 뜬다 씬을 Drag & Drop 해서 추가할 수 있고 Delete를 눌러 삭제할 수 있으며, 씬의 순서를 바꿔줄 수 있다 다음으로 스크립트로 씬을 관리하는 법에 대해 알아보자 using UnityEngine.SceneManagement; 씬을 관리하는 스크립트에는 반드시 위와 씬매니저먼트를 using으로 선언해주어야 한다!! SceneManager.LoadScene을 통해 불러온 씬의 이름을 적어주면 된다 그럼 끗~ 씬을 불러올 때 동기화 / 비동기화 방식이 있는데.... 나중에 기회되면 올리겠다 크크루삥뻥
오브젝트를 회전시키고 싶을 땐 다양한 방법이 있겠지만 그중 Rotate를 사용해서 회전할 수 있다!
오늘의 준비물이다! 이 친구에게 Mesh Collider를 붙여주면 외관상 아무 변화가 없다?!!!! 이때, Mesh Renderer를 꺼주면?! 대박이다.. 나는 지금껏 Convex를 눌러야 메쉬콜라이더가 생성되는줄 알았는데 그게 아니였던거다 올 렌더에 가려져서 안보였던거임ㄷㄷㄷ 우리 학회 최고의 Brain 두 명이 Convex에 대해 알려준게 있다 컨케이브: 콜라이더 o 트리거 x 컨벡스: 콜라이더 o 트리거 o 또 다른 학회분 말로는 컨벡스 켜서 사용할 거면 파츠별로 따로 콜라이더 만들고, 각 콜라이더는 움푹 패인 부분이 없게 쪼개서 만들어야 할 거 같아요 라고 가르쳐주셨다! Convex는 충돌 감지를 위해 사용되는 메쉬 오브젝트를 나타내며, true로 설정하게 되면 해당 메쉬 충돌체는 구멍(hol..
OneGrabTranslateTransformer컴포넌트를 사용하다보면 Constraints Are Relative도 있고Constraint도 있습니다. Constraints Are Relative를 체크하면 좌표계가 World좌표계를 사용하지 않고 그 오브젝트의 Local좌표계를 사용할 수 있게 됩니다. Constraints 를 체크하면 Position값에 제약을 둘 수 있습니다. 체크를 하지 않는다면 해당 축으로는 제약이 없어집니다. Constraints Are Relative를 체크하지 않으면 World좌표계를 사용하게 됩니다. 따라서 오브젝트를 잡았을 때 원래의 Position을 지켜주고 싶으면 Constraints Are Relative를 체크하면 됩니다. 각 축에 Constraints를 체크하..
위 사진을 보면 눈오리가 가운데에 서있다 이 친구의 월드좌표계는 위 사진과 같다 그런데 이 눈오리가 바라보고 있는 방향으로 가고 싶다면 뭐 월드좌표를 사용해서 transform.position += Vector3.left * speed; 이런식으로 할 수 있겠지만 캐릭터가 회전하면 Vector3.left가 아닌 다른 방식으로 또 수정해주어야 한다 var dir = Vector3.left; rb.MovePosition(rb.position + (dir) * (speed * Time.deltaTime)); 위와 같이 코드를 작성하면 캐릭터가 회전해도 그냥 이렇게 쭉 가는 거다 이러한 문제는 Local좌표계를 사용해서 쉽게 처리할 수 있다 눈오리가 어딜 바라보든 앞 모습은 로컬 좌표계 기준 항상 (-)Z축을 ..
우리 학교 대선배님들 존경스럽다!!! 2명에서 시작하셨다는데 정말 훌륭하시다 ㅠㅠㅠ 내가 질문한 것들도 있고 다른 사람들이 질문한것도 받아 적었다~ 1. Q. 클라이언트 개발 채용에 대해 A. 코딩만 잘해서 절대 할 수 없다, 산업에 대한 이해도가 굉장히 높아야 한다 문화기술쪽으로 이해도 높은 사람이 게임을 잘 만든다 대중문화 잘 아는 사람이 좋은 게임도 만들 줄 안다 2. Q. 도전해봐야 할 학교 활동 추천? A. 다른 학과 수업을 들어보는거 추천한다, 심리학과 강추한다 게임을 하는 이유에 대해 고민해봐야 하고 유저들이 게임에 왜 돈을 쓰는지, 왜 게임을 하는지 생각해보아야 한다(대다수들은 재미 때문이라고 90%라고 대답한다고 한다) => 면접질문 A. 재미란 무엇일까요? 자신의 정의가 중요하다, 게임..
먼저 Resources 폴더를 만들어 주어야 한다 Resources.Load("UI/SpecialCharacters" + "Shift_small"); 다음으로 위와 같이 코드를 작성하면 Resources => UI => Shift_small 녀석을 가져올 수 있다 Resources.Load에서 Original 모습은 Resources.Load 이다 응용 transform.GetChild(i).GetComponentInChildren().sprite = Resources.Load("UI/SmallLetter/" + transform.GetChild(i).name);
ParticleSystem을 사용하다보면 한 번쯤 ParticleSystemInheritVelocityMode이라는 옵션을 보셨을 것입니다. Inherit Velocity Mode => 속도 상속 모드 ? 이 모드는 시간이 지남에 따라 Particle의 속도(Velcocity)가 부모 오브젝트의 움직임에 반응하는 방식을 선택하는 Mode를 뜻합니다. 이 Mode는 Simulation Space가 Main 모드에서 World로 설정된 경우 입자에만 영향을 미칠 수 있습니다. Mode에는 총 2가지 모드가 있습니다. 첫 번째로 Initial, 두 번째로 Current Mode가 있습니다. Initial 모드는 각 입자가 생성될 때 속도가 한 번 적용돼서 입자가 생성된 후에는 만들어진 Particle의 속도가..
먼저 magnitude 와 sqrMagnitude을 이해하기 위해서는 벡터의 대한 개념을 알고 가야 한다 벡터란 크기와 방향을 갖는 물리량이며 이때, 크기만 갖는 물리량은 스칼라 라고 부른다 위 사진에서 tail을 시작점, head가 끝나는 부분을 종점이라고 부르며, 이 둘의 사이의 거리가 벡터의 크기가 된다 본론으로 돌아와서 magnitude는 인자로 들어온 벡터의 길이를 반환하는 녀석이다 Vector3.Magnitude(x) 이렇게 x가 인자로 들어오면 이 x를 벡터의 길이로 반환해서 돌려준다 magnitude는 주로 두 벡터간의 거리를 구할 때 사용한다 벡터의 길이는 √(x*x + y*y + z*z) 의 제곱근이다 magnitude는 정확한 거리를 알고 싶을 때 사용된다 sqrMagnitude는 인..
Player Setting을 보다보면 Texture Compresion Format을 본적이 있을 것이다 ETC, ETC2, ASTC 3개의 종류가 존재한다 Texture Compresion 즉, 텍스처를 압축하는 것인데 왜 압축을 해야만 하는걸까? 그 이유는, 게임에 Image을 Import해서 그냥 그대로 사용할 경우 용량을 많이 차지하므로 텍스처 압축을 통해 이미지 용량을 줄여줘야만 하는 것이다 게임에서 jpg, png로 저장되어 있는 텍스처를 원본의 이미지로 만든 뒤 "텍스처 블록 압축 알고리즘"을 통해 다시 저장한다. 텍스처 블록 알고리즘에 의해 저장된 텍스처는 게임이 실행 될 때 GPU에서 빠르게 압축을 풀고 GPU 메모리에 올리게 된다 텍스처 블록 압축 알고리즘은 소프트웨어에서 압축된 텍스처..
transform.parent 먼저, 부모 오브젝트(Transform or Component)를 참조하는 방법입니다. rider에 오브젝트의 parent을 집어넣어 줬습니다. 에디터에 돌아가서 조이스틱에 스크립트를 추가하고 실행해 보았습니다. 런타임동안 Rider에 Handle 즉 최상위 부모가 들어간 것을 확인할 수 있습니다. transform.Getchild 현재 부모오브젝트가 자식 오브젝트를 가져오려면 Index를 통해 가져오면 됩니다. Index는 0부터 시작합니다.
DLL이란? DLL이란 (Dynamic Link Library)의 약자로 직독직해 해보면 동적링크라이브러리 라는 뜻입니다 라이브러리란? 소프트웨어 개발에서 자주 쓰고 기초적인 함수들의 중복 개발을 피하기 위해 표준화된 함수 및 데이터 타입을 만들어 놓은 것을 뜻합니다 (도서관에 책느낌, 필요한 책을 가지러 도서관에가고 필요한 내용이 담긴 책만 가져오는) 동적링크라는 뜻은 실행 파일에서 해당 라이브러리의 기능을 사용 시에만, 라이브러리 파일을 참조하여 기능을 호출하는 것을 뜻한다! 컴파일 시점에서 실행파일에 함수가 복사되지 않고 , 함수의 위치정보만 갖고 그 함수를 호출할 수 있게 하는 기능인 것이다 왜 DLL을 사용하냐? DLL의 이점 더 적은 리소스를 사용한다 - 사용되는 디스크 공간 절약 모듈식 아키..
Static batcing(정적 배칭) 이란 드로우 콜을 줄이기 위해 움직이지 않는 메시를 결합 하는 드로우 콜 배칭 방식입니다 드로우 콜 배칭이란? Unity가 메시(Mesh)를 더 적은 드로우 콜로 렌더링 할 수 있도록 메시를 결합하는 드로우 콜 최적화 방법이다 정적 배칭과 동적 일괄 처리가 있다 정적 배칭을 사용하면 움직이지 않고(static) 동일한 재질을 공유하는 오브젝트들을 일괄 처리함으로 Draw Call 및 batches을 줄일 수 있습니다 Draw Call이란? 드로우콜(Draw Call)이란 CPU가 CPU에게 렌더링을 부탁하는 것이다 batch란? Batch는 DP Call과 상태 변경들을 합친 넓은 의미의 드로우콜이다 DP Call이란? CPU는 명령을 보내고 마지막으로 GPU에게 ..
진짜.... 에셋스토어에 업로드 하는 방법 가르쳐주는 블로그가 거어어어어어의없어서 내가 쓰게 됨!!!! https://assetstore.unity.com/publishing/publish-and-sell-assets Asset Store에서 에셋 퍼블리시하는 방법 - Asset Store 유니티 에셋스토어 퍼블리셔가 되어 여러분이 좋아하는 일을 하면서 돈을 벌어보세요. assetstore.unity.com 먼저 이 사이트를 클릭해라!! 시작하기를 누르고! 제일먼저 프로필을 수정해주어야 한다! 그다음 모든 패키지 보기 누르고 패키지 생성을 눌러라!! 패키지 이름과 카테고리를 설정 후 내 패키지 생성을 눌러준다! 이런 화면이 뜰 것이다 Asset Store에 가서 Asset Store Tools를 다운받아..
유일무이 10손가락 이용해서 HandTracking하는 영상 유일무이가 아닐수도 ㅎㅎ.... 혹시 이미 해내신 분이 계신다면 죄송요...
CASTOWN 트레일 영상 개발실력이 영상퀄리티를 따라가지 못해 아쉬운 마음이 가득했던 프로젝트였습니다. CASTOWN프로젝트를 통해 처음 핸드트래킹 개발을 진행했기에 퀄리티가 미흡하다는 변명은 핑계겠죠?하하ㅠ 저의 개발실력이 아직 많이 부족하다는 것을 느꼈고 앞으로 더 많은 프로젝트를 통해 VR개발 실력을 발전하고 싶다는 계기가 되었습니다. + 핸드트래킹 기술도 아직 부족한 기술이라는 것도 많이 느끼게 되었습니다. 저를 믿고 맡겨주신 디자이너분들께 매우 감사드리며 더 나은 퀄리티를 뽑아내지 못해 아쉬운 마음 죄송한 마음도 알아주셨으면 좋겠네요ㅠㅠㅠ 다들 좋은 성적받기를 기도하며 행복한 미래만 가득하시길..... (무상으로 진행된 프로젝트며 저의 열정을 담았을 뿐...) 실제 프로젝트(인게임) 영상
나중에 따로 손모델 만들어서 해볼예정 아직 프로토타입 #1 이건 컨트롤러가 아닌 Hand Tracking으로 하는중
PokeInteractor에 대해 공부하는 도중 Start함수에 Assert.IsNotNull이라는 낯선 친구를 발견했다 이게 뭘까 싶어서 Unity Assert.IsNotNull 이라고 검색해봤는데 원하던 내용을 찾지 못했다 Assert라는 녀석은 C/C++ 에서 사용되는 녀석이고 디버깅 모드에서 개발자가 오류가 생기면 치명적일 것이라는 곳에 심어 놓는 에러 검출용 코드라고 한다! Asset함수에 걸리게 되면 버그 발생위치, call Stack 등 여러 정보를 알 수 있다고 한다 규모가 큰 프로젝트에서 이런 call stack, dump 의 흔적이 정말 중요하다고 하기 때문에 assert함수를 잘 사용하면상대적으로 적은 시간 안에 버그를 찾을 수 있다고 한다! 실험을 해보았다!먼저 간단한 코드다 1초마..
기존 PokeInteractor같은 경우 한 손가락으로만 Poke하는 인터렉션이 가능하다 나는 5손가락이 다 가능하게끔 했다 핸드트래킹 기술을 이용해 다섯개의 손가락을 사용해 키보드를 두드릴 수 있다!