본문 바로가기
반응형

Unity8

[Graphics]외적은 무조건 오른손 법칙을 사용하는가? 외적 벡터 곱(cross product)로 두 벡터에 수직인 다른 벡터로 나오며 오른손 법칙에 의해 수직 방향이 결정된다. 계기 외적을 사용하던 중 생각했던 것과 다르게 나타나는 것을 알게 되었다. 이 문제가 왜 일어나게 되었는지 어떻게 해결하면 좋을까 싶어 조사를 하였다. void ASCharacter::UpdateMouseVector() { LastForward = GetActorForwardVector(); //1: (액터의 정면 x축) X (액터의 위 z축) StrafeVector = FVector::CrossProduct(LastForward,GetActorUpVector()); //2: (액터의 위 z축) X (액터의 정면 x축) StrafeVector = FVector::CrossProduc.. 2024. 3. 21.
Awake()와 Start()의 차이 개요 Awake(), Start()는 MonoBehaviour에서 파생된 클래스의 이벤트 함수이다. 기본적으로 Awake()→Start()로 진행되며 초기화와 관련이 있다는 것은 모두 알고 있을 것이다. 그렇다면 Awake(), Start()함수들이 한 번에 사용해도 되는데 왜 구분을 하였을까? 차이점부터 알아보자. Awake()와 Start()의 차이 Awake()는 해당 스크립트가 있는 오브젝트가 초기화 될 때 호출된다. Start()는 Update가 실행되기 전 첫 프레임에 호출된다. 초기화를 위해서 Awake()만 실행하면 되지 않을까 생각되지만 그렇지 않은 이유가 있다. 컴포넌트 참조 문제 Awake는 실행이 될 때, 각 오브젝트들의 Awake()가 언제 실행될지 모른다. Awake()에서 참조.. 2022. 7. 25.
Physcis.CheckBox와 OnTriggerEnter Physcis.CheckBox 해당 함수가 포함되어 있는 오브젝트는 다른 콜라이더와 겹치는지를 확인한다. 리턴 값은 bool로 겹침 여부만 반환한다. 박스 콜라이더를 추가하지 않고도 특정 레이어와 겹침여부를 확인을 할 수 있으며 오브젝트와 순간적인 판정에 사용하면 좋다. 사용방식 Physics.CheckBox(Vector3 center,Vector3 halfExtents,Quaternion orientation=Quaternion.identity,int layerMask = DefaultRaycastLayers) center 박스의 중심 halfExtents 박스 길이의 절반 orientation 박스의 회전 layermask 충돌했을 때 무시할 레이어 단점 설정된 범위는 시각적으로 보이지 않기 때문에 .. 2022. 6. 10.
ShaderLab 알아보기 SubShader 각 셰이더는 최소 한개의 SubShader를 가진다. 지원이 되는 API: SubShader가 실행됩니다. 지원이 되지 않는 API: Fallback 컴포넌트를 활용해 그래픽 에러 없이 실행이 될 수 있도록 합니다. Shader "Unlit/Drawers" { Properties { ... } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { ... } } } Tags 셰이더가 어떤방식으로 언제 진행되야할지 알려주는 라벨이다. 사용방식 SubShader 내부에서 사용 모든 pass에 영향을 준다. pass 내부에서 사용 해당 pass만 영향을 받는다. SubShader { 1. Tags { "RenderType"="Opaque" } .. 2022. 3. 31.
[Material property drawer(4)] PowerSlider , IntRange 사용하기 이 drawer들은 수치범위와 정밀도 작업에 유용합니다. PowerSlider 곡선형태로 제어되는 비선형 슬라이더이다. IntRange 수치범위를 정수로 표현한다. Properties { [PowerSlider(3.0)] _Brightness("Brightness",Range(0.01,1)) =0.05 [IntRange] _Sample("Samples",Range(0,255)) = 50 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { float _Brightness; float _Samples; ... ENDCG } Inspector에서 표현 2022. 3. 30.
[Material property drawer(3)] Enum 사용하기 Enum KeywordEnum가 비슷하지만 인자로 value/id로 구성되어있다. 이 프로퍼티는 인스펙터 상에서 동적으로 기능을 변경할 수있도록 셰이더 내부의 명령어로 전달한다. Properties { //Enum(Value0,Id0,Value1,Id1,etc...) [Enum(Off,0,Front,1,Back,2)] _Face("Culling",Float) = 0 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Cull [_Face] Pass { ... } ENDCG } } 주로 Cull명령어에서 찾아볼 수 있다. “_Face” Enum타입 프로퍼티를 선언하여 사용한다. Inspector창에서 수정이 가능한 Enum타입의 프로퍼티 2022. 3. 27.
반응형