반응형

프로그래밍 정리 298

[Unity - 유니티] 입사각의 반대각을 통한 이펙트 효과(ex: 총알이 벽에 맞았을 때)

입사각 - 들어오는 빛이랑 법선(거울면에 수직인선)이랑 이루는 각 입사각=> (충돌 지점 벡터 - 발사 원점 벡터)Vector3 Pos = crashVector.position - fireVector.position; 반대각=> (발사 원점 벡터 - 충돌 지점 벡터)Vector3 Pos = fireVector.position - crashVector.position; 예를 들어 총알이 벽에 부딪혀 이펙트 효과를 보여줄 때총알이 나간 부분에서 반대로 이펙트를 보여주어야 하기 때문에반사각을 구해서 이펙트를 생성.ex)// 반대각Vector3 Pos = fireVector.position - crashVector.position; // 입사각의 반대인 반대각으로 이펙트 생성Object obj = Instant..

[Unity - 유니티] 궤적 효과(ex:총알) - Trail Render

궤적 표현은 객체가 이동시에 동적으로 매쉬를 만들어 일정 시간이 흐른 다음 생성된 메쉬를 제거함.메쉬의 동적 생성을 쉽게 처리해주는 Trail Render컴포넌트를 제공. 프리팹을 선택하고 메뉴의 Component-Effect-Trail Render를 선택하여Trail Render를 컴포넌트를 추가. 메쉬의 색이 분홍색으로 나오는 경우는 연결된 머터리얼이 없다는 것으로 Trail Render 머터리얼을 연결하면 됨. Trail Render 컴포너트 속성 Time 생성된 메쉬의 지속시간(일정시간이 지나면 자동으로 생성한 동적메쉬를 소멸) 값이 클수록 지속시간이 길어져 꼬리가 길게 표현. Start Width 시작시 메쉬의 폭 End Width 종료시 메쉬의 폭 Colors Material에 연결된 텍스처 ..

[Unity - 유니티] Gizomos - Gizoms.Draw, OnDrawGizoms

보이지 않는 게임오브젝트는 Scene뷰에서 클릭할 수 없다.또한 보이지 않아 선택하지 않았을 때 위치를 파악하기도 힘들다. 이처럼 Mesh가 없는 빈 게임오브젝트를 Gizmo를 활용해 불편함을 해소할 수 있음.기즈모는 유니티 에디터에서만 보이고 실행 시에는 보이지 않음. public Color mColor = Color.red;pbulic float mRadius = 0.1f; void OnDrawGizoms(){Gizmos.color = mColor; // 첫번째 인수 : 생성위치// 두번째 인수 : 반지름Gizoms.DrawSphere(transform.position, mRadius);// DrawLine, DrawCube 등 여러가지가 있음.}

[Unity - 유니티] AddForce - rigidbody 컴포넌트에 힘을 가하는 함수

rigidbody.AddForce(transform.forward * speed); rigidbody 컴포넌트에 힘을 가하는 함수=> void AddForce(Vector3 force);=> void AddReleativeForce(Vector3 force); AddForce 함수의 인수에 Vecotr3.forward * speed를 하면월드좌표 기준으로 힘이 가해져 만약 y축이 회전하더라도항상 같은 월드 좌표의 Z축 방향으로 날아가게됨. 해당 게임오브젝트의 로컬 좌표를 기준으로 힘을 줄려면transform.forward * speed 또는 AddRelativeForce 함수를 사용.AddRelativeForce 함수는 로컬 좌표를 기준으로 Rigidbody에 힘을 주는 함수.

[Unity - 유니티] CrossFade - 애니메이션 변화를 부드럽게...

애니메이션이 변경될 때 급격히 바뀌면 어색한 동작이 연출될 수 있음.CrossFade 블렌딩 함수를 통해 부드럽게 애니메이션의 변화가 이뤄질수 있게 해줌. CrossFade 함수는 두 가지 인수가 있음.첫 번째 인수는 변경할 애니메이션 클립의 명칭.두 번째 인수는 다른 애니메이션 클립으로 FadeOut되는 시간. ex)Animation anim; _animation.CrossFade(anim.runForward.name, 0.3f);_animation.CrossFade(anim.runBackground.name, 0.3f);_animation.CrossFade(anim.runRight.name, 0.3f);...

반응형