예제 #1
0
    /*/ Slider for exchange character.
     * public void LODControlSlider (Text label) {
     *      int aIdx = (int)ModelChangeSlider.value;
     *
     *      // change label.
     *      // string labelName = SetLabelName (aIdx);
     *      // label.text = "Model Change\n" + labelName;
     *      // StartCoroutine( ChangeLOD("Lady Santa " + labelName, aIdx) );
     * }*/

    // change character model.
    private IEnumerator ChangeLOD(string modelName, int selectedIdx)
    {
        int aIdx = activeLodIdx;

        activeLodIdx = selectedIdx;

        // play Idle 0.1 second before change character model.
        // It is prevent error of transform like weapon_point_hand
        // 0.1秒、IDLEを再生してからモデルを切り替える。.
        // 현재 표시 중인 모델에게 IDLE모션을 0.1초간 재생시킨 후 처리를 시작한다.
        chrCtrl.PlayClip(stateName[0], weaponPos[0]);
        yield return(new WaitForSeconds(0.1f));

        // chrCtrl.ChangeTexture(true);

        // disable all other character model.
        // 表示されるIdxではないキャラクターモデルは非表示にする。.
        // 표시되어야하는 Idx이외의 캐릭터 모델은 꺼준다.
        for (int i = 0; i < chrModel.Length; i++)
        {
            if (i != activeLodIdx)
            {
                chrModel[i].SetActive(false);
            }
        }

        // Active new chacter model and replace animator control script.
        // 次のキャラクターを表示し、アニメーター制御スクリプトを交換する。.
        // 현재 Idx의 캐릭터를 표시한 후 애니메이터 스크립트를 교환해준다.
        chrModel[activeLodIdx].SetActive(true);

        chrCtrl   = chrModel[activeLodIdx].GetComponent <SantaAnimatorControl>();
        chrModule = chrModel[activeLodIdx].GetComponent <ModuleSetupControl>();

        // to display same place.
        chrModel[activeLodIdx].transform.position = chrModel[aIdx].transform.position;
        chrModel[activeLodIdx].transform.rotation = chrModel[aIdx].transform.rotation;

        //update module
        chrModule.SetAllModule((int)moduleSlider [0].value, (int)moduleSlider [1].value, (int)moduleSlider [2].value, (int)moduleSlider [3].value);
        chrModule.SetAllColor((int)textureSlider [0].value, (int)textureSlider [1].value, (int)textureSlider [2].value, (int)textureSlider [3].value);
        chrModule.UpdateMeshData();
        chrCtrl.chrAnimator.Rebind();

        // play Idle.
        chrCtrl.PlayClip(stateName[0], weaponPos[0]);

        // set 3D model infomation newly.
        // meshInfoMsg = chrCtrl.MeshData();
        ModelInformationUI.GetComponentInChildren <Text>().text = modelName + "\n\n" + chrCtrl.MeshData();
        // replace target of camera.
        gameObject.GetComponent <CamControl>().target = chrModel[activeLodIdx].transform;
    }
예제 #2
0
    // Name of gameobject as number, play state of corresponding number.
    public void PlayClipBtn(GameObject self)
    {
        int idx = int.Parse(self.name);

        chrCtrl.PlayClip(stateName[idx], weaponPos[idx]);
    }