topical media & game development

talk show tell print

lib-unity-future-HouseOfTheFuture-Assets-Scripts-PushRigidbodies.js / js



  // Script added to a player for it to be able to push rigidbodies around.
  #pragma strict
  
  // How hard the player can push
  var pushPower = 0.5;
  
  // Which layers the player can push
  // This is useful to make unpushable rigidbodies
  var pushLayers : LayerMask = -1;
  
  // pointer to the player so we can get values from it quickly
  private var controller : CharacterController;
  
  function Start () {
          controller = GetComponent (CharacterController);
  
  }
  
  function OnControllerColliderHit (hit : ControllerColliderHit) {
          var body : Rigidbody = hit.collider.attachedRigidbody;
          // no rigidbody
          if (body == null || body.isKinematic)
                  return;
  
          // Only push rigidbodies in the right layers
          var bodyLayerMask = 1 << body.gameObject.layer;
          if ((bodyLayerMask & pushLayers.value) == 0)
                  return;
                  
          // We dont want to push objects below us
          if (hit.moveDirection.y < -0.3) 
                  return;
          
          // Calculate push direction from move direction, we only push objects to the sides
          // never up and down
          var pushDir = Vector3 (hit.moveDirection.x, 0, hit.moveDirection.z);
          
          body.velocity = pushDir * pushPower ;
  }
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.