본문 바로가기

공부/Unity 기초45

3D FPS - 12 / 모델링 적용 Enemy에 적용할 에셋 https://assetstore.unity.com/packages/3d/characters/humanoids/zombie-30232 Zombie | 3D 휴머노이드 | Unity Asset Store Elevate your workflow with the Zombie asset from Pxltiger. Find this & other 휴머노이드 options on the Unity Asset Store. assetstore.unity.com Enemy prefab에 Zombie 적용 Animation Controller를 만들고 Z_Idel 애니메이션 적용 Player에 적용할 에셋 https://assetstore.unity.com/packages/3d/characters/.. 2022. 5. 23.
3D FPS - 11 / 적 시야각 Enemy가 대기(Idle) 상태일 때 플레이어를 감지하는 시야각을 전방의 좌우 각각 45도로 제한하는 기능을 구현. bool 형으로 각도를 확인하는 함수를 만들기 bool CheckPlayerAngle(Vector3 position) { // 체크하려는 대상을 바라보는 벡터를 구한다. Vector3 direction = position - transform.position; // 나의 정면 벡터와 앞에서 구한 벡터를 비교해서 사잇각을 구한다. float checkDegree = Vector3.Angle(transform.forward, direction); // 구해진 각도가 45도 이내라면 true, 45도 밖이면 false라고 반환한다. if (checkDegree attackTime) { // 현.. 2022. 5. 23.
3D FPS - 10 / 적 생성 유지 적을 일정 시간마다 생성하는 코루틴 작성 IEnumerator Start() { while(true) { if (count < maxCount) { // 적공장에서 적을 생성 GameObject enemy = Instantiate(EnemyFactory); // 내 위치에 가져다 놓고싶다. enemy.transform.position = this.transform.position + new Vector3(Random.value * 2, 0, Random.value * 2); // 내 방향과 일치시키고 싶다. enemy.transform.rotation = transform.rotation; count++; // 생성시간동안 대기하고싶다. yield return new WaitForSeconds(creat.. 2022. 5. 21.
3D FPS - 9 / 네비게이션 알고리즘으로 길찾기 cube와 capsule로 지형을 만들어주고 네비게이션을 테스트해본다. Agent와 Navigation 기능을 이용할 AgentManager를 만들어준다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class AgentTest : MonoBehaviour { NavMeshAgent agent; public Transform target; // Start is called before the first frame update void Start() { agent = GetComponent(); } // Update is called once per frame.. 2022. 5. 21.
3D FPS - 8 / 게임 오버 처리 플레이어의 HP가 0이 되면 화면이 까맣게 되면서 “Game Over”라는 붉은 색 텍스트가 표시되는 기능을 구현한다. 이 때 “Game Over” 텍스트는 화면이 검정색이 된 후 1초 뒤에 표시되게 한다. 플레이어의 HP가 0이 되면 Hit 효과는 실행되지 않아야 한다. GameOver에 사용할 UI 이미지와 종속된 Text를 만든다. PlayerHP가 0이 되면 HitManager의 GameOver UI를 불러온다. // 만일, 플레이어의 체력이 0보다 크다면 if (HP > 0) { // 체력을 감소시킨다. HP -= 1; // HitManager의 Hit 함수를 호출하고싶다. HitManager.instance.Hit(); // 만일, 플레이어의 체력이 0이하라면 if (HP 0) { // 체력을.. 2022. 5. 19.
3D FPS - 7 / 피격 처리 ImageHit, 화면을 뒤덮는 UI를 생성하여 Enemy에게 공격 당했을 때 깜빡이게 한다. using System.Collections; using System.Collections.Generic; using UnityEngine; // 태어날 때 ImageHit를 보이지 않게 하고싶다. // 적이 플레이어를 공격했을 때 ImageHit를 깜빡이게 하고싶다. public class HitManager : MonoBehaviour { public static HitManager instance; private void Awake() { instance = this; } public GameObject imageHit; // Start is called before the first frame updat.. 2022. 5. 19.