유니티에서 점화로 Vtuber를 만들어 봤어요.

11928 단어 Unity2DUnity
유튜브에서 볼 수 없으니까 이게 좋아요pic.twitter.com/qDTICPuzNl - 플라그 씨 (@pixelflag)2019년 2월 16일

애완동물 같은 캐릭터 컨트롤 이야기입니다.간단하니까 정리하고 싶어요.

도구는 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>

좋은 웹페이지 즐겨찾기