유니티 5.2로 '유니티 애니메이션 에센셜' 2장 스프라이트 애니메이션 따라하기
2D로 설정한 뒤 프로젝트 생성.

* 스프라이트 아틀라스 분할하기: 이전 플래시로 걷는 애니 만들어 한장의 png 파일로 만들어놓았던 것 불러 들이고 Inspector 창에서 Texture Type: Sprite(2D and UI), Sprite Mode: Multiple로 설정, Sprite Editor 띄운 뒤 Slice 클릭, Type: Automatic(제작시 특정 동일 크기로 설정했을 경우 Grid By Cell Size 선택), Pivot: Bottom으로 선택한 뒤 Slice 버튼 눌러 나누고 Apply 클릭, 적용시키기.

* 스프라이트 애니메이션 만들기: 분할된 걷는 동작들을 모두 선택, Hierarchie 창에 끌어 넣으면 자동으로 Anim, Controller 파일이 생성되고 애니메이션이 자동으로 세팅된다. 걷는 애니메이션 속도를 줄이거나 늘릴 경우 Animator 창에서 해당 이벤트 선택한 뒤 Speed를 0.5로 줄이면 반의 속도, 2로 늘리면 2배의 속도로 재생된다.

* 애니 반복 실행/방지 처리: 애니메이션은 기본적으로 반복되는데 이걸 해제해 한번만 실행되게 할 경우 anim 파일을 선택, Inspector 창에서 Loop Time의 체크를 해제하면 된다.

* 애니메이션 편집: 편집할 게임 오브젝트를 Hierarchie 창에서 선택한 뒤 Animation 창에서 시간별 스프라이트를 바꾸거나 이동, 회전, 크기 변환 등을 처리할 수 있다.
이때 게임 오브젝트의 Inspector 창 Sprite Renderer 컴포넌트의 Sprite 항목은 붉은 색으로 표시되고 시간 변화에따라 Sprite가 차례로 바뀌는걸 볼 수 있다. 이 Sprite 항목에 원하는 Sprite를 넣어 대체시킬 수 있다.
2장 따라하기 완료.

낮에 만들던 2D 애니메이션 유니티 예제의 주인공에 Rigidbody(Use Gravity: Off-코드상에서 중력처리를 한다, Freeze Rotation X,Y,Z: On), Character Controller 적용.
3D Cube로 바닥, 플랫폼, 좌우 벽 만들기.
예전 철퇴를 피하고 동전을 먹는 유니티 예제 ChaActGame.sln의 PlayerController.js를 cs 용으로 수정하여 주인공 소년에 적용, 화살표 좌우로 좌우 이동, 윗쪽 화살표로 점프하게(Edit-Project Setting-InputManager 선택한 뒤 Jump 항목의 Alt Positive Button에 up이라 써넣어 추가) 만들다.
소년을 중심으로 카메라가 따라가게 처리.
걷는 방향으로 스프라이트 향하게 하기 처리는 아직 미완.

17/9/17 일

PlayerCtrl.cs=========================================
//-Hierarchy-Player에 적용.
//주인공 키보드로 조종하기, 점프하기. 애니메이션 적용하기

using UnityEngine;
using System.Collections;

public class PlayerCtrl : MonoBehaviour {
     public float walkSpeed = 3.0f; //걷는 속도
     public float gravity = 20.0f; //중력 가속도
     public float jumpSpeed = 8.0f; //점프 초속
     private Vector3 velocity; //현재 속도

     Animator anim;
     CharacterController chaCont;

     void Awake(){
          anim = GetComponentInChildren ();
          chaCont = GetComponent ();
     }

     void Start () {
          anim.SetTrigger ("Idle");
     }
    
     void Update () {
          //바닥에 닿았을 경우 처리
          if(chaCont.isGrounded){
               //키 입력으로 속도 결정
               float horz = Input.GetAxis ("Horizontal");
               velocity = new Vector3(horz, 0, 0);
               velocity *= walkSpeed;
               if(Input.GetButtonDown("Jump")){ //점프 버튼 클릭시
                    //점프 시작, 세로방향으로 초속을 주어 점프 재생
                    velocity.y = jumpSpeed;
                    anim.SetTrigger ("Jump");
               }else if(velocity.magnitude > 0.5){
                    //보행 애니로 전환하며 진행방향 선회
                    anim.SetTrigger ("Walk");
                    //transform.LookAt(transform.position + velocity);
               }else{
                    anim.SetTrigger ("Idle");
               }
          }
          //중력에 의한 아래 방향 가속
          velocity.y -= gravity * Time.deltaTime;
          //캐릭터 컨트롤러 이동
          chaCont.Move(velocity * Time.deltaTime);
     }
}

FollowCamera.cs=========================================
//hierarchy-Main Camera에 적용.
//주인공을 따라 다니는 카메라 이동, 회전 처리.
//변수 lookTarget: Player 적용.

using UnityEngine;
using System.Collections;

public class FollowCamera : MonoBehaviour {
     public float distance = 5.0f; //타겟 과의 거리
     public float horizontalAngle = 0.0f;
     public float verticalAngle = 10.0f;
     public Transform lookTarget; //쫓아갈 타겟
     public Vector3 offset = Vector3.zero;
    
     void Start(){ }
     void Update(){
          //카메라의 위치 갱신
          if (lookTarget != null) {
               Vector3 lookPosition = lookTarget.position + offset;
               //주시 대상에서 상대위치 구하기
               Vector3 relativePos = 
		  Quaternion.Euler(verticalAngle, horizontalAngle, 0) *
                    new Vector3(0, 0, -distance);
               //주시 대상의 위치에 오프셋을 더한 위치로 이동시키기
               transform.position = lookPosition + relativePos;
               //주시 대상을 주시하게 하기
               transform.LookAt (lookPosition);
          }
     }
}