unity cookbook 5

13
UNITY COOKBOOK SHOT BY. INS PART 5 생생생 생생 & 생생 생생생생생

Upload: jihun-soh

Post on 15-Apr-2017

71 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Unity cookbook 5

UNITY COOKBOOKSHOT BY. INS

PART 5생성과 삭제 & 탱크 업그레이드

Page 2: Unity cookbook 5

생성과 삭제 #1

‘SPACE BAR’ 버튼을 누르면 공이 생성되는 기능을 만들어보겠습니다 .우선 새로운 지면과 , 공 , 그리고 ‘ Create Empty’ 를 통해 빈 오브젝트를 공이 생성 될 지면 위에 배치합니다 .이후 생성 된 공은 ‘ Hierarchy View’ 에서 직접 드래그로 ‘ Project View’ 로 옮겨 줍니다 .이 때의 과정은 ‘ Prefab’ 으로 변환한 오브젝트는 실시간 변동하는 하이어라키 뷰에서 사용 위험성을 줄일 수 있습니다 .

( 1 / 11 )

# 빈 오브젝트 생성 # 객체의 프리팹화

DRAG!

Page 3: Unity cookbook 5

생성과 삭제 #2

새로운 C# 스크립트를 만들어 위와 같은 코드를 적어봅시다 .매개변수로는 생성 될 객체를 받고 , 키를 눌렀을 때 ‘ Instantiate’ 를 통해 지정 된 객체를 실행합니다 .개념은 게임 오브젝트나 프리팹의 복사본을 만드는 함수이며 복사 대상이 될 객체를 인스턴스화 시켜버립니다 .또한 공 객체를 대입하는데 이 때 ‘ Project View’ 에 생성 한 공을 대입합시다 .‘Hierarchy View’ 의 대상 객체가 대입 될 경우 플레이 도중 해당 객체가 없어지면 에러가 뜨기 때문입니다 .

( 2 / 11 )

Page 4: Unity cookbook 5

생성과 삭제 #3

실제 게임을 해보면 공이 복사생성 된 것을 알 수 있습니다 .복사의 원본이 사라지면 안되기 때문에 ‘ Project View‘ 에서 직접 관리하는 것도 좋은 방법 중 하나입니다 .이후 공을 생성하는 스크립트를 수정해 봅시다 . 신기하게도 ‘ Instantiate’ 함수는 리턴 값으로 ‘ Object’ 자료형을 반환하는데이를 변수로 이어받아 삭제나 여러 수정이 가능합니다 .대입 시 ‘ Object’ 는 최상위 계층이므로 모호성 제거를 위해 ‘ as GameObject’ 로 강제 캐스팅이 필요합니다 .

( 3 / 11 )

강제 캐스팅

5.0 초 뒤 대상이 사라지게

Page 5: Unity cookbook 5

생성과 삭제 #4

‘Project View’ 에서의 공 객체에 ‘ Add Component’ 로 ‘ Rigidbody’ 를 추가하고 게임을 플레이 해보았습니다 .물리를 가지고 있는 공은 사전에 설정한 ‘ Empty Object’ 위치에서 생성되고 5 초 후 차례대로 삭제되는 것을 볼 수 있습니다 .하지만 지나친 생성과 낭비는 GC(Garbage Collection) 이 발생하여 프로그램에 부하가 생길 수 있는 점 주의하세요 .

( 4 / 11 )

# 튀어오른 공은 잠시 후 사라진다 .

Page 6: Unity cookbook 5

탱크 업그레이드 #1

지난 시간에 만들었던 탱크를 업그레이드 하여 사격 기능과 , 목표를 맞추었을 때의 반응 이벤트까지 구현해보겠습니다 .탱크 오브젝트 계층에서 포구 오브젝트인 ‘ poAxis’ 그룹 하위 계층으로 빈 오브젝트를 만들고기즈모를 이용한 직교 투영으로 정확히 포구 중앙에 배치합니다 .이 부분은 미사일이 나갈 위치라고 설명할 수 있습니다 .

( 5 / 11 )

Empty Object

Page 7: Unity cookbook 5

탱크 업그레이드 #2

아까랑 동일하게 탱크 포탄으로 쓰일 객체를 만들고 ‘ Rigidbody’ 를 ‘ AddComponent’ 하여 ‘ Project View’ 로 넘겨줍니다 .전 귀찮아서 공 모양의 포탄으로 만들었습니다 .

( 6 / 11 )

Project View 에서 관리

Page 8: Unity cookbook 5

탱크 업그레이드 #3

전에 탱크를 움직였던 스크립트를 열어 새로 추가된 소스를 이용합니다 .생성 될 총구의 위치와 총알 객체를 매개변수로 받고 , ‘Space Bar’ 를 눌렀을 때 총구 위치에서 총구의 전방 (x 좌표 )방향으로 객체를 생성하고 이 때 총알에 붙어있는 ‘ Rigidbody’ 컴포넌트를 코드로 직접 조종합니다 .총구의 전방 방향으로 힘껏 밀고 5 초 후 사라지는 겁니다 .

( 7 / 11 )

총구와 투사체

3000.0 만큼의 힘으로 대상 객체를 민다 .

Page 9: Unity cookbook 5

탱크 업그레이드 #4

기존 탱크에 붙어있던 스크립트 컴포넌트를 알맞게 대입한 뒤 실행합니다 .놀랍게도 정확히 총구 방향으로 힘있게 날라가는 포탄을 볼 수 있습니다 .그리고 총알은 5 초 후 삭제됩니다 .

( 8 / 11 )

# 날아가는 포탄

Page 10: Unity cookbook 5

탱크 업그레이드 #5

새로운 C# 스크립트를 만들어 위와 같은 코드를 만들고 ‘ Project View’ 에 있는 총알 객체에 스크립트를 붙여줍니다 .그리고 타겟으로 정할 기둥을 몇 개 만들고 그 중 진짜 타겟 에게는 새로운 메테리얼을 만들어 ‘ Albedo’ 를 눌러빨갛게 만든 뒤 ‘ Tag’ 는 ‘ Enemy’ 로 지정합니다 .평범한 기둥과 일반 기둥을 지정해 총알이 닿는 물체의 태그가 ‘ Enemy’ 라면 공과 함께 삭제됩니다 .

( 9 / 11 )

# 날아가는 포탄

Page 11: Unity cookbook 5

탱크 업그레이드 #6

이처럼 진짜 붉은 타겟은 공이 충돌할 때 태그를 감지하여 공과 함께 사라지지만반대로 그냥 일반 타겟은 아무런 이벤트가 없어 튕겨져 나가는 것을 볼 수 있습니다 .

( 10 / 11 )

# 튕겨나간 포탄 # 명중 된 포탄

DELETE!

Page 12: Unity cookbook 5

탱크 업그레이드 #7

이후 총알 스크립트를 개선하여 더욱 멋있고 간지나는 작업을 완료 했습니다 .어셋스토어와 컴포넌트의 활용으로 멋진 탱크를 업그레이드 해보았습니다 .

( 11 / 11 )

물체의 속성 설정 ( 수동 )Ex: 탄성력 , 마찰력 등

Page 13: Unity cookbook 5

End