본문 바로가기
반응형

유니티24

3D 랜덤 디펜스 개발 일지 2. 적 생성 및 이동, 영웅 적 공격, Excel 데이터 가져오기 1. 적 생성 및 이동 1) 적 생성 - GameManager.cs 에서 적 생성. - Enmey.cs 에서 적에 대한 Data는 Excel Data를 가져와서, Start 단계에서 저장 시킴. 2) 적 이동 - Enmey.cs에서 Waypoint로 이동하는 함수 실행. - Waypoint는 Waypoint.cs에서 배열 생성. 2. 영웅의 적 공격 1) 영웅 적 공격 모션 - AttackHero.cs 생성. - 가장 가까운 적을 Target으로 정하는 UpdateTarget() 함수를 생성. - start 단계에서 UpdateTarget()을 InvokeRepeating으로 반복 실행되게 함. - start 단계에서 Excel에서 가져온 영웅에 대한 Data를 한 번에 설정. - 사정거리 내에 들어온 .. 2023. 1. 11.
C# 유니티 공부 29 - 2D Undead Suvivor 예제 진행. (Static 변수 설정, 무한맵 이동) (골드메탈님 유투브 참고) * 플레이어 이동. * 무한맵 구현. 1) Static 정적 변수 - GameManager에서 static(정적) 변수 선언. Awake에서 메모리를 한 번 할당해주면, 그 메모리를 다시 할당하지 않고도 어디서든 사용 가능. - GameManger에서 Player 스크립트을 선언하고, instance로 선언한 stacti 변수의 메모리를 할당하여 사용. 2) 무한맵 구현 - GroundMovement 스크립트 작성. - 4개의 타일맵을 그려주고, 플레이어가 이동함에 따라 타일맵이 이동하는 형태로 무한맵 구현. - 플레이어에 empty 자식 오브젝트를 생성하여, Box Collider를 만들어줌. 해당 Collider와 Tilemap의 Coliider와 반응하여 OnTrigger.. 2023. 1. 10.
C# 유니티 공부 28 - 디펜스 게임 최종. (UI Fade in/out, 체력 바 생성, 업그레이드, 상점판매, 파티클 공격 로직, 디펜스 게임 적 생성 로직) * UI 생성. (OverlayCansvas, TopCanvas, BottomCanvas, MenuCanvas, PasuedMenu, Upgrade&Sell UI 등) - Vertical. Horizontal Layout Group - Canvas Group 으로 투명도(a값) 등 애니메이션 생성 가능. - Canvas가 여러 개 있어서 오브젝트 클릭이 안될 때는, 방해되는 Canvas의 Graphic Raycast를 없애주면 된다. 1) 체력 바 생성. - UI의 Image type을 fill로 바꿔주어 fillAmount를 통하여 체력바 감소 구현. - Enemy Prefab에 적용시켜 줌. 2) UI 전환 시, FadeIn/Out 효과 구현. - Canvas에 검정색의 Image를 생성. - Sce.. 2023. 1. 2.
C# 유니티 공부 26 - 디펜스 게임2 (Singleton Pattern 싱글톤 패턴, onMouseEnter/Exit/Down, Screen width/height) * crtl + shift + F 씬뷰와 게임뷰의 오브젝트를 같은 Transform으로 만듦. (카메라 볼 때 유용하게 사용.) * 빌드매니저 스크립트 생성 (게임매니저 오브젝트에 삽입) ★ ★ 싱글톤 패턴(Singleton Pattern) - 애플리케이션이 시작 될 때, 클래스가 최초 한 번만 메모리를 할당(static)하고 해당 메모리에 인스턴스를 만들어서 사용하는 패턴을 말한다 즉, 싱글톤 패턴은 한 개의 인스턴스만 생성하여 사용하는 패턴이다. (인스턴스가 필요할 때, 똑같은 인스턴스를 만들지 않고 기존의 인스턴스를 활용하는 것.) 기본적으로 객체를 생성할 때마다 메모리 영역을 할당받아야 하는데, 싱글톤 패턴을 적용하여 한 번의 메모리 할당으로 메모리 낭비를 방지 할 수 있다 싱글톤으로 구현한 인스.. 2022. 12. 27.
C# 유니티 공부 25 - 디펜스 게임. (Snapping, 적 무한순환이동, 자동 적 생성, 자동 오브젝트 회전, 자동 공격) * 필드 생성 ★ 스냅핑(Snapping) 1) 정점 스내핑 - v를 누른 상태에서는 점을 맞출 수 있음. (Vertex) - Shift+v로 정점 스내핑 기능을 On/Off 할 수 있음. 2) 단위 스내핑(Unit Snapping) - Setting에 정의된 단위 거리만큼 게임 오브젝트를 배치할 수 있음. (규칙적인 필드 맵 구현에 효과적.) 3) 면 스내핑 (Surface Snapping) - ctrl + shift 를 누르고 오브젝트를 이동 시키면, 면을 맞출 수 있음. ★블랜더에서 매쉬를 가져왔을 때, 메터리얼 수정이 안되는 경우. - 묶음으로 있을때는 수정이 안됨. Location에서 External Material(legacy)로 적용해줘야 가능. - Important, if you can't.. 2022. 12. 27.
C# 유니티 공부 24 - 미니퍼즐게임 예제 최종(오브젝트 풀링, Playerprefs, 속성지시자 등) * Dongle과 GameManager 2개의 스크립트 사용. - 변수 설정. - [Header]는 유니티 인스펙터상에서 더욱 구분지어 확인할 수 있게 해줌. - [Range()]는 public 변수값을 범위내에서 스크롤로 결정할 수 있게 해줌. * 마우스 포인터 따라 이동. - 클릭 하는 동안 드래그, 이후 드래그 bool값 변수를 두어 이동이 되지 않게 함. - rigid.simulated는 물리효과 활동에 관여하는 기능을 하며, false로 해주면 드래그 중 오브젝트가 떨리지 않음. - Lerp(출발위치, 목적위치, 이동속도 혹은 시간), 부드럽고 천천히 이동하게 해주는 함수. * 프리펩, 오브젝트 풀링을 이용한 오브젝트 생성. (이펙트 오브젝트도 풀링 진행.) - 오브젝트에 랜덤한 범위의 leve.. 2022. 12. 26.
C# 유니티 공부 23 - 3D 쿼터뷰 예제 최종(PlayerPrefs 함수, 플레이어 사망, UI 상점 물건 구매, 스테이지 전환, 사운드) * Playerprefs 함수. - 데이터를 저장하고 불러오는 함수. 이번 예제에서는 GetInt, HasKey 사용. DeleteAll() : 모든 데이터를 삭제한다. 이 함수를 사용할 경우 경고 메시지가 출력된다. DeleteKey(String Key) : Key와 대응하는 값을 삭제한다. HasKey(String Key) : Key가 존재하는지 확인한다. Save() : 수정된 모든 preferences를 파일에 저장한다. PlayerPrefs은 int, float, string 타입의 데이터를 저장하도록 Set 함수를 제공한다. SetInt(string Key, int value) : Key 값으로 int 형 데이터를 저장한다. SetFloat(string Key, float value) : Ke.. 2022. 12. 25.
C# 유니티 공부 22 - 3D 쿼터뷰 예제4 (추척 AI 기능 구현, 폭발 이펙트, 상속, 코루틴 등) ★ 껍데기 오브젝트 안에 Mesh Objcet 등 핵심 Object가 있는 경우에는, 껍데기 오브젝트의 Transform은 건드리지 말고 내부 핵심 Object들의 Transform 을 수정해야 한다. ( 프리펩을 저장하고 Instantiate() 로 생성 하는 등의 로직을 작성하고 실행하면, 방향과 위치가 이상해지는 이유. ) ★ 레이어와 태그를 Enemy, EnemyBullet 등 적절하게 사용하여 적 몬스터끼리의 충돌, 그리고 플레이어와의 공격, 피격 효과, 벽과의 충돌 등을 확실하게 구분해주어야 한다. * 수류탄 효과 구현 - 비활성화 상태에서 활성화 상태로 만들어 주는 방식 사용. - Particle System 사용. - Corutine 함수 사용. - RayCasHit 사용하여 몬스터에게 데.. 2022. 12. 23.
C# 유니티 공부 21 - 3D 쿼터뷰 예제3 (CoRutine코루틴, TrailRenderer, 물리 오류 해결, 원거리 공격, 근접 공격, 몬스터 피격) ★ 코루틴 메인루틴 Use() -> 서브루틴 일반함수 -> 메인루딘 use() -------> 반복. 메인루틴 Use() + 코루틴 -> 서브루틴 일반함수 -> 메인루틴 Use() + 코루틴 ------> 반복 코루틴은 이와 같이 생성. IEnumerator 함수명(){} 함수 내부에 yield return null 으로 1프레임 대기를 걸 수 있다. yield return new waitForSeconds(시간/s) 은 시간만큼 대기를 걸 수 있다. 코루틴 함수를 실행하는 방법은 StartCoroutine(함수명()) 혹은 StartCoroutine("함수명")이다. 반대로 StopCoroutine은 멈추는 방법이다. * 근접 공격 - 무기의 충돌 오브젝트 범위 생성. (Colider 범위 조절) - .. 2022. 12. 21.
C# 유니티 공부 20 - 3D 쿼터뷰 예제2 (무기 스왑, 아이템 공전효과, Light& Particle 컴포넌트) * 무기, 아이템 프리펩 생성. - item 스크립트 생성하여 무기, 아이템에 스크립트 컴포넌트 넣어줌. - item 스크립트에서 enum 열거형 데이터 타입 생성. - 아이템 자체 회전 함수 적용. Rotate().. Vector3.up 축을 기준과 속도로 회전. - 플레이어 스크립트에서 아이템 관련 변수 생성. - 아이템에 충돌했을 때, 아이템을 먹어주는 OnTriggerEnter 함수 생성. - 아이템과 무기에 각 해당하는 태그를 넣어주고, 인스펙터창 조절해준다음 프리펩으로 생성. * 무기 스왑. - 상호작용 및 무기 스왑에 필요한 변수 생성. - 상호작용 함수 생성. - 무기에 충돌하였을 때, 상호작용 키를 누르면 발생하는 OnTriggerStay, OntriggerExit 함수 생성. (프리펩 .. 2022. 12. 20.
C# 유니티 공부 19 - 3D 쿼터뷰 예제 (캐릭터 생성 및 동작, 키보드 더블 클릭 구현, 카메라 위치 고정) * 3D 필드 생성. - Mesh Renderer를 비활성화 하면 시각적으로만 보이지 않을 뿐, 충돌 효과(Colider)는 유지된다. - Tiling으로 Metrial 갯수를 행, 열로 증가시켜 적용 가능. - FixedUpdate와 Update간의 근소한 프레임 차이로 플레이어와 벽의 물리충돌이 무시 될 때가 있는데, 그럴 때는 rigidbody의 collision Detection을 Continous로 변경해놓으면 좋음. (대신 CPU가 더 많이 사용됨.) * 메인 카메라 좌표 고정 - 카메라 수동으로 첫 위치 조정. - target(플레이어)과 offset(보정치) 변수를 Public으로 호출. (public 값은 카메라의 위치를 적어주고, 플레이어를 드래그앤드롭해줌.) - 카메라 포지션을 tar.. 2022. 12. 19.
C# 유니티 공부 16 - 2D 슈팅 게임 예제. (텍스트파일 불러오기 및 적 비행기 생성 로직 수정) * text 파일로 적 비행기 생성 구현. 1) 스크립트 생성하여 구조체로 사용. 2) Game Manger에서 구조체 호출 및 초기화 - List의 형태로 구조체 변수 초기화. - 파일 읽을 때 필요한 System.IO using 사용. 3) 텍스트 파일 읽는 로직 진행. (읽기 -> 데이터 생성 후 List에 저장-> 텍스트파일 닫기) [읽기] - 함수 생성하여 로직 진행. - TextAsset 클래스로 textfile이라는 변수 생성하고, Resources폴더의 "spawn" 파일명을 가진 텍스트 파일을 로드한다. (as 명령어로 Text파일이 아니라면 Null 값으로 처리.) [데이터 생성] - StringReader 클래스로 stringReader라는 변수 생성하고, 텍스트파일의 텍스트를 저장하.. 2022. 12. 17.
반응형