본문 바로가기

분류 전체보기

(346)
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모드로 바꿔주고 흰색의 투명한 재질..
Unity3D- DrawRay와 DrawLine 차이점 supersoftware.tistory.com/entry/DrawRay-vs-DrawLine DrawRay vs DrawLine DrawRay : Draws a line from start to start + dir in world coordinates. 쉽게 얘기해서 출발지부터 목적지까지의 선을 그리는게 아니라!!!!! 출발지에서 출발지+목적지까지의 벡터값까지의 Ray를 그린단 얘기.. supersoftware.tistory.com 참조
Unity3D- FieldOfView 시야구현(1) 1.메인카메라 - 메인카메라의 x축을 90도로 틀어주고 적당한 높이에서 아래를 수직으로 바라보도록 한다 - Projection을 Orthographic으로 주어 카메라가 비추는 방향을 사다리꼴모양이 아닌 직사각형 모양으로 비추도록 한다 2. 방해물과 타겟 - 방해물과 적이 될 타겟 오브젝트를 여러개 만들어 관리하기 쉽게 해주고 - 각각 Layer를 Obstacles와 Targets로 설정한다 3. 플레이어 - 컴포넌트로 리지드 바디를 추가해주고 회전을 프리징해준다 Freezing Rotation x,y,z, 체크 - 플레이어를 움직일 Player 스크립트, 플레이어의 시야를 나타내줄 FieldOfView 스크립트를 드래그 앤 드랍한다 3-1. 플레이어 이동 -Player 스크립트에서 플레이어가 키보드 상..
Unity - 임의의 원 범위안에서 스폰, 커스텀에디터, 부채꼴 충돌, 유용한 Mathf 함수 hannom.tistory.com/185 [project_PQ]-[Unity3D] 임의의 원 범위 안에서 스폰하기. 일단 위의 스크린샷은 내가 멍청하게도 Collision충돌로 알아서 밀어내겠지 하고 안일한 생각을 가지다가 is Trigger를 체크한것을 잊어버려서 결국엔 겹치는 현상을 보여주고 있다. -_- 실제 게임 hannom.tistory.com icechou.tistory.com/327 유니티 커스텀에디터 사용하기(인스펙터 컴포넌트 수정) 우선 아래와같은 Enemy라는 스크립트가 있다고 한다면 아래처럼 인스펙터에서 보일것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class Enemy : MonoBehaviour { public MonsterType monste..
Unity3D_Quater - 몬스터 위험수치 구현(1) 현재 몬스터가 플레이어를 공격하는 단계는 아래와 같다 viewDistance반경내에 있는 플레이어 감지,(angleView.targetNear = true) -> AngleView시야각에 플레이어가 들어오면 플레이어 발견(recognizePalyer =true), (angleView.targetConfirm = true) -> 플레이어 추적(isPlayerTrack =true) ->공격타겟팅 -> 공격 목표 : 몬스터의 시야각 내에 플레이어가 들어와서 플레이어를 발견하기 전 단계인 플레이어가 몬스터 감지반경내에 있는 단계에서 플레이어를 2초당 1위험도로 몬스터가 감지를 하고 4위험도가 되면 플레이어를 발견한걸로 하고 추적하도록 만들고 싶다 1. 스크립트구현 몬스터 머리위에 위험도 이미지를 띄우고 해당 이..