[ Enemy1 ] - Scene05
Enemy에 사용되는 이미지 구성하기
Assets/Sprites/_Character/char_enemy_alienSlug.png 복사
Assets/Sprites/_Character/char_enemy_alienSlug-dead.png 복사
Sprite Editor 사용하여 char_enemy_alienSlug를 Slice (Pixels To Units : 100 : 40 아님)
body를 두개로 나누는 법
기존의 Slice에 Ctrl+D(복사)를 누르면 Slice를 하나 더 할 수 있게 됨
body를 적정하게 만든 후 Slice를 만든 후 복사한 다음 tail을 만들면 됨
Slice된 이미지들에 각각의 이름 붙이기
enemy1-tail / enemy1-body / enemy1-eye / enemy1--eyelid
char_enemy_alienSlug-dead는 그대로 사용하면 됨
Enemy1 GameObject 생성
Empty Object를 만든 이후 Enemy1 이라고 이름을 바꿈
Enemy1에 필요한 모든 이미지들을 GameObject로 만든후 Enemy1 밑에 붙임
enemy1-tail / enemy1-body / enemy1-eye / enemy1--eyelid
참고 : z값에 변화를 주면 이미지의 앞 뒤 순서가 결정됨
Sprite Renderer>> Sorting Layer : Character로 설정
이미지들을 조합하여 적 캐릭터를 만듬
Rigidbody 2D 추가
Freeze rotation : z : check
Interpolate : Interpolate
Circle Collider 2D 추가
Radius / Center 조정
Play 테스트
Enemy1 움직이기
<Source> Enemy01.cs
탑(Obstacle)을 만나면 방향을 바꿔서 움직이도록 하기
Enemy 하단에 frontCheck라는 Empty Object 생성
생성된 frontCheck를 Enemy 앞에 위치하도록 함
Physics2D.OverlapPoint(All) : 매개 변수로 들어가는 정점을 기준으로 z 값에 있는 Collider (들)을 알려 준다.
<Source> Enemy02.cs
"Enemy" Tag 만들고 설정하기
[ Scripts 2 ]
Awake / FixedUpdate / Destroy /...
[ Awake / FixedUpdate 처리하기 ]
Hero & Enemy
가급적 Hero & Enemy에 있는 Start() 함수를 Awake() 함수로 바꿀 수 있도록 하고, AddForce와 같은 물리적인 속성이 있는 함수가 있을 경우 Update() 함수 대신에 FixedUpdate() 함수를 사용할 수 있도록 할 것
[ Rocket ]
Rocket(GameObject) 만들기
Assets/Sprites/Prop/part_flame.png와 part_rocket.png 복사
part_flame Sprite Inspector
Texture Type : Sprite
Sprite Mode : Multiple
Sprite Editor를 이용해서 Slice
Slice가 잘 안되니까 재주껏 잘 해서 만들 것
Pivot은 right로
Packing Tag : None
Pixels To Units : 25
part_rocket Sprite Inspector
Sprite Mode : Single
rocket이라는 Empty Object 생성
part_flame과 part_rocket을 rocket 밑에 배치
두 Object의 Sorting Layer(in Sprite Renderer)를 Character로 세팅
part_flame Animation 만들기
Animation View 열기
Animation View : part_flame을 선택한 상태에서 Create New Clip 선택
Add Property
SpriteRenderer >> Sprite
Transform >> Position
part_flame의 이름을 flame으로 바꾸고 Component로 Animator가 들어가 있는지를 확인
Animator
Apply Root Motion : UnCheck
Animate Physics : Check
flame의 scale을 0.05 크기로 세팅
part_rocket의 이름을 rocket으로 바꿈
rocket의 scale을 0.05 크기로 세팅
rocket 밑에 trail 이라는 Empty Object 생성
rocket이 날아가는 끝 부분에 연기를생성하는 파티클
스프라이트 그래픽 유형의 Particle Effect가 가능
[ Particle System 사용하기 ]
Component >> Effects >> Particle System
Renderer 파트의 Smoke Material 만들기
Assets/Sprites/_FX/part_smokepuffs.png 복사
Assets/Materials 폴더 만들기
Materials 폴더에 New Material 만들기
Material 이름을 Smoke로 변경
Smoke Inspecter View
Shader : Particle>>Additive
Texture : part_smokepuffs.png 선택
OnCollsionEnter2D / OnCollisionExit2D :: OnTriggerEnter2D / OnTriggerExit2D
Rocktet 움직이고 충돌 체크 처리
Rigidbody2D Component 추가
Mass : 1
Linear Drag : 0
Angular Drag : 0.05
Gravity Scale : 0
Fixed Angle : Check
Is Kinematic : Uncheck
Interploate : Interpolate
Sleeping Mode : Start Awake
Collision Detection : Discrete
BoxCollider 2D Component 추가
Material : None
Is Trigger : Check
Size / Center : 알맞게
참고 : Center 부분이 (0, 0)으로 되지 않는 경우 rocket의 transform 위치가 그림 이미지의 위치와 큰 차이를 보이는 것을 의미한다. (0,0)으로 맞추어 줄 수 있도록 하는 것이 필요하다.
Rocket(Script) Componet 추가
OnTrigger() 함수에 Enemy를 들어오면 "Enemy ..." 를 출력
<Source> Rocket01.cs
Rocket Explosion 처리하기
rocketExplosin Prefab 만들기
Assets/Sprites/_FX/part_explosion.png 복사
Sprite Inspector
Texture Type : Sprite
Sprite Mode : Multiple
Sprite Editor : Slice할 것
Pixels To Units : 160
Filter Mode : Point
rocketExplosion(Game Object)만들기
part_explosion을 GameObject로 만듬(Hierarchy 창으로 끌고 옴)
이름을 rocketExplosion로 바꿈
Sprite Renderer
Material : HalfAlpha
New Material >> HalfAlpha
Shader : Sprites/Default 세팅
Tint : A(알파) 값을 134로 세팅
Sorting Layer : Forground
Audio Source Component 추가
Audio Clip : rocketExplode
Assets/Audio/FX/rocketExplode 복사
Play On Awake : Check
Sprite Animation 만들기
RocketExplode.anim 생성
알아서 잘 만들기
폭발 애니메이션이 한번만 작동하도록 만들기
Destroyer(Script) 생성 및 rocketExplosion에 추가
DestoryGameObject() 함수 생성
마지막 폭발효과 애니메이션이 끝나면 호출되게 할 함수를 정의
<Source> Destroyer01.cs
Sprite Animation View >> RocketExplode.anim
마지막 프레임에 "Add Event" 아이콘 클릭
Event로 호출될 함수로 위에서 정의한 함수(DestoryGameObject)를 선택
rocketExplosion Prefab 만들기
rocketExplosion을 Rocket(Script)에 붙이기
Enemy Object나 Player Object이외의 Object들(Collider가 있는)을 만나게 되면 폭발 효과가 나오도록 처리
<Source> Rocket02.cs
Explosion : prefab인 rocketExplosion 붙이기
Rocket Prefab으로 만들기