본문 바로가기

Unity

(160)
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) 총알 및 총알..
Unity3D_Quater - 총알 발사 구현 #1. 원거리무기로 공격하기 - 총알 및 탄피 프리팹을 instate 및 destroy하는 방식으로 구현 1) 총알 만들기 - Trail Renderer 오브젝트(구 콜라이더, 리지드바디) - 프리팹 생성 2) 탄피 만들기 - 모델프리팹 오브젝트(박스콜라이더, 리지드바디) - 프리팹생성 3) 플레이어가 z키로 공격했을때 총알이 발사되고 탄피가 튕겨 나가서 아래로 떨어지고 탄피는 사라짐 - z키로 공격 : 플레이어 어택함수 - 오른팔을 들어올림 : shot애니메이션 실행 - 총알이 발사 : 총알 프리팹 생성 instate , 총알 프리팹 생성될 위치, 리지드바디 속력 또는 힘을 주어 일정방향으로 나아감 - 탄피가 튕겨 나가 : 탄피 프리팹 생성 instate, 탄피 프리팹 생성될 위치, 리지드 바디 랜덤속..
Unity3D_Quater - 근접공격이펙트, 근접공격 구현 1.Weapon 스크립트 작성(변수) *TrailRenderer 무기이펙트 스킬 - Weapon 스크립트 작성 후 플레이어의 오른팔에 비활성화 상태로 들어있는 무기오브젝트에 스크립트를 넣어주고 - 타입, 공격속도, 근접공격범위, 근접공격이펙트 변수를 public으로 선언하여 무기오브젝트중 망치 오브젝트의 인스펙터창에서 할당해준다 - 망치오브젝트에 박스콜라이더를 생성하여 자기 자신오브젝트를 public BoxCollider 변수에 드래그 앤 드랍한다 - 망치오브젝트 안에 자식 오브젝트로 *TrailRenderer(우클릭 ->create ->effect)를 생성하고 위치를 망치머리부분으 로 조정해준다 - width 그래프에서 우클릭으로 point를 생성하여 시간이 지날수록 이펙트가 좁아지도록 드래그하여 그래..
Unity3D_Quater - 아이템획득(체력, 코인 등) 및 폭탄소유 이펙트 1. 아이템을 획득 - 아이템을 획득하면 각 아이템이 가진 value만큼 아이템수량이 올라가고 최대아이템수량까지 정해주도록 코드 구현 *스위치문에서 item.tpye에 따른 case변화를 나타낼때 ITem.Type.Ammo 와 같은 방식으로 이넘클래스를 가져오는 스킬 2. 폭탄이 움직일때만 파티클 이벤트 주기 *1.파티클시스템 인스펙터의 Emission에서 기존 Rate Over Time을 0으로 하고 Rate Over Distance의 값을 늘려줌 2. simulation space를 기존 Local에서 World로 바꿔줌 (각 오브젝트의 매쉬하나 하나 설정해주어야함... 한번에 전체선택해서 바꾸면 한개만 바꿔짐 ㅠ) *스킬 : transform.RotateAround(기준위치, 회전축, 회전속도*Ti..
Unity3D_Quater - 애니메이션 동시재생(애니메이션 레이어) 1.아바타마스크 생성 Project 뷰에서 Asset폴더 안에 우클릭으로 create - > Avata Mask 클릭 아바타 마스크는 애니메이션레이어를 사용할때 위에 덮어쓴 애니메이션이 적용될 본을 지정하는 것으로 해당레이어에서는 선택한 곳만 애니메이션을 따라서 움직이게하고 그 외의 본은 그보다 아래레이어의 애니메이션을 작동하도록 만드는 것이다 2.아바타 뼈대 등록 - FBX 캐릭터 모델의 인스펙터창에서 Rig를 클릭하고 Avatar Definition을 Create From This Model 로 해주면 모델 안에 아바타가 생성되는데 이 아바타를 1에서만든 아바타의 Transform에 드래그 앤 드롭해준다 - 나는 달리는 도중에 장전애니메이션을 동시에 재생시킬 것이기 때문에 아바타마스크의 인스펙터창에서..