본문 바로가기

Unity/Unity3D_Quater

(40)
Unity3D_Quater - 원거리몬스터 구현, 기능보완 및 디버깅 1.원거리몬스터 Enemy C 오브젝트 생성 - Asset 프리팹 드래그 앤 드랍 - 컴포넌트 : 리지드바디, 박스콜라이더, 네비메쉬에이전트, Enemy스크립트 - tag 및 Layer : Enemy - Enemy C의 Mesh와 관련된 자식오브젝트인 Mesh Object 컴포넌트로 EnemyC관련 애니메이터 추가 - Enemy C 애니메이터는 기존 Enemy B 애니메이터를 복사하여 안의 애니메이션만 바꿔주면 됨 2. 미사일 오브젝트 생성 및 프리팹화 - Asset 프리팹 드래그 앤 드랍 - 컴포넌트 : 리지드바디(UseGravity X), 박스콜라이더(isTrigger O), 파티클시스템, Bullet스크립트 - tag 및 Layer : EnemyBullet - 미사일오브젝트의 Mesh와 관련된 자식..
Unity3D_Quter - 돌격형 몬스터 애니메이션 수정, 몬스터 반경범위 플레이어인식 AI추가 1.돌격형 몬스터 애니매이션 수정 -Asset에서 제공하는 Animation은 ReadOnly로 수정이 불가능 하지만 해당 Animation을 복사한 Animation은 수정이 가능하다 -돌격형몬스터 공격 스크립트 수정 2. 몬스터 반경범위 플레이어인식 AI - 몬스터를 중심으로 일정거리의 인지범위 안에 플레이어가 들어올시에 Tracking을 시작하도록 하고 - 플레이어가 몬스터로 부터 일정거리 떨어지면 Tracking을 취소하고 몬스터가 다시 원래자리로 돌아가도록 구현 *NavMeshAgent.remainingDistance 활용 NavMeshAgent에 지정된 목적지까지 남은 거리를 반환(처음엔 정지 상태이기 때문에 항상 0을 반환)
Unity3D_Quater - 돌격형 몬스터 구현 1.돌격형 몬스터 Enemy B 구현 - Enemy A의 컴포넌트 들을 복사하여 Enemy B 오브젝트의 컴포넌트에 붙여넣기 한다 + 애니메이터 + tag 및 Layer 도 Enemy로 지정해준다 - Nav Mesh Agent에서 Speed(추적속도), Augular Speed(추적회전속도), Acceleration(추적가속도)값을 Enemy A와 다르게 변화를 준다 - 몬스터 타입을 enum Tpye으로 나누고 타입에 따라 공격 감지 범위를 조절하는 코드 구현 *SphereCastAll()에서 3번째 파라미터를 vector3.forward가 아니라 transform.forward로 해야함!! 주의 - 몬스터 타입을 enum Tpye으로 나누고 돌격형 몬스터인 Enemy B는 rigidBody를 이용하여..
Unity3D_Quater - 플레이어의 피격, 몬스터A 공격 구현 1. 플레이어 피격 - 플레이어가 enemyBullet 오브젝트와 OnTriggerEnter가 되면 OnDamged() 함수 실행(+실행조건 : isDamaged = false) OnDamaged(){ - 노란색으로 바뀌고(GetComponentsInChildern();) - isDamaged = true - 총알 스크립트의 데미지를 가져와서 플레이어의 체력을 깍음 - 1초 후(코루틴으로 함수 구현) - 다시 원래색으로 돌아옴 + isDamaged = false } 2.몬스터 공격 - 몬스터 공격 범위가 될 BoxCollider 생성 - > Tag, Layer = EnemyBullet - 몬스터 오브젝트 안에 자식으로 넣어주고 위치 조정 - 몬스터가 플레이어를 추적하다가 플레이어와 일정 거리가 되면 - ..
Unity3D_Quater - 몬스터 AI 만들기 1.Enemy A 오브젝트 생성 - Enemy A 프리팹을 드래그 앤 드랍하고 컴포넌트로 리지드바디, 박스콜라이더, Enemy 스크립트를 추가해준다 - Enemy A 프리팹의 자식 오브젝트에 meshRenderer 컴포넌트가 있으므로 Enemy 스크립트에서 meshRenderer를 초기화 해주는 Awake()안의 코드를 GetComponentInChildren으로 바꾸어준다 2. 네비게이션으로 몬스터 AI 주어 플레이어 추적하기 1). Enemy A 오브젝트의 컴포넌트로 Nav Mesh Agent를 추가해줌 2) 몬스터가 플레이어를 추적하도록 코드구현 (중요스킬) *navMeshAgent - 네비메쉬에이젼트 컴포넌트 *.SetDestination(추적할 오브젝트 위치) - 추적로직 3) Navigatio..
Unity3D_Quater - 캐릭터 폭탄투척, 폭탄 이펙트, 적 폭탄피격 구현 수류탄 투척 1. 투척할 수튜탄 오브젝트 생성 후 프리팹화 1)수류탄 오브젝트 인스펙터 : 수류탄자체는 중력의 영향을 받으며 충돌이 가능하고, 마찰력과 탄성력을 높혀주어 활동성을 높이고, 날라갈때 이펙트를 줄것, 그리고 폭팔하면서 폭팔이펙트, - 컴포넌트 : 리지드바디, 구콜라이더, 트레일랜더러, 피지컬메테리얼즈 2)수류탄 스크립트 : 2에서 플레이어가 던진 수류탄은 2의 힘에 의해 굴러가다가 멈출것임(폭탄속력0, 회전속력 0) : 멈춘 폭탄은 몇초 후 터지면서(코루틴,폭탄이펙트(트레일랜더러)활성화, 폭탄메쉬는 비활성화) 폭발범위안의 적들을 찾음(shapeCastAll) : 그렇게 찾은 rayCastHit 오브젝트들을 배열에 담아서 해당 오브젝트들이 모두(foreach활용)넉백하고 데미지를 입음 Enem..
Unity3D_Quater - 피격 테스터 만들기 1. 피격 테스터 오브젝트 생성 - 콜라이더, 리지드바디 2. 피격테스터 스크립트 - 필요한 변수 : 전체피통, 현재피통 - 필요한 기능 : 총알 또는 망치를 맞았을때 잠깐 빨간색으로 변하고 현재피통이 깎임 : 피가 0이되면 회색으로 바뀌고 맞은 반대 방향으로 넉백, 3초후에 사라짐 맞았을때 - 온 트리거 잠깐 빨간색으로 변함 - 코루틴 1.TestEnemy 피격 테스터 오브젝트 생성 - 콜라이더와 리지드바디 추가 (플레이어와 마찬가지로 Freeze Rotation x와 z를 체크해주면 안돌아감) 2. 피격테스터 오브젝트 스크립트 작성 - Enemy 스크립트를 만들어서 피격테스터에 드래그 앤 드랍 3. 페격테스터가 죽었을대 플레이어와 충돌무시Layer설정 *총알 프리팹 그리고 플레이어오브젝트안의 오른팔안..
Unity3D_Quater - 마우스에 의한 회전 및 공격 구현, 물리문제 해결 1.마우스에 의한 회전 구현(raycast 활용) - 스크린에서 마우스클릭으로 Ray를 발사하기 *camera.ScreanPointToRay() -> 스크린에서 월드로 ray를 쏘는 함수 *out -> return처럼 반환값을 주어진 변수에 저장하는 키워드 *rayHit.Point -> Ray가 닿았던 지점의 위치 *참고) raycast out에 관한.. ssabi.tistory.com/29 [Unity3D] 레이캐스트(Raycast) 레이캐스트(Raycast) 레이캐스트는 광선을 쏘는 것을 의미합니다. 여기서는 레이를 쏜다 라고 표현하겠습니다. 레이캐스트를 사용하면 광선에 충돌되는 콜라이더(Collider)에 대한 거리, 위치 등의 ssabi.tistory.com 2. 물리문제 해결 1) 총알 및 총알..