Exemple #1
0
        // Start is called before the first frame update
        void Awake()
        {
            // 床にこのスクリプトをアタッチしているものとする
            floorTransform = transform;

            if (robotRoot)
            {
                PreMaidIKController ikController = robotRoot.GetComponent <PreMaidIKController>();

                if (ikController)
                {
                    ModelJoint[] joints = robotRoot.GetComponentsInChildren <ModelJoint>();

                    Transform leftFoot  = null;
                    Transform rightFoot = null;

                    foreach (var joint in joints)
                    {
                        if (joint.ServoID.Equals("1C"))
                        {
                            // 左足関節が見つかった
                            leftFoot = joint.transform;
                        }
                        else if (joint.ServoID.Equals("1A"))
                        {
                            rightFoot = joint.transform;
                        }
                    }


                    if (leftFoot)
                    {
                        var pos = leftFoot.position;
                        pos.y = floorTransform.position.y;

                        var obj = new GameObject("LeftFootTarget");
                        obj.transform.position = pos;
                        //obj.transform.rotation = leftFootEnd.rotation;
                        obj.transform.rotation = robotRoot.rotation;
                        obj.transform.parent   = floorTransform;

                        ikController.leftFootTarget = obj.transform;
                    }

                    if (rightFoot)
                    {
                        var pos = rightFoot.position;
                        pos.y = floorTransform.position.y;

                        var obj = new GameObject("RightFootTarget");
                        obj.transform.position = pos;
                        //obj.transform.rotation = rightFootEnd.rotation;
                        obj.transform.rotation = robotRoot.rotation;
                        obj.transform.parent   = floorTransform;

                        ikController.rightFootTarget = obj.transform;
                    }
                }
            }
        }
Exemple #2
0
    // Start is called before the first frame update
    void Start()
    {
        if (!ikController)
        {
            ikController = GetComponent <PreMaidIKController>();
        }
        if (!previewModel)
        {
            previewModel = ikController.transform;
        }

        if (calibrationText)
        {
            calibrationText.gameObject.SetActive(false);
        }

        originalHeadPosition      = ikController.headTransform.position;
        originalRightHandPosition = ikController.rightHandTransform.position;
        originalLeftHandPosition  = ikController.leftHandTransform.position;

        if (previewModel)
        {
            originalModelPosition = previewModel.position;
            originalModelRotation = previewModel.rotation;
        }

        //Debug.Log(originalHeadPosition + " / " + originalRightHandPosition + " / " + originalLeftHandPosition);

        Vector3 lossyScale = ikController.transform.lossyScale;
        Vector3 vec        = ikController.transform.position - ikController.headTransform.position;

        headToRoot = new Vector3(vec.x / lossyScale.x, vec.y / lossyScale.y, vec.z / lossyScale.z);
    }