본문 바로가기
반응형

개발자가 되어보자..공부공부36

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.
3D 랜덤 디펜스 개발 일지 1. 맵 생성, 영웅 생성, RTS식 영웅 이동 스크립트 명 내용 스크립트 위치 영웅 관련 HeroController.cs 영웅 애니메이션, RTS선택 표시, NavMeshAgent 적용 등 가장 기본이 되는 영웅 스크립트. Hero Prefabs RTSHeroController.cs RTS 시스템에 대한 함수가 생성되는 스크립트. List selectedHeroList 영웅을 선택하면 위 List에 선택한 영웅데이터를 저장. 선택을 취소하면 위 List에서 데이터를 제거. 선택되어 있는 영웅만 움직이는 함수 작성. GameManager MouseClick.cs Raycast를 이용하여 마우스 클릭 로직 구현. 레이어가 Hero인 오브젝트를 마우스 좌클릭하였을 때, RTSHeroController의 선택 함수 실행. .. 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.
3D 랜덤 디펜스 개발일지 0. 1. 필드 생성 2. Asset Store 무료 리소스 서칭. 3. 적 생성. 4. 적 이동 구현. 5. 플레이어 캐릭터 생성 6. 플레이어 캐릭터 이동 7. rts 방식 플레이어 이동 구현(선택 이동) 8. 엑셀 데이터 받아서 플레이어, 몬스터 데이터 관리. 9. 조합 시스템 구현 (진행중) - 조합표 UI - 조합 시스템. 10. 적 이동 애니메이션 11. 플레이어 공격 형태 구현 12. UI 구현 (일시정지 메뉴, 게임 오버, 인게임 UI 등) 2023. 1. 7.
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# 유니티 공부 27 - 디펜스 게임(Serializable, 스플래쉬 공격, 상점 포탑 구매 등) * Shop UI 만들기 - Vertical layout Group, Hrozontal layout Group, layout element (일정 구역 안에 오브젝트들을 규칙적으로 자동 배열 시켜주는 기능.) - 이미지 가져와서 sprite로 만들기 (새 이미지 파일을 유니티로 가져오면 sprite화로 만들어주는 작업을 진행해야함.) - 상점 내 포탑 Button 제작하고, 플레이어가 가지고 있는 Money에 따라 선택한 포탑이 설치되는 로직 구현. 1) UI로 제작한 Button에 Shop 스크립트의 SelectStandardTurret(), SelectMissleLauncher() 함수 연결. 2) 이어서 로직에 의해 buildmanager의 SelectTurretToBuild() 함수로 연결. 3).. 2022. 12. 29.
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.
반응형