블랜더에서 Extrude, Edge Loop, Cut 활용해 모델링,
Smart UV로 언랩, 텍스처 페인트로 채색.
Rigify로 리깅.
Idle, Run, Die 애니메이션 만들기.
FBX로 유니티로 불러들여 애니메이션을 준 모습.
블랜더에서 Cube로 시작,
Extrude, Edge Loop, Cut 활용, 간단 로봇 모델링.
Smart UV로 언랩, 텍스처 페인트로 채색 작업,
Rigify 적용, 세팅 완료.
Idle, Run, Die 애니메이션 대충 잡아주고 FBX로 익스포트. 문제없이
됐는데 용량이 6.16M나 된다.
FBX를 유니티에 불러들여 Animator Controller에 Idle, Run, Die 상태 세팅하고 Rigidbody,
Capsule Collide, PlayerCtrl.cs 코드 추가하여 움직이게 하기.
애니메이션이 한번만 실행되고 마는 버그가 생겼는데 애니메이션 파일들을 선택하고 Loop
Time 체크해준 뒤 Apply하니 해결됐다.
블렌더에서 심플로봇 웨이트 페인팅 다시하여 엉덩이 부분이 다리를 따라가거나 어깨 부분이 팔에 끌려가지 않게 처리하고
다시 유니티로 불러들여 적용.
18/1/7 일
|
PlayerCtrl.cs=========================================
using UnityEngine;
using System.Collections;
public class PlayerCtrl : MonoBehaviour {
Animator anim;
public float spd = 2f;
public float rotSpd = 15f;
Rigidbody rBody;
float h, v;
Vector3 moves;
void Start(){
rBody = GetComponent ();
anim = GetComponent ();
}
void Update(){
Rot ();
Ani ();
h = Input.GetAxisRaw ("Horizontal");
v = Input.GetAxisRaw ("Vertical");
Move (h, v);
}
void Move(float h, float v){
moves.Set (h, 0, v);
moves = (moves.normalized * spd * Time.deltaTime);
rBody.MovePosition (transform.position + moves);
}
void Rot(){
if(h == 0 && v == 0) return;
Quaternion rotN = Quaternion.LookRotation (moves);
rBody.rotation = Quaternion.Slerp (rBody.rotation,
rotN, rotSpd * Time.deltaTime);
}
void Ani(){
if(h == 0 && v == 0){
anim.SetBool ("Run", false);
}else{
anim.SetBool ("Run", true);
}
}
} |
|