전체 글184 2024.05.27 TIL - InputSytem, InvokeEvent, Phase, 데미지 Flash효과 - Coroutine, 낮과 밤 표현 - Directional Light, Gradient, AnimationCurve, AutoCollider(콜라이더 크기), Static 옵션 InputSytem - InvokeEvent`InvokeEvent`는 버튼 이벤트처럼 콜백 메서드를 등록해서 사용한다. private Vector2 curMovementInput; public void OnMove(InputAction.CallbackContext context) { if (context.phase == InputActionPhase.Performed) { curMovementInput = context.ReadValue(); } else if (context.phase == InputActionPhase.Canceled) { curMovementInput = Vect.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 27. 2024.05.24 TIL - Ray, Raycast, IsGrounded, 땅 충돌 체크 isGrounded 땅 충돌 체크하기 - Ray, Raycast bool IsGrounded() { Ray[] rays = new Ray[4] { new Ray(transform.position + (transform.forward * 0.2f) + (transform.up * 0.01f), Vector3.down), new Ray(transform.position + (-transform.forward * 0.2f) + (transform.up * 0.01f), Vector3.down), new Ray(transform.position + (transform.right * 0.2f) + (transform.u.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 24. 2024.05.23 TIL - 오브젝트 풀링, UnityEngine.Pool, ObjectPool 유니티에서 제공하는 오브젝트 풀링이전에 오브젝트 풀링을 직접 작성해본적이 있다.▼2024.05.14 - [Unity/스파르타 게임개발종합반 TIL] - 2024.05.14 TIL - Queue를 활용한 오브젝트 풀(ObjectPool) 그런데 유니티에서도 오브젝트 풀링 기능을 제공해주고 있다.using UnityEngine.Pool;유니티에서 제공하는 오브젝트 풀링을 사용하려면 위의 코드를 추가해줘야한다. 공식 문서▼https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html 이중에서 사용한 것은 `ObjectPool`이다.오브젝트 풀링에는 다양한 방식이 있는데 그중에서 "최소 50개의 오브젝트 수 보장, 부족할 경우 누적 300개까지 추가 생성, 3.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 23. 2024.05.22 TIL - SoundManager로 배경음과 효과음 관리 및 재생하기 효과음이 재생안되던 문제 private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player")) // 플레이어와 충돌했을 때 { HealthSystem healthSystem = collision.GetComponent(); if (healthSystem.CurrentHealth 위의 코드는 회복 아이템이 캐릭터랑 충돌이나면 캐릭터의 체력이 1 증가하고, 회복 아이템이 사라지는 코드이다. SoundManager.Sound.Play("DrinkPotion.mp3", SoundType.Effect);원래 이 자리에 해당 오브젝트.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 22. 2024.05.21 TIL - UnityAction, UnityEvent, delegate, event 차이 Delegate, Event델리게이트는 함수를 매개변수로 사용한다.그래서 이벤트랑 세트로 다닌다.왜냐하면! public void SetGoldEvent(SetGold action) { setGold += action; setGold.Invoke(gold); }`+=`로 매개변수로 넘어온 함수를 체인으로 구독하기 때문이다.쉽게 이해해보자면 setGold라는 이벤트가 발생할 때마다 action이 실행된다. 예를 들어서 플레이어가 데미지를 입을 때마다 체력이 깍이는 액션, 체력UI 반영하는 액션 등등 여러가지 일들을 처리해야한다. 그때마다 `Update`에서 확인하면 비용이 크다.. `Delegate`와 `Event`의 사용법은 아래와 같다. public dele.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 22. 2024.05.20 TIL - 내적계산으로 시야각 계산, Physics2D.CircleCastAll, Vector2.Dot [SerializeField] private float fov = 45f; // 시야각 [SerializeField] private float radius = 10f; // 반지름 private float alertThreshold; // Threshold가 문턱이라는 뜻 private void Start() { animator = GetComponent(); // FOV를 라디안으로 변환하고 코사인 값을 계산 alertThreshold = Mathf.Cos(fov * Mathf.Deg2Rad / 2f); // 좌우 fov(시야각)의 절반 -> 나누기 2f } private void Update() { CheckAle.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 20. 2024.05.17 TIL - localRotation, rotation 차이, Quaternion.Slerp, Mathf.Atan2, Mathf.Rad2Deg private void Rotate(float inputX) { Quaternion from = transform.localRotation; float angle = Mathf.Atan2(0, inputX) * Mathf.Rad2Deg; Quaternion to = Quaternion.Euler(0, 0, angle - 90); transform.localRotation = Quaternion.Slerp(from, to, ROTATIONSPEED); }위의 코드는 영상처럼 회전을할 때 부드럽게 회전할 수 있도록 `Quaternion.Slerp`를 활용한 것이다.하나씩 살펴보겠다. Quaternion from = transform.local.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 18. 2024.05.16 TIL - 객체지향프로그래밍 특강 정리 객체지향프로그래밍의 응집도와 결합도위의 그림은 클래스간의 관계를 나타낸다.Cinema가 다른 클래스와 연관이 많이 되어있다.이것을 다른 클래스 사이에 '의존도/결합도가 높다' 라고 말한다. 그림으로 쉽게 이해해보자면 위와 같다.`결합도`가 낮을수록 좋다. `응집도`는 객체 또는 클래스에 얼마나 관련 높은 책임들을 할당했는지를 나타낸다.실제 생활에서도 본인이 맡은 바를 수행하며 능률을 높여 일의 효율이 증가하는 좋은 효과를 얻을 수 있다. 결론 : 객체지향 프로그래밍은 객체의 자율성을 높이기 위해 의존도/결합도를 낮추고, 응집도를 높인다. 그렇다면 `응집도`는 어떻게 높일까?1. 연관이 없는 작업은 다른 객체(클래스)에게 위임한다.2. 객체 내부의 상태를 `캡슐화` 하고 오직 메세지를 통해서만 상호작용한다.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 16. 2024.05.14 TIL - Queue를 활용한 오브젝트 풀(ObjectPool) 오브젝트 풀링 객체를 미리 생성해 두고 필요할 때 가져다 사용하고, 사용이 끝나면 다시 풀에 반납하는 방식오브젝트 풀링은 생성(Instantiate)과 소멸(Destroy)이라는 비용이 큰 작업을 최소화함으로써 성능을 향상시키는 데 중요한 역할을 한다.빈번하게 생성하고 파괴되는 객체(예: 총알, 입자 등)에 대해 중요하며, 이런 객체들을 풀에 저장해 놓고 재사용함으로써 메모리 할당과 가비지 컬렉션에 따른 성능 저하를 방지할 수 있다.오브젝트 풀링은 적절히 사용하면 큰 성능 개선을 가져올 수 있지만, 불필요한 메모리 사용을 증가시킬 수 있으므로 사용 시에는 신중해야 합니다. 오브젝트 풀의 크기를 적절히 조절하는 것이 중요하다. 사실 객체를 미리 생성 해두는 방식도 있지만 미리 생성하지 않는 방식도 있다.위.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 14. 2024.05.13 TIL - 2D 정렬, 앞일 땐 앞이고, 뒤일 땐 뒤에 있기 2D에서 앞일 땐 앞이고, 뒤일 땐 뒤에 있도록 하고 싶었다.코드를 작성해야하나 싶었는데 유니티에 좋은 기능이 있었다! 1. ProjectSettings → Graphics → CameraSettings에 들어간다.2. Transparency Sort Mode : Custom Axis 으로 변경3. Transparency Sort Axis : (X → 0, Y → 1, Z → 0) 으로 변경 이렇게 하면 앞일 땐 앞이고, 뒤일 땐 뒤에 있도록 설정할 수 있다~!2D니까 Y 기준으로 정렬을 했다. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 13. 2024.05.10 TIL - event, Action, Func, Delegate public event Action OnMoveEvent; // Action은 무조건 void만 반환해야 아니면 Func강의 내용중에 "Action은 무조건 void만 반환해야 아니면 Func" 이라고 주석을 달아주시는데 개인적으로 찾아봤다. 일단 `event`는 일반적으로 `Delegate`를 통해 정의된다.이벤트를 발생시키는 클래스는 해당 델리게이트를 이용하여 이벤트를 호출한다. Delegate란?델리게이트(대리자)는 메서드에 대한 참조를 담는 형식이다. 즉, 메서드를 대신 호출할 수 있는 객체이다.메서드를 '대신' 호출하니까 대리자라고 불리는 것 같다. 그래서! `event`와 같이 사용되는 델리게이트에는 `Action` `Func`가 있다.둘의 차이는 `Action`은 반환값이 없는 메소드를 호출.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 10. 2024.05.09 TIL - 부채꼴 모양으로 화살 날리는 로직 위의 사진은 예시인데 저렇게 부채꼴 모양으로 화살이 나가도록 하는 로직을 강의에서 알려주셨다.강의에서 처음에 그림으로 설명하시는데 이해가 안가서 질문드리러 갔더니부채꼴 모양으로 나가도록 구현한 것이라 하셨다.`부채꼴`이라고 하시니 이해가 됐다.. float minAngle = -(numberOfProjectilesPerShot / 2f) * projectilesAngleSpace + 0.5f * rangedAttackSO.multipleProjectilesAngle;그런데 문제는 코드이다..다른 사람들이랑 머리를 맞대고 고민을 해보다가 다같이 튜터님께 질문을 하러 갔다. Q. `0.5`를 곱해서 보정한다고 하셨는데 정확히 무슨 의미인가요? A. 화살이 부채꼴 모양으로 고르게 펼쳐져야하는데 중심선(캐릭터가.. 스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록 2024. 5. 9. 이전 1 2 3 4 5 6 7 8 ··· 16 다음 반응형