251117
·
📖TIL
2D 스프라이트 애니메이션을 코드로 제어하는 방법using System.Collections;using System.Collections.Generic;using UnityEngine;public class SpriteAnimator : MonoBehaviour{ // 애니메이션을 위한 스프라이트 public Sprite[] frames; public float frameRate = 0.1f; // 스프라이트 변경해줄 렌더 private SpriteRenderer spriteRender; private int currentFrame = 0; // 사용할 코루틴 private Coroutine animationCoroutine; private WaitForS..
251114
·
📖TIL
2D 에서 사용할 Player Controller 코드 작성using UnityEngine;using UnityEngine.InputSystem;public class Player : MonoBehaviour{ [SerializeField] private float _moveSpeed; [SerializeField] private float _jumpSpeed; private Rigidbody2D _rigid; private bool _isGrounded; private Vector2 _moveInput; private void Start() { _rigid = GetComponent(); } // 입력 값을 바탕으로 이동 private ..
251113 NavMesh
·
📖TIL
AI NavMesh바닥에 길찾기 가능한 구역을 설정해주자Bake 를 하면 이 바닥에서는 길찾기가 가능하다는 범위가 표시된다 플레이어를 따라다닐 적 스크립트를 작성한다using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.AI;public class EnemyAI : MonoBehaviour{ public Transform player; // 플레이어를 추적 private NavMeshAgent agent; void Start() { agent = GetComponent(); } void Update() { if(player != n..
251113 스크립터블 오브젝트
·
📖TIL
직렬화와 스크립터블 오브젝트 스크립터블 오브젝트는 유니티 에셋으로 데이터를 저장시키고 필요할 때 꺼내서 쓰는 기능이다.데이터와 코드를 분리하기 위한 유용한 기능이다.using UnityEngine;using UnityEngine.InputSystem;public class CubeSpawner : MonoBehaviour{ public GameObject cubePrefab; // 하나의 프리팹만 사용 void Update() { if (Keyboard.current.qKey.IsPressed()) { GameObject newCube = Instantiate(cubePrefab, Vector3.zero, Quaternion.identity);..
251113 CSV & JSON
·
📖TIL
CSV 와 JSON PlayerPrefs : 진짜 간단하게 수치를 기억시키는 방법 ( 소규모 데이터 )저장은 잘 되는 방식인데, 파일시스템이 아니고 레지스트리나 OS별 설정파일에 저장된다암호화되지 않고, 고로 핵이나 치트에 취약하다. 인게임 볼륨 , 간단한 설정 등은 플레이어 프랩스로 로컬로 기억시킬 수 있다. JSON : 가볍고 직관적인 파일 저장 방식ScriptableObj : 에셋으로 데이터를 저장Addressable : 리소스를 주소로 불러와서 관리함PlayerPrefs.SetInt("이런키값으로", 원하는값을);PlayerPrefs.GetInt("이런키값으로", 1);using UnityEngine;using UnityEngine.InputSystem;public class SaveTest : ..
251113
·
📖TIL
Lighting완전히 어두운 상황 만들기Windows - Rendering - Lighting - Environment레이 트레이싱반사는 많은 연산량을 필요로 한다▲반사시킬 영역▲프로젝트 세팅에서 Realtime Reflection Probes 체크뭔가 반사가 되긴 하는데 자기 자신도 비추넹.. Character ControllerRigidbody 와 달리 , 물리 충돌 이런거 크게 따로 코딩할 필요 없이 캐릭터 이동 자연스럽게 구현 가능. 충돌용 캡슐 콜라이더도 내장되어있음 정교한 물리를 해야할 땐 얄짤없이 Rigidbody 로 다루어야 한다빠르게 기능 테스트 하거나 , 프로토타이핑 할 때 쓰인다 그렇긴 하지만 잘 건드리면 쓸만하다 IsGrounded : 땅 체크, ( 구현이 되어있긴 하나 버그 덩어..
유니티 개인 프로젝트 기획 초안
·
📖TIL/🔥Projects
프로젝트 개요프로젝트명 : Survive Rush장르 : 2D 서바이벌 미니게임플랫폼 : PC ( Windows , Unity 6 )제작 기간 : 5일개발 인원 : 1인그래픽 : 2D 픽셀 또는 카툰 스타일사운드 : SFX + 빠른 템포의 BGM 핵심 컨셉짧고 중독성 있는 2D 미니게임을 연속으로 클리어하며 최대한 오래 생존하자!여러 종류의 짧고 긴박한 미니게임이 랜덤으로 등장한다.제한된 Life 개수 안에서 가능한 한 오래 생존하는 것이 목표 게임 모드1. 서바이벌 모드 ( 메인 )Life 10 개로 시작미니게임 랜덤 등장 , 일정 시간 생존 시 다음 스테이지실패 시 Life -1누적 10회 성공 시 Life +1 ( max 10 )Life 가 모두 소진되면 Game Over2. 미니게임 선택 모드플..
내가 이해한 오브젝트 풀링 개념
·
📖TIL
Question : 오브젝트 풀링이란 무엇인가요? Answer : 오브젝트 풀링은 게임 개발에서 성능을 높이기 위해 사용하는 기법입니다. 게임에서 필히 오브젝트를 생성과 파괴를 하게 되는데요.생성시 메모리를 할당하는 과정이 있고 파괴시 GC ( 가비지 콜렉터 )가 수거하는 과정에서 프레임 드랍이 생기게 됩니다.GC 사용은 무겁기 때문에 GC 가 자주 수거해야 하는 상황이 오면 그만큼 프레임 드랍이 자주 발생합니다.이러한 문제점을 해결하기 위해 오브젝트 풀링 기법을 사용합니다. 오브젝트 풀링은 자주 사용하게 될 오브젝트를 생성할 메모리를 미리 배열이나 리스트 등에 할당해놓고필요할 때마다 꺼내서 쓰고 필요 없어지면 파괴가 아니라 비활성화해서 배열이나 리스트 등에 다시 넣는 기법입니다. Question : ..
251112 Particle
·
📖TIL
파티클 효과 ( Particle Effect )