유니티 총알 프리 팹 - yuniti chong-al peuli paeb

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 먼저 3D로 프로젝트를 생성하고 캡슐로 3D 오브젝트를 생성해주세요. 

게임 오브젝트에 이름을 player로 바꿔주세요. 

그리고 3D오브젝트로 Plane 땅도 생성해주세요. 

그런 다음에 총알과 플레이어 색을 구분하기 위해 머테리얼을 생성해주세요.

색은 여러분들이 원하시는 색으로 자유롭게 바꿔주세요.

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 그런 다음에 빈 게임 오브젝트를 생성해주시고 이름을 ShotPos로 지정해주세요 이건 총알을 쏠 때 

생성되는 위치로 지정할겁니다. 

그리고 중요한건 처음 생성할 때 꼭 Posistion에 값을 0,0,0으로 초기화를 해주신 다음에 

Player오브젝트 자식으로 넣어주세요. 

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 이번에는 총알을 생성해주세요. 저는 구분하기 쉽게 3D 오브젝트에 큐브로 생성했습니다.

이름도 바꿔주시고 크기와 색도 자유롭게 바꿔주세요. 

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 이번에는 총알이 삭제되는 벽을 생성해보겠습니다.

저는 3D오브젝트에서 큐브로 생성했습니다. 

크기와 위치를 적당하게 넣어주시고 총알이 삭제되는 벽을 안 보여도 되기 때문에

크기와 위치를 모두 지정했다면 이름과 태그를 꼭 지정해주세요.

그리고 Mesh Renderer를 비활성화해주세요.

그럼 사라져 있는걸 볼 수 있습니다.

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 그리고 bullet에 Bullet Manager라는 스크립트를 생성해주세요.

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 그리고 간단하게 코드를 작성해보겠습니다.

총알을 누구와도 물리작용하지 않을 거기 때문에 OnTriggerEnter() 함수를 사용했습니다. 

그리고 if(other) 만약 총알에 닿인 태그가 아까 삭제 벽을 지정했던 Ground 태그에 닿이면 

자신이 삭제하는 코드를 작성합니다. 

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 그런 다음에 Bullet에 BoxCollider에 Is Trigger를 체크해주시고

총알이 무언가 닿이는 물리효과가 필요하기 때문에 Rigidbody를 추가해주세요.

그리고 난 다음에 플레이를 해보면 총알이 쭉 떨어지는 걸 볼 수 있습니다. 

이건 실험을 위해 우선 Use Gravity를 체크를 해제하도록 하겠습니다. 

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 그리고 플레이를 해서 총알을 삭제벽에 닿게 하면 삭제되는 걸 확인할 수 있습니다. 

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 그런 다음에 bullet오브젝트를 프리팹으로 만들어보도록 하겠습니다. 

프리 팹으로 만들게 되면 게임 오브젝트를 객체와 시켜서 똑같은 모양을 여러 번 똑같이 복제해서 사용할 수 있다고

생각하시면 됩니다. 

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 프리팹을 생성했다면 이렇게 bullet게임 오브젝트를 삭제해주세요.

그리고 Player에 PlayerManager 스크립트를 추가해주세요.

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 먼저 public GameObject bulletPrefab, TransForm shotPos를 선언해주세요. 

그리고 업데이트에서 스페이스 키를 누르면 

우선 GameObject bullet = Instantiate(bulletPrefab)을 해주세요. 

Instantiate(bulletPrefab) 이 함수는 해당 오브젝트를 생성해주신다고 생각하시면 됩니다.

하실 Instantiate(bulletPrefab) 함수 안에서 위치도 바꿀 수 있지만 

GameObject bullet 변수 선언 및 정의로 bullet이라는 변수를 통해 위치와

Rigidbody를 가지고 오게 편하게 하기 위함입니다. 

▣ 그리고 bullet에 위치를 바꿔주세요. 

여기서 원하는 위치로 코드를 변경하셔도 됩니다. 

▣ 그런 다음에 bullet에 Rigidbody를 가져와서 AddForce() 함수로 X값으로 가게 해주세요.

만약 bullet오브젝트에 Rigidbody 컴포넌트를 넣지 않았다면 이 부분은 꼭 확인해주세요.

복제한 bullet에 컴포넌트를 사용하겠다라는 의미로 생각하시면 됩니다. 

코드를 완성했다면 저장을 하고

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 스크립트영역에 public으로 접근할 수 있는 두 개에 영역이 생성된 걸 확인할 수 있습니다.

여기에 각각 총알프리팹과 위치 오브젝트를 넣주시고 

유니티 총알 프리 팹 - yuniti chong-al peuli paeb

▣ 스페이스를 눌러 플레이를 해보시면 총알이 정상적으로 가는 걸 확인할 수 있습니다. 

그리고 삭제되는것도 확인할 수 있습니다. 

▣ 여기까지 내용을 활용해서 직접 총알을 발사하는 게임을 만들어보세요.