Exemplo n.º 1
0
    public static BallDropExperiment StartBallDropExperiment(GameObject obj)
    {
        Transform objTrans = obj.transform;

        GameObject dropObj = createDropObject(objTrans.position);

        var hips = GameObject.Find("EthanSkeleton/EthanHips");
        var head = GameObject.Find("EthanSkeleton/EthanHips/EthanSpine/EthanSpine1/EthanSpine2/EthanNeck/EthanHead");
        BallDropExperiment bs = new BallDropExperiment(hips, head, obj, dropObj);

        var rb = dropObj.GetComponents <Rigidbody>();

        foreach (var rib in rb)
        {
            rib.useGravity = true;
        }
        return(bs);
    }
Exemplo n.º 2
0
    public static BallDropResults MeassureBallDropExperiment(BallDropExperiment exp)
    {
        Vector3    newBallPosition = exp.ball.transform.position;
        Quaternion newObjRotation  = exp.obj.transform.rotation;
        Vector3    newHeadPosition = exp.head.transform.position;

        Vector3    oldBallPosition = exp.ballPosition;
        Quaternion oldObjRotation  = exp.objRotation;

        //ball travel distanve --- we ignore changes in height
        float x  = oldBallPosition.x;
        float z  = oldBallPosition.z;
        float _x = newBallPosition.x;
        float _z = newBallPosition.z;
        float ballTravelDistance = Mathf.Sqrt(Mathf.Pow(x - _x, 2) + Mathf.Pow(z - _z, 2));

        float headHeightOverHips = newHeadPosition.y - newBallPosition.y;

        float ballHeight = newBallPosition.y;

        float objRotationDegrees = Quaternion.Angle(newObjRotation, oldObjRotation);

        return(new BallDropResults(ballTravelDistance, headHeightOverHips, objRotationDegrees, ballHeight));
    }