유니티에서 점화로 Vtuber를 만들어 봤어요.
애완동물 같은 캐릭터 컨트롤 이야기입니다.간단하니까 정리하고 싶어요.
도구는 Unity 2017.3을 사용합니다.
점화를 사용했지만 일반적인 2D 삽화도 마찬가지다p>
점화의 초기 설정은 여기를 참조하십시오.
https://qiita.com/pixelflag/items/ad817bdd64931e084a46
유니티에서는 이런 구성이에요.p>
분해하면 이런 느낌이에요.br/>
각 루트는 좌표 제어에 사용되는 빈 gameObject입니다.다른 것은 SpriteRender만 있는 간단한 GameObject입니다.
얼굴 부품은 3개의 부품으로 구성되어 있지만 사용에 큰 차이가 없기 때문에 설명을 생략한다p>
요점은 팔 부품의 운동 제어다.이것 뿐이다p>
손의 뿌리는 고정된 위치에 놓고 Hand는 반지름 범위 내에서만 이동합니다.
무엇이든 입력할 수 있습니다. 이번에는 PS4의 컨트롤러를 사용했습니다.아날로그 입력이 재미있는 동작입니다.
컨트롤러의 아날로그 막대는 각각 x, y, -1.0~1.0의 수치를 되돌려주고 이를 축소한 후 Hand의 좌표에 반영하기만 하면 된다.이때 루트의 하위 계층 구조에 Hand를 배치하여 0 위치를 정의합니다.
만약 한 손일 뿐이라면 마우스 좌표로 방법을 생각해도 된다p>
컨트롤러의 사용은 프로젝트 설정 >초기 input 설정이 필요하므로 수중의 장치에 따라 따로 설정하십시오p>
코드는 이런 느낌입니다.
글은 많지만 하는 일은 간단하다.(모두 게임오브젝트.transform.position 때문이다.)p>
// 右手
Vector3 right = new Vector3(Input.GetAxis("PsRStickX"), -Input.GetAxis("PsRStickY"), 0);
RHand.transform.localPosition = right * handDistance;
Vector3 rsp = RShoulder.transform.position;
Vector3 rhp = RHand.transform.position;
RWrist.transform.position = ((rhp - rsp) * wristPositionRate) + rsp;
// 左手
Vector3 left = new Vector3(Input.GetAxis("PsLStickX"), -Input.GetAxis("PsLStickY"), 0);
LHand.transform.localPosition = left * handDistance;
Vector3 lsp = LShoulder.transform.position;
Vector3 lhp = LHand.transform.position;
LWrist.transform.position = ((lhp - lsp) * wristPositionRate) + lsp;
// 顔
face.transform.localPosition = (right + left) * headPositionRate;
headPhone.transform.localPosition = (right + left) * headPositionRate;
head.transform.localPosition = (right + left) * headPositionRate;
// 体
body.transform.localPosition = (right + left) * bodyPositionRate;
컨트롤러의 입력은 각각 오른손과 왼손에 아날로그 막대의 입력을 할당합니다.
기타 부품은 오른손과 왼손의 위치에 따라 계산된다p>
손목은 어깨와 손 좌표 사이에 있습니다.
그런 다음 wristPositionRate에서 가운데 어느 쪽에 배치할 위치를 정의합니다.이번에 Hand 가까이에 90% 정도 배치를 했습니다.p>
얼굴에는 세 개의 부품이 있지만 좌표는 모두 같다.몸 앞에 표시되는 것과 뒤에 표시되는 설정 사이에 차이가 있습니다.
오른손과 왼손의 운동 차이는 HeadPositionRate 배율의 영향을 받습니다.이번에는 1.0f입니다.(조정 후 영향 없음)
몸통도 얼굴과 마찬가지로 손의 운동의 영향을 받아 body Position Rate의 비율에 영향을 받는다.이번에는 0.5.반.동작이 얼굴보다 작다p>
이렇게 손을 대면 온몸에 미묘한 동작이 생겨 애완동물 같은 동작이 된다p>
얼굴 표정과 손 모양 전환은 간단하게 SpriteRender의 Sprite를 교체하면 됩니다.p>
// □
if (Input.GetButtonDown("PsSquare"))
{
face.GetComponent<SpriteRenderer>().sprite = defaultFace;
}
// ×
if (Input.GetButtonDown("PsCross"))
{
face.GetComponent<SpriteRenderer>().sprite = smileFace;
}
// 〇
if (Input.GetButtonDown("PsCircle"))
{
face.GetComponent<SpriteRenderer>().sprite = downFace;
}
// △
if (Input.GetButtonDown("PsTriangle"))
{
if(isGrip)
{
RHand.GetComponent<SpriteRenderer>().sprite = parHand;
isGrip = false;
}
else
{
RHand.GetComponent<SpriteRenderer>().sprite = gripHand;
isGrip = true;
}
}
단지 컨트롤러의 입력을 받아 교체할 뿐이다p>
다음은 컨트롤러를 잡고 완성된 유니티를 촬영합니다.
그리고 애니메이션 편집 소프트웨어로 합성하면 끝이에요.p>
높은 기자재와 소프트웨어가 없어도 간단한 설치로 Vtuber의 표현을 표현할 수 있다.
여러분도 꼭 확장해서 놀아주세요.p>
Reference
이 문제에 관하여(유니티에서 점화로 Vtuber를 만들어 봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/pixelflag/items/d44feb87d4d5d695c864텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)