Unity (160) 썸네일형 리스트형 Unity3D_Quater - 보스몬스터 레이져공격 만들기 1.보스F 프리팹 만들기 - 기존의 보스 프리팹의 텍스쳐만 바꿔주어 보스F프리팹을 생성 2.Enemy 스크립트 수정 - 보스F 인경우 Enemy 스크립트에서 기존의 보스인경우만 제외했던 로직들에 보스F인 경우도 추가하기 위해 일반 몬스터 타입과 보스타입 2개로 나눔(이 과정에서 NONE 타입을 추가 해야했던 이유) - 기존에 보스타입인 경우를 제외하고 실행되어야 했던 함수(return)는 ||를 써서 보스F타입을 추가해주면 되었고 기존에 보스탑입인 경우에만 발동시켜야 했던 함수는 &&를 써서 보스F타입을 추가해주어야 했다 3. Boss스크립트 수정 - 보스패턴을 생각하는 Think()함수에 기존의 돌굴리기 공격에 보스F타입인 경우 레이져 공격을 하도록 하였고 4. 레이저오브젝트 생성 - 레이저오브젝트의 .. Unity3D_Quater - 몬스터공경 경고라인, 3쿠션 공격 만들기 1.돌격형 몬스터인 EnemyB의 돌격 경고라인 만들기 - Trail Renderer 컴포넌트를 가질 빈 오브젝트를 생성하고 꼬리가 생성될 시간인 Time과 꼬리의 색상을 조절해주고 - Aligment를 기존 View에서 Transform Z로 해주어야 카메라 시선에 따라 꼬리가 회전하는 현상을 막을 수 있다 - Transform Z 방향으로 꼬리가 생성되기 때문에 해당 오브젝트의 z축이 forward가 되도록 회전시켜주고 - 이 후 해당 오브젝트를 생성 후 transform.forward 방향으로 날리기 위해서 빈 부모 오브젝트를 하나 더 만들어서 그 자식오브젝트로 넣고 프리팹화 시킨다 - 기존 Enemy 스크립트의 Attack()함수안에서 Type.B의 공격에 대한 코드에 위에서 만든 트레일랜더러 프.. Unity3D_Quater - 몬스터HP 부드럽게 감소시키기, HP감소 잔상 만들기 1. 몬스터HP UI이미지 프리팹 수정 - HP감소 잔상을 만들기 위해 기존 체력바UI에서 현재체력이미지 뒤에 잔상체력이미지를 생성한다 2. Enemy 스크립트 - 먼저 Vector.Lerp()를 활용하여 부드럽게 HP가 감소시키도록 만들어주고 - backHpHit이라는 플래그 변수를 만들어 해당 변수가 true일때만 BackHp UI이미지가 선형보간으로 감소하도록 코드 구현 - backHpHit플래그변수는 몬스터가 피격당할때 0.5초 후에 true바꿔주고 바로 false로 복원시키는 방식으로 몬스터 피격시 1회성으로 호출되도록 구현 3.Enemy스크립트 OnDamged() - 몬스터 피격시 0.5초후에 BackHpHit 플래그변수를 true로 만들어주고 바로 다시 false로 바꾸도록 구현 4.결과 Unity3D_Quater - 플레이어 단위체력바 만들기 1. HP바를 품을 Canvas 바탕 생성 - 새로운 Canvas오브젝트를 만들어 HPCanvas로 Rename해준다 - 해당 Canvas의 Render Mode를 World Space로 변경해준다 - Scale을 0.002로 작게 만들어주고, Rotation을 x축 -90도로 회전시켜준다 - 아래 Scene뷰의 플레이어 아래 바닥부분의 하얀색네모가 보이는데 이것이 방금 우리가 만든 Canvas이다 2.HP바 만들기 - BackGround가 될 이미지를 하나 만들고 - HPbar 초록색 이미지를 BackGround에 맞게 채워준다 - HPLine이 단위HP바가 되는데 컴포넌트로 Horizontal Layout Group컴포넌트를 추가해준다 - 그리고 해당 컴포넌트의 control Child Size와 C.. Unity3D_Quater - 몬스터 시야, 위험도이미지, 체력바 적용 - 적 체력바 이미지가 적 오브젝트 머리 위에서 따라다니도록하기 - 체력바가 체력에 따라 달라지도록 하기 - 몬스터가 플레이어를 인지단계에 있으면 위험도 이미지가 노란색으로, 확인단계에 있으면 빨강색으로 변하게 만들기 Unity3D- FieldOfView 시야구현(최종) 1.예외처리하기 지금까지 방식으로는 이전의 Ray와 바로 다음의 Ray 둘중 하나가 방해물에 충돌하지 않았을 경우에만 FindEdge()함수를 실행시켰다 하지만 아래경우와 같이 서로 다른 방해물에 각각의 Ray가 충돌한 경우에도 FindEdge()함수를 실행시켜 사각의 시야를 없애주고싶다 따라서 FindEdge()함수의 실행조건을 추가해준다 - 우리가 원하는 것은 일종의 거리 임계 값을 구현하는 것 -DrawFieldOfView() 함수내부 - FindEdge()함수 내부 - EdgeDstTreshold를 0.8로 주었을때 결과 => 2개의 Ray가 모두 방해물에 맞은 경우에도 FindEdge()함수를 실행하여 시야각을 넓혔다 2. FindEdge()함수 로직 변경 지금까지 기존의 이전의 Ray와 바로 .. Unity3D- fieldOfView 시야구현(3) 0.최적화방법으로 방해물 뒷시야 사각지대 없애기 1) 현재 방식 및 문제발생 - 현재까지 방법은 발사된 Ray가 방해물에 충돌한 지점과 Mesh해상도에 따라 변하는 일정한 조각각도단위로 다음순번에 발사된 Ray가 방해물에 충돌하지 않고 시야각의 가장자리까지 나아간 지점을 커스텀메쉬화 하여 삼각형을 그리는 방식이다 - 이러한 방식으로 최대한 방해물 뒤의 사각지대를 없애기 위해서는 아래 씬뷰2 처럼 Mesh해상도를 늘려 많은 Ray를 발사해야하만 한다, 다만 그럴 수록 최적화와는 멀어지게 된다 2) 문제해결방안 - 1번 그림처럼 낮은 해상도로 적은 Ray를 발사하여 방해물 뒤 사각지대를 없애기 위해서 먼저 방해물에 충돌한 Ray(씬뷰3, 2번 Ray)가 있고 이 바로 다음순번 Ray(씬뷰3, 3번 Ray)가.. Unity3D- FieldOfView 시야구현(2) 1. 플레이어 시야각 가시화 하기 - FieldOfView 스크립트 - 총시야각을 stepCount 수로 등분하고 - 하나의 조각시야각을 stepAngleSize로 지정 - 총시야각을 stepAngleSize만큼 나누어 Ray를 그린다 *4/06 수정 1).ex) 해상도=0.1, 총시야각 =60도 --->등분수stepCount =10등분 => 등분수steopCount = 6분등 으로 수정 2).ex) 등분수=10등분 ---> 한조각 각도stepAngleSize =6도 => 등분수=6등분 ---> 한조각 각도stepAngleSize=10도 3).for(int i=0; i for(int i=0; i Material을 하나 생성하여 상단의 Rendering Mode를 fade모드로 바꿔주고 흰색의 투명한 재질.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 20 다음