topical media & game development
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.