Search Unity

Modified Rigidbody throw causing errors

Discussion in 'Scripting' started by Warrior1424, Mar 29, 2013.

  1. Warrior1424

    Warrior1424

    Joined:
    Sep 30, 2010
    Posts:
    984
    I took this modified rigidbody throw script and modified it some more, and everytime I throw an object I get an error.

    Code:
    Code (csharp):
    1. var normalCollisionCount = 1;
    2. var spring = 50.0;
    3. var damper = 5.0;
    4. var drag = 10.0;
    5. var angularDrag = 5.0;
    6. var distance = 0.2;
    7. var throwForce = 500;
    8. var throwRange = 1000;
    9. var attachToCenterOfMass = false;
    10. var handgui : GameObject;
    11.  
    12. private var springJoint : SpringJoint;
    13.  
    14. function Update ()
    15. {
    16.     var mainCamera = FindCamera();
    17.         var hit : RaycastHit;
    18.  
    19.  
    20.     if (Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition),  hit, 3))
    21.     {
    22.         if (hit.rigidbody  !Input.GetMouseButton (0))
    23.         handgui.guiTexture.enabled = true;
    24.         else
    25.         handgui.guiTexture.enabled = false;
    26.     }
    27.     else
    28.     handgui.guiTexture.enabled = false;
    29.  
    30.  
    31.     // Make sure the user pressed the mouse down
    32.     if (!Input.GetMouseButtonDown (0))
    33.         return;
    34.  
    35.  
    36.  
    37.     // We need to actually hit an object
    38.  
    39.     if (!Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition),  hit, 3))
    40.         return;
    41.        
    42.     // We need to hit a rigidbody that is not kinematic
    43.     if (!hit.rigidbody || hit.rigidbody.isKinematic)
    44.         return;
    45.  
    46.     if (!springJoint)
    47.     {
    48.         var go = new GameObject("Rigidbody dragger");
    49.         var body : Rigidbody = go.AddComponent ("Rigidbody") as Rigidbody;
    50.         springJoint = go.AddComponent ("SpringJoint");
    51.         body.isKinematic = true;
    52.     }
    53.  
    54.     springJoint.transform.position = hit.point;
    55.     if (attachToCenterOfMass)
    56.     {
    57.         var anchor = transform.TransformDirection(hit.rigidbody.centerOfMass) + hit.rigidbody.transform.position;
    58.         anchor = springJoint.transform.InverseTransformPoint(anchor);
    59.         springJoint.anchor = anchor;
    60.     }
    61.     else
    62.     {
    63.         springJoint.anchor = Vector3.zero;
    64.     }
    65.  
    66.     springJoint.spring = spring;
    67.     springJoint.damper = damper;
    68.     springJoint.maxDistance = distance;
    69.     springJoint.connectedBody = hit.rigidbody;
    70.  
    71.        
    72.     StartCoroutine ("DragObject", hit.distance);
    73. }
    74.  
    75. function DragObject (distance : float)
    76. {
    77.        
    78.    
    79.     var oldDrag = springJoint.connectedBody.drag;
    80.     var oldAngularDrag = springJoint.connectedBody.angularDrag;
    81.     springJoint.connectedBody.drag = drag;
    82.     springJoint.connectedBody.angularDrag = angularDrag;
    83.     var mainCamera = FindCamera();
    84.     while (Input.GetMouseButton (0))
    85.     {
    86.         var ray = mainCamera.ScreenPointToRay (Input.mousePosition);
    87.         springJoint.transform.position = ray.GetPoint(distance);
    88.         yield;
    89.  
    90.         if (Input.GetMouseButton (1)){
    91.             springJoint.connectedBody.AddExplosionForce(throwForce,mainCamera.transform.position,throwRange);
    92.             springJoint.connectedBody.drag = oldDrag;
    93.             springJoint.connectedBody.angularDrag = oldAngularDrag;
    94.             springJoint.connectedBody = null;
    95.         }
    96.     }
    97.     if (springJoint.connectedBody)
    98.     {
    99.         springJoint.connectedBody.drag = oldDrag;
    100.         springJoint.connectedBody.angularDrag = oldAngularDrag;
    101.         springJoint.connectedBody = null;
    102.     }
    103.    
    104.    
    105. }
    106.  
    107. function FindCamera ()
    108. {
    109.     if (camera)
    110.         return camera;
    111.     else
    112.         return Camera.main;
    113. }
    Error:
    Any help would be greatly appreciated,
     
  2. mgear

    mgear

    Joined:
    Aug 3, 2010
    Posts:
    9,411
    Something is null..
    Try finding it with Debug.Log (add before the line 91)

    for example,
    Code (csharp):
    1. Debug.Log(springJoint.name);
    2. Debug.Log(mainCamera.transform.position);