본문 바로가기

Unity

(160)
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. 스크립트구현 몬스터 머리위에 위험도 이미지를 띄우고 해당 이..
Unity3D_Quater - 몬스터 순찰지역 랜덤생성 시도1 -몬스터가 리스폰되면 해당 몬스터가 미리지정한 spot으로 이동 후 viewDistance를 반지름으로 하는 범위에 90도 간격으로 4개의 지점을 순찰지점으로 자동지정하여 최초 이동한 지점을 포함하여 총 5지점을 랜덤하게 순찰 참고 : hannom.tistory.com/185 *Mathf.Pow(x,y) = x의 y승 *Mathf.Sqrt(x) = 루트x 몬스터가 생성되자마자 자신 주위 반지름 3인 랜덤지점에 코인을 생성하고 지정해둔 위치로 이동.. 지정해둔 위치에서 기다렸다가 위에서 코인을 생성한 위치로 이동함과 동시에 기다린 위치 주위 반지름3인 랜덤지점에 코인을 생성 즉, 몬스터가 다른위치로 출발할 시점에 있던 위치의 주위 반지름3인 랜덤위치를 잡게 되어 순서도 꼬이고 그 위치가 이동불가능한..
Unity3D_Quater - 몬스터 순찰 1. 몬스터 순찰 및 플레이어 인식했을시엔 플레이어를 따라오다가 플레이어가 인식범위를 벗어나면 다시 순찰지점으로 돌아가서 순찰을 돌도록 코드 구현 *InvokeRepeating("함수명",시작시간,반복간격) 활용 2. 애니메이션 - nav.velocity에 따라 조절
Unity3D_Quater - 버그 및 디버깅(1) - 버그 및 디버깅 1. 동전이 남아있을때 몬스터가 전부 리스폰되면 다음스테이지로 넘어가버림 1)원인 : 스테이지 시작도 전에 먹은코인 갯수가 카운팅 되어서 뺑뺑이를 빠져나감 2)디버깅 : 스테이지 시작전 테스트용 코인을 비활성화 2. 몬스터가 2마리 이상일 경우 순찰돌때 서로 겹치면서 다음 순찰지로 이동을 못함 1)원인 : nav mesh 컴포넌트를 가진 오브젝트끼리는 기본적으로 서로를 피해가려고 하기때문에 한번 겹치면 서로 계속 피하려고 하기때문에 속도가 0이 되지않음 (속도가 0이되어야 다음 순찰지로 이동하도록 코드를 구현해놨음) 2)디버깅 : Obstacle Avoidance quality는 만났을 때 서로 피해가는 방식에 관해서인데 이것을 none으로 해주던가 혹은 Avoidance Priori..
Unity3D_Quater - AI시야 구현 적용 1.플래그 변수 추가 - AI의 시야거리 반경내에 플레이어가 존재하는지를 체크하는 Bool값 변수인 targetNear와 - AI의 시야각 내에 들어왔고, 플레이어사이에 아무런 장애요인이 되는 오브젝트가 없이 바로 플레이어를 확인했는지 체크하는 Bool값 변수인 targetConfirm 변수를 선언 - 각 상황에 따라 플래그가 작동하도록 코드 구현 2. Enemy 관리 - Enemy 프리팹에 AngleView 스크립트를 드래그 앤 드랍으로 적용시키고 - public으로 AngleView스크립트를 선언 후 인스펙터창에 자기 자신 프리팹을 드래그 앤 드랍한다 - 기존에 isTrackingOn()과 isTrackingCancle()을 나누었었는데 두 함수를 없애고 대신에 isRecognizePlayer()함수..