Hello everyone i would like to modify Unitys PlatformerPushBodies script so that an object can not be pushed on its Z-axis.
This is Unitys Script and i want to change it so when i push the object it only goes left/right and up/down. Not turn and go off the sides because im working on a 2.5d Side Scroller. Thank You
// Script added to a player for it to be able to push rigidbodies around.
// 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 : PlatformerController;
function Start () {
controller = GetComponent (PlatformerController);
}
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, 0);
// push with move speed but never more than walkspeed
body.velocity = pushDir * pushPower * Mathf.Min (controller.GetSpeed (), controller.movement.walkSpeed);
}
Thank You ps. I am very new to scripting, ive been trying to script for only 2 weeks so this was sort of a complicated script for me.