Exemple #1
0
    //static float xyz[3] = { 1.7772, -0.7924, 2.7600 };
    //static float hpr[3] = { 90.0000, -54.0000, 0.0000 };
    //Vector3 xyz = new Vector3(1.7772f, 2.7600f, -0.7924f);
    //Vector3 hpr = new Vector3(54f, 0f, 0f);

    void Awake()
    {
        TFEngine.Instance.Gravity = new Vector3(0f, -GRAVITY, 0f);

        for (int i = 0; i < N1; i++)
        {
            for (int j = 0; j < N2; j++)
            {
                body[i, j]      = GameObject.Instantiate(cubePrefab);
                body[i, j].name = string.Format("body {0},{1}", i, j);
                body[i, j].GetComponent <TFRigidbody>().autoDisable.enabled = false;
                TFMassBehaviour massBehaviour = body[i, j].GetComponent <TFMassBehaviour>();
                massBehaviour.value             = MASS * (j + 1);
                massBehaviour.computeMode       = TFMassBehaviour.ComputeMode.ValueIsFinalMass;
                body[i, j].transform.localScale = new Vector3(LENGTH, HEIGHT, LENGTH);
                body[i, j].transform.position   = new Vector3(i * 2f * LENGTH, HEIGHT * 0.5f, j * 2 * LENGTH);
                body[i, j].transform.parent     = transform;
            }
        }
    }
        public override void InitAfterResetScales()
        {
            base.InitAfterResetScales();

            BoxCollider boxCollider = gameObject.GetComponent <BoxCollider>();

            if (boxCollider != null)
            {
                float diameter = boxCollider.size.x;
                this.radius = diameter * 0.5f;
                this.length = boxCollider.size.z - diameter;
            }

            TFMassBehaviour massBehaviour = gameObject.GetComponent <TFMassBehaviour>();

            if (massBehaviour != null)
            {
                switch (massBehaviour.computeMode)
                {
                case TFMassBehaviour.ComputeMode.ValueIsDensity:
                    massBehaviour.mass.SetCapsule(massBehaviour.value, 2, this.radius, this.length);
                    break;

                case TFMassBehaviour.ComputeMode.ValueIsFinalMass:
                    massBehaviour.mass.SetCapsuleTotal(massBehaviour.value, 2, this.radius, this.length);
                    break;
                }
            }

            if (skinnedMeshRenderer != null)
            {
                float diameter = radius * 2f;
                skinnedMeshRenderer.transform.localScale = new Vector3(diameter, diameter, diameter);
                skinnedMeshRenderer.SetBlendShapeWeight(0, length / (diameter * 2f));
                skinnedMeshRenderer.SetBlendShapeWeight(1, length / (diameter * 2f));
            }
        }