목록프로그래밍/UnityEngine기초 (21)
有希
Button의 Inspector를 내리다보면 On Click()이 있는데, 이것이 버튼을 눌렀을 때 어떻게 작동할 것인가를 나타낸다. Sort_order는 겹쳐져 있을 때 ,어느것이 먼저 보이느냐를 결정한다.
게임 오브젝트로 여겨진다. 우클릭으로 유니티 제공 UI오브젝트를 생성했을 때, 같이 생기는 Event System은 Event를 조절하기 위한 간접적인 도구라고 생각하면 된다. 일종의 Manager 역할을 하는 녀석으로. UI는 Canvas를 가진 애 한테만 붙여야 한다. 없는 애 한테 붙이면 아무 역할도 하지 못한다. Pivot은 중심점을 기준으로 UI를 회전시킬 수 있다. UI의 내부를 클릭하면 생기는 엄브렐라사? 같은 마크는 앵커라는 애이다. UI가 만들어진건 3D오브젝트이지만 2D로 생각해도 된다. 화면크기에 따라서 여백과 비율등을 조절해야 하는데, 이를 위해서 rect transform을 사용한다. UI에서 앵커를 사용한다는 것은 부모와 연관성이 깊다. 버튼의 부모가 Panel일 때, 패널을 기..
몇 초 기다렸다가 이벤트를 실행하도록 만들었다면 다른 애니메이션을 변화시키거나 했을 때, 그 이후의 애니메이션의 발동 시간을 모두 수정해줘야 한다. 그래서 Events 란에서 Event핀을 사용해서 callback방식을 Event를 발동한다. Animation의 events란을 열어서 원하는 함수명을 입력한 뒤, Float Int String의 인자들을 넘겨줄 수 있다. 하지만 한 번에 하나의 인자만 넘겨줄 수 있다.
Add Key는 어떤 시간에 어떤 변화가 일어날 것이다 라는 암시. 어느 시간대에는 어디에 있고 어느 시간대에는 어디에 있다고 하여 그 사이는 일일이 수작업이 아닌 보간작업처럼 보정을 하는 방식으로 애니메이션을 제작하는 편이 편하다. (화면을 못 찍었는데 애니메이터? 애니메이션?을 클릭해서 그래프도 그릴 수 있고 시간에 따른 오브젝트의 위치도 설정할 수 있는 화면이었다.)
state들을 정리해 놓은 곳. animator에서 여러 개를 화살표로 이었을 때, Transitions 순서대로 애니메이션이 실행된다. 애니메이션인 따로 구성되어있고 이들을 연결시켜 줄 때 유요하다. !어떤 애니메이션은 무한으로 실행되고 어떤건 안되면 Loop 속성을 체크해주자. HasExitTime을 체크해버리면 코드에서 설정한 대로 Update에 맞춰 바로 애니메이션이 실행 되는것이 아닌, 진행중인 애니메이션이 다 끝나거 나서야 상황에 맞춘 애니메이션이 실행된다.
Enum을 사용해서 Player의 상태를 저장하여 switch로 활용한다. 이렇게 하게 되면 함수나 bool을 사용하여 할 때보다 관리가 편하고, 실수로 상태를 중첩할 일이 없어서 좋다. playerState _state와 같이 선언해서 사용하게 되면 한 번에 하나의 값만 들어가기 때문.
Animation은 Type이 같으면 대부분 호환된다. UnityChan의 경우에는 Humanoid. Animation Component의 경우에는 legacy이니 웬만하면 Animator를 사용할것 Animator는 짧은 영상들을 재생해주는 동영상 플레이어 같은 역할이다 Animation blend는 두 애니메이션을 섞어서 부자연스럽게 뚝뚝 끊기는 것을 방지해준다 -예를 들어, 걷는모션 뛰는모션이 있다면 두 개를 섞어서 걷다가 뛰고 뀌다가 걷는 것을 자연스럽게 Mix -사용법은 animator에서 blend를 사용하여 두 모션을 섞어준다.
게임 내 화면을 보여주는 녀석 디아블로 같은 게임을 보면 카메라가 플레이어를 따라다니는데, Camera Controller를 따로 사용하어 셜정한다. Controller - Camera의 관계로 엮어주어 Controller에 player캐릭터를 붙여 해당 캐릭터의 상대 좌표로 이동하도록 하는 update() 함수를 수정하면 된다. void Update() { transform.position = _player.transform.position + _delta; } _delta는 플레이어로부터의 원하는 카메라 위치로의 벡터이다. 카메라 위치가 플레이어로부터 _delta만큼 떨어져 있다고 보면 될듯. 이걸 실행하다보면 카메라가 분명 캐릭터를 따라가는데, 캐릭터가 부드부들 거리는게 보일 것이다. 이 문제는 캐..
말 그대로, 광선을 쏜다.(엑스칼리버) 게임 속 세상은 3D인데, 화면은 2D이다. 그래서 화면에서 딱 클릭했을 때, 3D세상 속의 물체를 선택하기 위해 사용한다. 광선을 쏴서 충돌하는 물체가 있는지 없는지 판단한다. 광선이 Collider컴포넌트를 가진 녀석과 충돌하면 이벤트를 처리한다. Physics.Raycast를 사용하면 여러 물체가 광선 상에 있을 때 하나의 물체에 대해서만(가장 앞 녀석) 충돌을 처리하고, 뒤에것으로는 뚫지 못한다. Physics.RaycastAll을 사용하면 전부다 뚫고, 결과 또한 배열로 받아주어야 한다. 아래는 예시 코드 void Update() { //캐릭터가 보는 방향 얻어내기 Vector3 look = transform.TransformDirection(Vector3..
[Collision] 객체와 객체가 서로 닿았다는 개념. 게임에 있어서 충돌은 중요하다 [RigidBody] Unity에서 물리를 적용받기 위해 붙여줘야 하는 Component. isKinematic을 키면 충돌이 안되는데, Rigidbody와 isKinematic을 함께 사용하는 경우는 칼로 몬스터를 썬다거나 할 때 충돌은 하지않으면서 '충돌했다는 사실'을 가지고 이벤트를 처리하기 위해 사용한다.' 여러 속성 중 궁금했던 속성들을 사용해보고 대충 해석해봤다. -UseGravity: 중력 적용 여부 -FreezeRotation: Cube같은 다른 RigidBody와 조작하는 Object가 충돌하였을때, UnityChan같은 경우에는 부들부들 떠는 모습이 보이는데, 이는 회전을 하기 때문이고 x,y,z에 ..