コード例 #1
0
 public void ActivateGrabbed()
 {
     Debug.Log("activated");
     if (grabbedGO != null)
     {
         ActivateableObject ao = grabbedGO.GetComponent <ActivateableObject>();
         if (ao != null)
         {
             ao.Activate();
         }
     }
 }
コード例 #2
0
    // grab the given object
    void Grabbed(GameObject grabbable, bool gStatic = false)
    {
        grabbed       = true;
        grabbedGO     = grabbable;
        grabbedStatic = gStatic;
        ApplySoap ap = grabbedGO.GetComponent <ApplySoap>();

        if (ap != null)
        {
            ap.grabbed = true;
        }
        // handRB.gameObject.SetActive(true);
        if (!grabbedStatic)
        {
            previousParent  = grabbedGO.transform.parent;
            storedLocal     = handRB.transform.localPosition;
            storedLayer     = grabbable.layer;
            storedLayerName = LayerMask.LayerToName(grabbable.layer);
            //  Debug.Log(storedLayerName);
            //handRB.transform.position = grabbedGO.transform.position;

            grabbable.layer = LayerMask.NameToLayer("Ignore Player");

            grabbedGO.GetComponent <Rigidbody2D>().velocity = new Vector2(0, 0);

            Joint2D[] connectedJoints = grabbedGO.GetComponentsInChildren <Joint2D>();
            foreach (Joint2D joint in connectedJoints)
            {
                connectedBodies.Add(joint.connectedBody);
                if (grabbedGO.tag != "GrabbableKeepRotation")
                {
                    joint.connectedBody.gameObject.layer = LayerMask.NameToLayer("Ignore Player");
                }
            }
            //Debug.Log("grabbed");
            if (grabbedGO.tag != "GrabbableKeepRotation")
            {
                rj = grabbedGO.AddComponent <RelativeJoint2D>();
                rj.connectedBody     = handRB;
                autoCorrectNextFrame = true;
                angleOffset          = -Extensions.Angle(-transform.up) - grabbedGO.transform.eulerAngles.z;
                rj.correctionScale   = 0.7f;
                grabbedGO.GetComponent <Rigidbody2D>().freezeRotation = true;
            }
            else
            {
                TargetJoint2D joint1 = grabbedGO.AddComponent <TargetJoint2D>();
                TargetJoint2D joint2 = handRB.gameObject.AddComponent <TargetJoint2D>();
                dtj          = new DoubleTargetJoint(joint1, joint2, handRB.transform.position);
                stillRotates = true;

                //TargetJoint2D tj = gr
            }
            changeInAngleTime = Time.time;
            previouseAngle    = grabbedGO.transform.eulerAngles.z;

            ActivateableObject ao = grabbedGO.GetComponent <ActivateableObject>();

            // rj.breakForce = 6000;
        }
        else
        {
            mover.GrabbedStatic(grabbedGO);
        }

        if (left)
        {
            handLimiter.leftGrabbed = grabbedGO.transform;
        }
        else
        {
            handLimiter.rightGrabbed = grabbedGO.transform;
        }

        hand.grabbing  = true;
        previouseAngle = grabbedGO.transform.eulerAngles.z;

        PointGiver pg = grabbedGO.GetComponent <PointGiver>();

        if (pg != null)
        {
            pg.Caught();
        }
    }