[ Hero ]
Hero가 적캐릭터와 부딪혔을 때의 처리
PlayerHealth.cs 생성
플레이어가 적 캐릭터와 부딪히면 에너지가 감소하도록 한다. 단, 한번 부딪히고 나면 일정 시간 이후에 다시 에너지를 감소할 수 있도록 구현 (너무 빨리 죽는걸 방지하기위한 설정)
<Source> PlayerHealth01.cs
적에게 피해를 입었을때 알 수 있도록 밀려나는 효과 추가를 추가하고 밀려나면서 체력이 감소시키고 체력 게이지를 업데이트 해 줌
<Source> PlayerHealth02.cs
Sound 추가
적 캐릭터와 부딪혔을 때 소리가 나도록한다.
Assets/Audio/Player/Ouch/Player-ouch1~4.wav 복사
<Source> PlayerHealth03.cs
public 변수 Ouch Clips의 Size에 4를 입력한 후 Player-ouch1~4.wav를 각각 대입
Hero Dead 처리
죽게되면 죽는 애니메이션을 보여줄 수 있도록 한다.
Death와 Falling Animation 만들기 (죽은 후 스크린 밖으로 떨어지는 애니메이션을 연속으로 보여줌)
Animator View에서 새로운 State를 두개 생성해서 하나는 이름을 Death 다른 하나는 Falling으로 함
Death Animation 만들기
Animation View에서 새로운 애니메이션을 만든 다음 이름을 Death로 해서 저장
알아서 잘 만들기
Falling Animation 만들기
Animation View에서 새로운 애니메이션을 만든 다음 이름을 Falling로 해서 저장
Bazooka / Hat 등은 보이지 않게 처리하기
Add Curve >> Bazooka >> Sprite Render >> Color
Color.a : 0으로 세팅하면 안보이게 됨
나머지 부분은 알아서 만들기
참고 : Animation을 만들 때, Hero의 Position 부분이 들어가면 문제가 심각해짐
의도하지 않게 Hero의 Position이 들어가는 Animation이 발생하면 Position 부분을 삭제해 줄 것
Animator View의 작업
MakeTransition(AnyState --> Death)
Condition 파라미터 만들기 : Trigger로 Die 변수 만들기
Condition 조건으로 "Die" 선택
MakeTransition(Death --> Falling)
Condition 조건으로 Exit Time 선택
<Source> PlayerHealth04.cs
[ KillTrigger ]
역할 : 몬스터나 캐릭터가 KillTrigger에 닿으면 해당오브젝트를 제거하고 Hero가 빠지면 특정 작업을 한후 게임을 재시작하는 기능
killTrigger라는 Empty Object 생성
Box Collider2D 생성
Is Tigger : Check >> 부딪힌 Object가 통과될 수 있도록 하기 위해
Size : X:23.13 / Y:1.9
splash 만들기
Object가 KillTrigger에 닿을 경우 Splash 발생
Assets/Sprites/Fx/splash 복사
splash의 Sprite Editor
Slice
Type : Grid
Pixel : X:341 / Y:256
Pivot : bottom or center
Sprite 이미지를 Hierarchy View로 끌어 올림
이름을 splash로 만듬
Audio Source 추가
Audio Clip : waterSplash
Assets/Audio/FX/waterSplash.ogg 복사
Play On Awake : Check
Destoyer.cs 추가(이미 만들어 놓은 소스)
한번의 순환 이벤트가 끝나면 사라지도록 하기 위해 삽입
아래 Animation Event 와 연동
Animation 추가
Menu : Window >> Animation
Menu : Create New Clip (riverSplash.anim)
Menu : Add Curve >> Sprites Renderer >> Sprite
Rotation 조절
자동 생성된 Animator Component 세팅
Apply Root Motion : Uncheck
Animate Physics : Check
Culling Mode : Based On Renderers
알아서 애니메이션 만들기
Add Animation Event 추가
한번의 애니메이션이 끝나면 Destoryer.cs에 있는 함수를 호출
마지막 프레임 이후에 오른쪽 마우스 클릭으로 "Add Animation Event" 선택,
Function : DestroyObject()
Prefab으로 만들기
Remover.cs 생성 후 killTrigger 오브젝트에 연결
<Source>Remover01.cs
적 Object가 사라지도록 처리
public Splash 변수 >> splash(prefab)
<Source>Remover02.cs 해야 함
Hero가 죽을 경우 게임을 다시 시작하도록 처리
[ item - 구급/ 폭탄 상자 ]
Assets/Sprites/Props/prop_crate_ammo.png & prop_crate_health.png & prop_parachute.png를 복사
Sprite 이미지를 Hierarchy View로 끌어 올림
Object의 이름을 각각 crate, health, parachute로 만듬
healthCrate & bombCrate 라는 Empty Object 생성
다음과 같은 Hierarchy 구조를 가질 수 있도록 하고 모양을 만듬
healthCrate
health
parachute
bombCrate
crate
parachute
healthCrate & bombCrate에 Rigidbody2D 추가하기
Mass : 10
Linear Drag : 8
Angular Drag : 0.05
Gravity Scale : 1
Interpolate : Interpolate
Sleeping Mode : Start Awake
Collision Detection : Discrete
healthCrate & bombCrate에 Animation 추가하기
bombCrate에 Animator Controller (Component) 삽입
Menu : Component >> Miscellaneous >> Animator
Controller : ammo_pickup
Project View의 Assets/Animation/Controllers에서 오른쪽 마우스 클릭후 Animator Controller 생성 (Name : ammo_picup)
Avatar : None
Apply Root Motion : None
Animate Physics : Check
Culling Mode : Based On Renders
bombCrate에 상태 추가하기
Window >> Animator
Hero의 Animator View에서 오른쪽 마우스 클릭
Create State >> Empty
New State 클릭 >> Inspect View
FloatDown로 이름 바꿈
Create State >> Empty
New State 클릭 >>
Inspect View
BombLanding으로 이름 바꿈
bombCrate 애니메이션 만들기
Project View의 Assets/Animation/Clips에서 오른쪽 마우스 클릭후 Animation 생성 (Name :floatDown_ammo)
bombCrate 의 FloatDown을 위한 애니메이션을 생성
Menu : Window >> Animation
Menu : Create New Clip (floatDown_health.anim)
Menu : Add Curve >> Transform >> Rotation
Rotation 조절
생성된 애니메이션을 Controller의 FloatDown 상태에 연결
bombCrate >> Animator View >> FloatDown State >> Inspect View
Motion : floatDown_ammo.anim 으로 세팅
bombCrate 의 BoobLanding을 위한 애니메이션을 생성
Menu : Window >> Animation
Menu : Create New Clip (BombLanding.anim)
Menu : Add Curve >> parachute >> transform >> Scale
Scale 조정
Menu : Add Curve >> parachute >> Is Active
Active 조정
Menu : Add Curve >> parachute >> Sprite Renderer >> color
A(알파) 값 조정
생성된 애니메이션을 Controller의 BombLanding 상태에 연결
bombCrate >> Animator View >> BombLanding State >> Inspect View
Motion : BombLanding.anim으로 세팅
healthCrate의 health에 Script 추가하기
<Source> HealthPickup01.cs
실행 화면에서 물체가 땅에 닿은 이후 낙하산이 사라지지 않음
샘플에서는 한번의 애니메이션 이후에 Active가 비활성화 되는데....어떻게 한거지?
Prefab 만들기
bombCrate의 Crate에 Script 추가하기
<Source> BombPickup.cs
<Source> Bomb.cs
pickupManager처리하기
일정 시간(pickupDeliveryTime)이 지나면 item(healthCrate와 bombCrate)이 나오게 하는 역할을 수행
pickupManager 라는 Empty Object 만들기
PickupSpawner.cs 생성
<Source> PickupSpawner.cs
Pickups
Size : 2
Element 0 : bombCrate(prefab)
Element 1 : healthCrate
Pickup Delivery Time : 5
Drop Range Left : -15
Drop Range Right : 15
High Health Threshold : 75
Low Health Threshold : 25
healthCrate의 HealthPickup 확장
Hero가 healthCrate를 취하게 되면 HP가 상승할 수 있도록 함
또한 다른 (일정 시간 이후에) 아이템이 생성되도록 함
<Source> HealthPickup02.cs
Collect : healthPickup
Assets/Audio/FX/healthPickup.ogg 복사
healthCrate의 prefab에 적용
Bomb Prefab 만들기
Assets/Sprites/Propsbomb.png 를 복사
Sprite 이미지를 Hierarchy View로 끌어 올림
Object의 이름을 bomb로 만듬
Rigidbody2D 추가
Circle Collider 2D 추가
Bomb.cs 추가
폭발 처리를 담당
<Source> Bomb01.cs
Prefab으로 만들기
Hero의 LayBombs.cs 추가하기
Bomb를 취하게 되면, Bomb UI가 화면 왼쪽 하단에 생겨나며, Bomb를 사용할 수 있게 됨
<Source> LayBombs.cs
[HideInInsprector]
bomCrate/Crate에 bombPickup.cs 추가
Hero가 bomCrate/Crate를 먹으면 Hero가 bom을 소유하게 함
<Source> bomPickup.cs
Script
pickup Clip
BombPickup
Player-IDefyYou
Bomb 마무리
심지가 타는 효과 만들기
Material 생성하기
Assets/Sprites/FX/part_explosion.png 복사
New Material 생성후 ExplosionParticle 로 이름 변경
Texture : part_explosion (Sprite)
shader : Sprite/Default
diffuse 상태에서 이미지(part_explosion)을 삽입한 후 Sprite/Default로 바꿀 것
Shader 부터 바꾼 다음 이미지를 넣으려고 하면 작동하지 않음
Tint Color : 배경을 흰색으로 A(Alpha)는 207로 세팅
bomb에 sparks라는 Empty Object 추가
spark에 Particle System(Component) 추가
Spark의 Transform을 잘 조정해서 심지가 타는 것 같은 효과를 연출