분류 전체보기
-
24년 6월 5일 TIL공부 기록 2024. 6. 5. 16:15
Quaternion.Slerp 매개변수 3개 ex) 0, 100, 0.1 -> 0에서 100의 중간 값. 0.1 -> 한 번 실행 될 때 10만큼 이동. rigidbody 레이충돌은 rigidbody가 없어도 됨. 프리펩을 직접 수정 하게 되면 프리펩에서 수정해도 하이어라키에 있는 것들 적용 안 됨.그러니까 막 만지지 말자. Quaternion.Euler와 Quaternion.EulerAngles의 차이.Euler가 좀 더 직관적이다. 90도까지만 회전을 하게 하고 싶었는데 EulerAngles 90도 이상 넘어갔다. 그 이유는 90도라고 하더라도 내부적으로 계산 어쩌구 ..... 해서 90도가 아니라고 한다. Euler는 90 코루틴
-
24년 6월 4일 TIL공부 기록 2024. 6. 4. 19:00
Time.time: 게임이 시작된 후 경과된 시간.Ray, RaycastHit, 그리고 Physics.Raycast는 Unity에서 레이캐스트(광선 투사)를 통해 게임 오브젝트와의 충돌을 검사하는 데 사용. 이 과정은 주로 플레이어가 게임 내 객체와 상호작용하거나 충돌을 감지할 때 사용 된다.핵심 개념Ray: 시작점과 방향을 갖는 광선. 화면 중심에서 특정 방향으로 발사할 수 있다.RaycastHit: Ray가 충돌한 정보를 담는 '구조체'. 충돌한 객체의 위치, 충돌 지점의 노멀, 충돌한 게임 오브젝트 등 다양한 정보를 제공.Physics.Raycast: 광선을 발사하여 광선이 충돌한 객체를 감지하는 함수. 충돌 정보는 RaycastHit 구조체에 저장. bool값을 반환. 맞나?if (Physics...
-
스파르타3D서바이벌/아이템장착기능/유니티숙련주차게임 개발기록 2024. 6. 4. 18:59
public void OnEquipButton() { if (slots[curEquipIndex].equipped) { UnEquip(curEquipIndex); } slots[selectedItemIndex].equipped = true; curEquipIndex = selectedItemIndex; CharacterManager.Instance.Player.equip.EquipNew(selectedItem); UpdateUI(); SelectItem(selectedItemIndex); }이라는 함수를 작성 하고 장착 버튼에 등록을 해준다. if (slots[curEquipIndex].equipped) { ..
-
스파르타3D서바이벌/아이템사용기능/유니티숙련주차게임 개발기록 2024. 6. 4. 16:06
인벤토리에 있는 아이템을 사용 하는 기능을 구현한다. 먼저 버튼들을 등록 해둔 것이 있을 것이다. 아이템 타입에 맞는 버튼이 활성화 되게 하고, 버튼을 클릭 했을 경우에 알맞는 로직이 실행 되게 하면 된다. 우린 먼저 아이템을 클릭 할 경우에 실행이 되게 할 코드를 작성 했었다. public void OnClickButton() { inventory.SelectItem(index); }라는 코드를 이제 작성 해주도록 한다. (index는 ItemSlot에 저장 돼 있는 변수) public void SelectItem(int index) { if (slots[index].item == null) return; selectedItem = slots[index].item; ..
-
스파르타3D서바이벌게임/Inventory만들기/유니티 숙련주차게임 개발기록 2024. 6. 4. 15:08
ItemSlot들을 갖고 있는 UIInventory 클래스를 만들어서 인벤토리 기능을 구현 해보도록 하자. UIInvetory 오브젝트가 여러 버튼들을 관리 하는 것처럼 여러 아이템슬롯도 관리 할 수 있게 만드는 것이다. 그러기 위해서 ItemSlot의 객체를 UIInventory에서 생성을 하는 것이다. 먼저 사진을 보는 것처럼 여러 버튼이 있는 걸 볼 수가 있다. 이걸 관리 할 수 있게 변수들을 만들어 주자. [Header("Select Item")] public TextMeshProUGUI selectedItemName; public TextMeshProUGUI selectedItemDescription; public TextMeshProUGUI selectedStatName; public Tex..
-
스파르타3D서바이벌게임 / ItemSlot 만들기 / 유니티숙련주차게임 개발기록 2024. 6. 4. 13:43
인벤토리를 만들기에 앞서 인벤토리에 표시 할 아이템슬롯 오브젝트를 만들어 주자. 이 아이템 슬롯을 여러 개 만들고 아이템을 줍게 되면 아이템 슬롯에 해당 데이터들이 저장 되게 하고 표시 되게 해주자. 이 아이템 슬롯은 UI로써 이미지를 통해서 만들어주고 Icon과 몇 개를 가지고 있는지 글자도 보이게 만들어 주자.이런 느낌에 아이템 슬롯을 만들어 준다. 그리고 이제 이 아이템 슬롯이 내가 주운 아이템을 표시하게 Script를 작성 해주면 된다. 그 전에 Inventory 화면을 다 만들어 두고 Script를 작성 하자. 이렇게 인벤토리 뒷면을 만들어 준다. 그리고 저 빈 공간에 아이템 슬롯을 미리 만들어 두면 된다. 이 때 빈 객체를 하나 생성 하고 저 빈공간에 알맞은 사이즈를 맞춘 후에 grid ..
-
스파르타 3D 서바이벌게임 / 상호작용기능 만들기 / 유니티 숙련주차게임 개발기록 2024. 6. 4. 02:19
우린 마우스를 아이템이나 특정 오브젝트들에게 갖다 대면 클릭이나 어떤 것을 할 수 있게 하고 상호작용이 일어나게 할 것인데 이 기능을 Ray를 통해 구현 할 것이다. 화면 중앙에 계속 해서 Ray를 쏴서 아이템에 충돌이 되면 그 아이템에 관련 된 기능들이 실행이 되게 할 것이다. 그래서 화면 중앙에 계속 해서 Ray를 쏘는 Class를 만들어 주자. Interaction이란 이름으로 클래스를 만들어 주겠다. Ray를 계속 쏘게 하기 위해서 몇 가지 변수들이 필요하다. Ray를 Update에서 계속 쏘게 할 것인데 이거를 매 프레임마다 계속해서 쏘게 되면 성능에 문제가 생길 것이다. 그래서 변수들을 만들어서 특정 시간마다 Ray를 쏘게 해준다. 그래서 먼저 지정해둔 시간마다 Ray를 쏘게 해줄 변수를..
-
스파르타 3D 서바이벌 게임 / 아이템 만들기 / 유니티 숙련주차게임 개발기록 2024. 6. 4. 01:11
아이템 스크립트를 만들고 아이템을 레이캐스트를 이용하여 상호작용 하게끔 만들자. 먼저 아이템은 데이터들을 갖고 있다. 아이템의 이름, 효과, 설명 등등을 갖고 있고 이걸 ScriptableObject로 만들어서 관리 하고 아이템 오브젝트 클래스에서 아이템을 작성해준다. 아이템오브젝트는 아이템데이터를 갖고 있고, 아이템 사용과 아이템의 설명이 나오게 하는 함수를 인터페이스 형식으로 갖고 있다. 그리고 상호작용 하는 클래스를 만들고, 거기서 레이캐스트를 계속 해서 쏴서 아이템에 마우스를 갖다대면 아이템의 정보가 나오고, 특정 키를 누르면 아이템을 줍게 하는 기능을 만들자. 먼저 ScriptableObject를 이용하여 데이터를 관리 하는 이유에 대해서, 그것은 관리하기 더욱 편하기 때문이라고 할 수 있다..