분류 전체보기 49

[Unity]Job System + String

Unity Job System에서는 NativeArray를 사용하기 떄문에 기본적으로 string으로 사용하지 못합니다. 정확히는 NativeArray을 사용하지 못합니다. 금칙어를 구현하는 과정이었고 다량의 string비교가 있어서 성능적인 이슈가 많아 Job을 사용하려고 Job + string을 여러 방면으로 연구 하였고 방법을 찾긴 했지만 효과적이지 못했습니다. 부분적으로나마 JobSystem + string을 사용 가능한 방법을 찾아 정리해 봅니다. private NativeArray _sourceWords; private NativeArray _result; private string _testString = "hello\nworld\nhealthy\ncoffee\ncafe\nkeyboard";..

Unity Engine 2023.03.03

Cinemachine - Impulse + SecondaryNoise

Impulse와 그에 따른노이즈를 함께 사용하는 방법 입니다. void Update() { if (Input.GetKeyDown(KeyCode.Space)) { DoImpulse(); } } private void DoImpulse() { _source.m_DefaultVelocity = new Vector3(0, 0, 3f); _source.m_ImpulseDefinition.m_ImpulseDuration = 0.5f; _source.m_ImpulseDefinition.m_ImpulseChannel = 1; _source.GenerateImpulse(); } Impulse는 기존과 동일한 방식을 사용합니다. 스페이스바를 누르면 Impulse가 동작 하도록 하는 방식입니다. 이제 여기에 추가할 Nois..

Unity Engine 2023.02.09

Cinemachine - Impulse

Cinemachine Virtual Camera 에서 화면을 흔드는 것중 하나인 Cinemachine Impulse는 Noise보다 좀 더 정확하고 방향성을 가진 흔들림에 적합합니다. Noise가 단순히 피격 후나 걷기 등의 흔들림을 표현 할 수 있따면 Impulse는 총기 반동등을 표현 할 수 있습니다. Cinemachine Impulse 설정 우선 Cinemachine Impulse Listener를 추가 해야 합니다. 일반적인 컴퍼넌트 추가 방식이 아니고 Cinemachine Virtual Camera에서 하단에 Extensions가 보이는데 여기서 CinemachineImpulseListener를 추가해 줍니다. 이제 Impulse를 받는쪽은 되었으니까 주는 쪽을 추가 해 줍니다. Cinemach..

Unity Engine 2023.01.02

Cinemachine - Noise

시네머신에서 카메라 흔들림을 주는것은 주로 2가지로 줄 수 있습니다. - Noise - Impulse Noise 노이즈는 주로 방향성이 없는 혹은 일정한 주기를 지니고 있는 진동등에서 사용 합니다. 우선 이전 예제에서 사용하고 있던 VirtualCamera 입니다. Noise 항목을 클릭하게 되면 Basic Multi Channel Perlin이 있습니다. 선택해 줍니다. Noise항목 내용이 변경되는데 이중에서 Noise Profile을 열어보면 다양한 항목들이 있습니다. 테스트용이기 때문에 일단 아무거나 (6D Shake) 선택 해 줍니다. 그리고 게임 플레이를 해보게 되면 카메라가 흔들리는 모습을 볼 수 있습니다. 기본적인 컨트롤 방법은 제작된 노이즈에 배율을 정해 주는 것 입니다. 기본적인 강도조..

Unity Engine 2022.12.29

[Unity] Cinemachine - Blend

Default Blend CinemachineBrain을 살펴보면 하단부에 Blend에 관련된 항목들이 있습니다. 카메라간 전환될떄 어떻게 처리할 것인지에 관한 내용입니다. Default Blend들은 흔히들 아시는 그런 항목들 입니다. 그중에서 Custom 항목이 있는데 이것은 그래프 직접 그리는 것입니다. Custom을 선택 해 주면 우측에 빈 공간 하나가 생깁니다. 클릭 해 주면 그래프 그릴 수 있는 창이 나옵니다. 하단에 프리셋이 있고 그거 기반으로 더 꺽어 주셔도 되고 합니다. Default만 쓰실거면 적절한것 골라서 써주시면 되고 우측에 s라고 표시된 항목은 Blend 시간 입니다. 원하시는 시간 넣어주시면 됩니다. Custom Blends 이제 진짜 Custom Blend입니다. 하단에 Cu..

Unity Engine 2022.12.21

[Unity] Cinemachine - 초기 세팅

https://unity.com/unity/features/editor/art-and-design/cinemachine Cinemachine Learn how Unity's Cinemachine makes complex camerawork – including target tracking, composing, blending, and cutting – easy and intuitive. unity.com 시네머신은 카메라의 다양한 컨트롤을 하기 위해 사용합니다. 이름에서 알수 있듯이 영화쪽에서도 쓸 수 있다고 안내하고 있습니다. 초기세팅 및 카메라 전환을 간단히 알아 보겠습니다. 설치 시네머신은 기본으로 설치되어 있지 않습니다. 따라서 패키지 매니저에서 선택 해 줍니다. 패키지 종류를 Unity Regi..

Unity Engine 2022.12.19

[Unity] CharacterController.Move 가 Update에서 동작하지 않는 현상

서론 최근 이상한 일을 겪었습니다. CharacterController.Move 가 Update에서 동작하지 않고 FixedUpdate에서만 동작하는 현상입니다. Google에서 검색해도 비슷한 현상에 대한 내용은 몇건 찾을 수 있었으나 정확한 내용은 없었고 FixedUpdate로 옮겼다는 글만 몇개 보았습니다. 원인은 단순한 문제가 복잡하게 얽혀 있었습니다. 1. 너무나도 높은 프레임 2. CharacterController의 Min Move Distance 값. Update Update는 가능한 호출할 수 있는 만큼 자주 호출되는 녀석이고 FixedUpdate는 고정된 주기로 호출되는 녀석 입니다. 따로 수정하지 않는다면 FixedUpdate는 0.02초마다 호출됩니다. Update는 부하가 심하지 ..

Unity Engine 2022.12.16

콘솔 게임 개발 과정에서 느낀점

콘솔게임을 개발하고 있으며 이 과정에서 느낀점. PlayStation4, XboxOne(8세대) 생각보다 CPU의 성능이 낮고 한계에 일찍 도달합니다. 그래픽은 눈을 조금만 낮추면 할만 합니다. 그래픽을 좀 낮게 잡는다고 생각하면 메모리는 생각보다 널널합니다. 디버깅이 생각보다 잘 되지 않아서 로그심고 보면서 하거나 크래시의 경우 덤프보는것이 빠른 경우가 많았습니다. 프로파일러는 플랫폼 제공이 있고 유니티가 직접 붙을수 있는데(예전에는 안됐었던것 같음) 직접 붙는게 좀 편한 느낌. PlayStation5, XSX/XSS(9세대) 보통 8세대 게임기와 같이 개발하게 되는데 같이 개발하게되면 상대적으로 엄청난 성능에 놀라게 됩니다. 그렇다고 PC마냥 엄청난건 아니고 어디까지나 8세대 대비 좋은 성능. 욕심 ..

기타 2022.12.03

유용한 공식 - 직선에 대한 한 점의 직각 좌표 구하기

제목이 약간 애매한데 그림을 보시면 이해가 빠르실 것입니다. 화면 하단에 플레이어가 있습니다. 플레이어의 forward는 붉은색 직선 입니다. 우측에 적이 있습니다. 플레이어의 forward기준으로 직각이 되는 녹색 직선을 구하는 - 정확히는 녹색직선과 붉은색 직선의 교차점을 구하는 내용 입니다. 이 내용을 찾아보게 된 것은 실제로 필요 해서였고 붉은색 직선을 기준으로 좌우로 데미지가 약해지는 등의 기획에서 쓸 수 있습니다. Collider를 분리하면 되지 않냐고 할수 있겠지만 Collider를 적게 쓰는것이 서버와의 협업에 좋았기 떄문에 이러한 공식을 찾게 되었습니다. 우선 이름을 정하자면 A : 플레이어 B : 목표 C : 교차점 모든 계산은 A를 기준으로 처리 합니다. void Start() { V..

Unity Engine 2022.11.10

[Unity]CollisionFlag - CharacterController

객체가 현재 어떻게 충돌하고 있는지 판단하는 방법은 여러가지나 CharacterController를 사용하고 있다면 비교적 쉽게 판단 할 수 있습니다. CharacterController.Move()를 사용한다면 CollisionFlags를 반환하게 되는데 이것은 현재 어떤 충돌상황인지를 나타내고 있습니다. 우선 단순한 바닥을 만들고 그 위에 캡슐을 올리고 CharacterController를 붙여 줍니다. 기본형 객체를 만들면 Collider가 붙어있는데 그것은 제거해 줍니다. void Start() { _controller = GetComponent() as CharacterController; print("1 : " + _controller.collisionFlags); CollisionFlags ..

Unity Engine 2022.11.06