2024/06 9

발사체 캐릭터 에셋 적용 시 물리 적용 안됨 문제 해결

분명 발사체를 Sphere 오브젝트로 했을 때는 정상적으로 작동하였다.근데...  내가 하루를 통째로 갈아서 만든 새총 물리 구현이 죽었다....  일단 보이는 문제는 이러하다궤적의 높이가 너무 낮게 생성된다.발사체가 던져진 후, 위로 등속도 이동을 한다.이외에도 고무가 위아래로 움직이는 것과 당길 때 받침대가 뒷 쪽을 본다는 문제점이 있지만, 이는 새총 자체의 문제이므로 나중에 해결하기로 했다.   궤적 높이 문제 의외로 간단하게 해결되었다.마우스를 조금만 움직여도 캐릭터 위치가 휙휙 바뀌어서 조작감을 위해 마우스 위치 차이의 값에 50.0f 를 나누었었다.그런데 그러면 궤적도 너무 낮게 나오고, 던지는 힘도 많이 약해져서 그 부분의 변수에 10.0f 정도를 곱했었는데 너무 적었나보다.30.0f 값을 ..

문제 해결 2024.06.26

[멋쟁이사자처럼 유니티 TIL] 딕셔너리 인스펙터에 노출시키기, 커스텀 에디터로 데이터 이사하기 (+ TryGetValue, ISerializationCallbackReceiver, SerializedDictionary)

목차▶ 딕셔너리 직렬화하는 법    → 시간복잡도(Big-O)    → TryGetValue    → ISerializationCallbackReceiver    → SerializedDictionary ▶ 커스텀 에디터로 데이터 이사하는 법  오늘은 코드를 예쁘게 짜는 리팩토링 작업을 하였다.주로 NewChanController 스크립트의 기능들을 DamageField 스크립트로 옮기는 작업을 하였다. 이 과정에서 딕셔너리를 쓰게 되었다.   딕셔너리를 쓴 이유 바로 시간복잡도 때문이다. 자료 구조추가검색삭제인덱스 접근ListO(1)O(n)O(n)O(1)DictionaryO(1)O(1)O(1)- 여기서 O(n)는 Big-O 라는 아이인데,알고리즘이 얼마나 효율적인지를 나타내는 표기법이다. n : 연산의..

부트캠프 2024.06.20

[멋쟁이사자처럼 유니티 TIL] 접근 제한자 개념, 에디터 스크립팅

접근제한자 : 변수 선언 시 해당 변수에 대한 접근의 범위를 정하는 키워드이다.  ● 종류 및 특징 private - 클래스 내에서만 접근 가능하다.- 외부에서는 호출, 수정 모두 불가능하다.- 접근제한자를 입력하지 않고 선언 시, private으로 설정된다. protected- 상속 받은 클래스들만 접근 가능하다.- 호출은 가능하나, 수정은 불가능하다. public- 접근이 자유롭다.- 호출과 수정 모두 가능하다. SerializeField- private이지만, 유니티 에디터에서 접근과 제어가 가능하다. internal- 같은 어셈블리(프로젝트) 에서만 접근이 가능하다.      에디터 스크립팅 : 코드를 입력하여 에디터를 만드는 것이다.  에디터 스크립팅을 통해 나만의 커스텀 에디터 창과 컴포넌트를..

부트캠프 2024.06.15

[멋쟁이사자처럼 유니티 TIL] 대리자(delegate)와 이벤트 실습, 공격 모션 구현 (+ (Ctrl + H), 리타겟팅)

Delegate(대리자) : 메서드의 참조를 저장하고 필요에 따라 호출할 수 있는 형식.네임 스페이스나 클래스 내에 선언한다. 조금 더 자세한 개념은 저번 글을 보면 알 수 있다.https://snack-game.tistory.com/13 [멋쟁이사자처럼 유니티 TIL] UI 슬라이더, 체력바 구현 (+ 델리게이트(delegate), 이벤트)슬라이더 ● 생성 방법Hierarchy 에서 마우스 오른쪽 클릭  → UI → Slider 를 클릭  ● 구성 요소 슬라이더를 생성하면 자식 개체 여러 개가 함께 생성된다. - Background : 슬라이더를 비활성화 시snack-game.tistory.com  델리게이트 이해에는 실습이 직빵이다.라고 강사님이 말하셨다.  ● 델리게이트를 쓰지 않은 경우  p..

부트캠프 2024.06.12

[멋쟁이사자처럼 유니티 TIL] UI 슬라이더, 체력바 구현 (+ 델리게이트(delegate), 이벤트)

슬라이더 ● 생성 방법Hierarchy 에서 마우스 오른쪽 클릭  → UI → Slider 를 클릭  ● 구성 요소 슬라이더를 생성하면 자식 개체 여러 개가 함께 생성된다. - Background : 슬라이더를 비활성화 시켰을 때의 이미지. 슬라이더의 배경. - Fill Area : 슬라이더를 활성화 시켰을 때의 이미지. Background를 채우는 이미지. - Handle Slide Area : 슬라이더의 손잡이. 슬라이더를 마우스로 직접 작동시킬 때 필요한 버튼.  ● 구현 예시 이동 속도를 조절하는 바를 만들어보자 ① Slider를 생성한다. 이때 자동으로 Canvas도 함께 생성된다. ② 원하는 위치로 앵커를 설정한다. 본인의 경우 하단 가운데에 위치하도록 center의 bottom으로 지정하였다..

유니티 2024.06.11

[멋쟁이사자처럼 유니티 TIL] node.js을 통한 비동기 서버 구축 구현 (+ 서버 구축 관련 용어 정리, 벡터와 라디안으로 회전 구현, 비동기 프로그래밍)

벡터와 라디안 회전 구현 Mathf.Deg2Rad: Vector 변수에 곱하면 라디안으로 변환해 준다. ● 벡터를 라디안으로 변환하여 회전 구현Vector3 newDirection = Vector3.RotateTowards(transform.forward, rotDirection, rotSpeed * Mathf.Deg2Rad, 0.0f);GetComponent().MoveRotation(Quaternion.LookRotation(NewDirection));  ● 쿼터니온으로 회전 구현Quaternion newQuaternion = Quaternion.RotateTowards(transform.rotation, Qua..

부트캠프 2024.06.08

[멋쟁이사자처럼 유니티 TIL] 에셋을 통한 애니메이션 구현과 비동기 프로그래밍(코루틴, async, await)

유니티 실습 현재 사용하고 있는 무료 에셋 :https://assetstore.unity.com/packages/3d/characters/unity-chan-model-18705 Unity-Chan! Model | 3D 캐릭터 | Unity Asset StoreElevate your workflow with the Unity-Chan! Model asset from unity-chan!. Find this & other 캐릭터 options on the Unity Asset Store.assetstore.unity.com  애니메이션 구현오늘은 에셋에 포함되어 있는 걷는 모션을 구현해보았다. ① 에셋의 애니메이션에서 원하는 애니메이션을 선택한 후 ctrl + D를 눌러 복제한다.수업에서는 앞으로 뛰는 모..

부트캠프 2024.06.05

[멋쟁이사자처럼 유니티 TIL] 에셋을 이용한 보석 먹기 게임 구현 ( + 파일 경로, 링큐 등)

파일 경로- 상대적 파일 경로 지정string filePath = "yammySnack.txt"; - 절대적 파일 경로 지정   /(슬래시), \\(백슬래시), @\ 를 이용한다string filePath = "C:/yammySnack.txt";string filePath = "C:\\yammySnack.txt";string filePath = @"C:\yammySnack.txt";  파일 쓰기 배열을 이용하여 파일에 쓸 문자열 저장하고,File.WriteAllLines 를 이용하여 작성한 배열을 파일에 작성한다.// 파일 생성 경로 정의string filePath = "yammySnack.txt";// 파일에 쓰여질 문자열 배열 정의string[] lines = { "First line", "Secon..

부트캠프 2024.06.04

[멋쟁이사자처럼 유니티 TIL] 회전 및 점프 구현(+FixedUpdate와 Update의 차이)

벡터의 정규화w,a,s,d 입력이 가능하게 해놓은 상태에서 대각선으로 이동할 경우, 이동 거리가 늘어나게 되는 문제가 있음.이러한 문제를 해결하기 위해 벡터의 정규화 사용. Normalize(): 길이가 1인 벡터를 만들어줌.direction.Normalize();rotDirection.Normalize();   회전 구현① 먼저 rotDirection을 선언.② a, d를 누를 때 회전할 수 있도록 rotDirection에 값 넣기if (Input.GetKey(KeyCode.A)){ rotDirection += -transform.right;}if (Input.GetKey(KeyCode.D)){ rotDirection += transform.right;} ③ rotDirection 값이 있을..

부트캠프 2024.06.03