コード例 #1
0
ファイル: FBIKChain.cs プロジェクト: pandey623/UNETGame
        /*
         * Initiating the chain.
         * */
        public void Initiate(IKSolver solver, FBIKChain[] chain)
        {
            initiated = false;

            foreach (IKSolver.Node node in nodes)
            {
                node.solverPosition = node.transform.position;
            }

            // Calculating bone lengths
            CalculateBoneLengths(chain);

            // Initiating child constraints
            foreach (ChildConstraint c in childConstraints)
            {
                c.Initiate(solver as IKSolverFullBody);
            }

            // Initiating the bend constraint
            if (nodes.Length == 3)
            {
                bendConstraint.SetBones(nodes[0].transform, nodes[1].transform, nodes[2].transform);
                bendConstraint.Initiate(solver as IKSolverFullBody);
            }

            crossFades = new float[children.Length];

            initiated = true;
        }
コード例 #2
0
ファイル: FBIKChain.cs プロジェクト: WangASong-1/aSong_ChiJi
        /*
         * Initiating the chain.
         * */
        public void Initiate(IKSolverFullBody solver)
        {
            initiated = false;

            foreach (IKSolver.Node node in nodes)
            {
                node.solverPosition = node.transform.position;
            }

            // Calculating bone lengths
            CalculateBoneLengths(solver);

            // Initiating child constraints
            foreach (ChildConstraint c in childConstraints)
            {
                c.Initiate(solver as IKSolverFullBody);
            }

            // Initiating the bend constraint
            if (nodes.Length == 3)
            {
                bendConstraint.SetBones(nodes[0].transform, nodes[1].transform, nodes[2].transform);
                bendConstraint.Initiate(solver as IKSolverFullBody);
            }

            crossFades = new float[children.Length];

            initiated = true;

            Debug.Log("Chain's names ");
            for (int i = 0; i < nodes.Length; i++)
            {
                Debug.Log("Chain's node = " + nodes[i].transform.name);
            }
        }
コード例 #3
0
        /*
         * Initiating the chain.
         * */
        public void Initiate(IKSolver solver, FBIKChain[] chain)
        {
            initiated = false;

            foreach (IKSolver.Node node in nodes)
            {
                node.solverPosition = node.transform.position;
            }

            // Calculating bone lengths
            length = 0f;

            for (int i = 0; i < nodes.Length - 1; i++)
            {
                nodes[i].length = Vector3.Distance(nodes[i].transform.position, nodes[i + 1].transform.position);
                length         += nodes[i].length;
                if (nodes[i].length == 0)
                {
                    return;
                }
            }

            for (int i = 0; i < children.Length; i++)
            {
                chain[children[i]].rootLength = (chain[children[i]].nodes[0].transform.position - nodes[nodes.Length - 1].transform.position).magnitude;
                if (chain[children[i]].rootLength == 0f)
                {
                    return;
                }
            }

            // Initiating child constraints
            foreach (ChildConstraint c in childConstraints)
            {
                c.Initiate(solver as IKSolverFullBody);
            }

            // Initiating the bend constraint
            if (nodes.Length == 3)
            {
                bendConstraint.SetBones(nodes[0].transform, nodes[1].transform, nodes[2].transform);
                bendConstraint.Initiate(solver as IKSolverFullBody);
            }

            crossFades = new float[children.Length];

            initiated = true;
        }