[ 2D 과정 ]
목표 : Unity 2D SampleProject로 게임만들기
2D SampleProject의 그래픽 리소스를 사용하여 새로운 게임만들기
[ 교육 과정 ]
Native 2D Tools Sample Project(Unity Projects 02: 2D Platformer) Download
AssetStore 접속
Unity3D의 특징
2D 게임 환경 설정
setup default option : 2D/3D
Edit >> ProjectSetting >> Editor
Default Behavior Mode : 2D
2D button in Scene View 설명
Unity 3D의 개발 환경
Sample 분석
모든 이미지들은 Sprite 타입으로 작업되었음
Tags & Layers >> Sorting layers
이미지 출력하기 - Scene01
고정 배경 이미지 출력하기
Sprite Renderer
Sprite : 출력할 스프라이트 이미지
Color :
Material :
Sorting Layer : Render되는 순서를 위한 Layer 이름(뒤에 설명됨)
Order in Layer : Layer안에서도 Render 순서를 정함(숫자가 높을 수록 화면 앞에 출력)
흐르는 이미지 출력하기( 구름, 포그, 흐르는 강 등)
Window >> Animation
New Anim
Add Curve >> Transform >> Position
Script >> BackgroundParallax : 일단 필요 없음
Sprite Renderer 를 이용한 애니메이션- Scene02
Window >> Animation
New Anim
Add Curve >> Sprite Render >> Sprite
끌기로 모두 넣고 간격 조절 후 Sample 값으로 속도 조절도 가능하다.
스프라이트 이미지는 좌/우 중에 하나만 있으면 된다.
Sprite Renderer를 이용해서 새가 날아가는 애니메이션 구현해 보기
StartCorutine을 사용하는 것이 바람직할까? - 일단 Update를 사용해 보며 단계적으로 처리하는 것이 좋을 듯..
참고 소스는 BackgroundPropSwaner.cs를 참고할 것
Backgrounds 만들기 - Scene03
지금까지 만든 GameObject들을 Backgrounds layer로 설정
Sorting Layers
Layer 값이 높을 수록(아래쪽에 있을 수록) 화면 앞에 놓이게 됨
Layers >> "layer" lock : Scene View에서 선택되지 않도록 할 수 있음
Foregrounds (게임의 장애물들 : Collider들이 있는 것들....)
Box Collider 2D 생성해보기
Polygon Collider 2D 생성해 보기
collider 정점 움직이기 shift키 누르고 해야 함
Character
Hero ( Sprite 애니메이션과 동작 애니메이션이 가능한 형태로 만들어 보자 : 그냥 스프라이트 애니메이션에 모자를 붙이는 형태?)
Sprite Packer
Sprite Editor 사용하기
자동 및 Trim 사용
Rigidbody2D 삽입
gravity 적용
발판 Object의 경우 필히 Box Collider 2D로 되어 있어야 함
Cube를 만들었다면, Box Collider를 없애고 Box Collider 2D로 대체할 것
Macanim 사용하기
Animator Controller 삽입
두 개의 State 넣기 (idle, walk)
주황색 : Default State
make Transition
Parameters 추가
Speed
Conditions
Speed > 0.1 면 Transition
Script (PlayerControls)
private Animator aim = GetComponent<Animator>();
anim.SetFloat("Speed", v);
캐릭터 움직이기 두가지 테스트
Addforce 로 움직이기
CharacterController를 사용하고 있지 않고 Rigidbody에 Addforce를 사용해서 움직이게 하고 있음
if(h * rigidbody2D.velocity.x < maxSpeed)
rigidbody2D.AddForce(Vector2.right * h * moveForce);
Rigidbody2D Component >> Fixed Angle : check
객체가 회전하지 않도록 함
포지션을 바꿔서 움직이기
transform.position += transform.right*h*speed*Time.deltaTime;
참고
Create new BlendTree in State >> Double Click
Motion Add
Enemy
GUI
GameObject >> Create Other >> GUI Text
GameObject >> Create Other >> GUI Texture
X / Y로 위치를 조정해야 함
W / H로 크기를 조정해야 함
Sprite Image >> Combine : pivot도 있음
체크 사항: TextureImporter
Box2D
Sprite Edior / Sprite Window
2D 게임 만들기
2D 게임 업그레이드
기타
rcolorZero->backBuffer == rdepth->backBuffer 무슨 에러?????