Detecting when Player stoped to push a rigidbody?

hi, i have a player with CharacterContoller and i have some box on the Scene that i need to push them, when my player are pushing the box; play the push animation, when stop to push the box, play walk animation.

// this script pushes all rigidbodies that the character touches

var BlockRigidBody : Rigidbody;
var pushPower = 1;

function OnControllerColliderHit(hit : ControllerColliderHit)
BlockRigidBody = hit.collider.attachedRigidbody;

if (BlockRigidBody == null || BlockRigidBody.isKinematic) { return; }

var pushDir = Vector3 (0, 0, hit.moveDirection.z);
BlockRigidBody.velocity = pushDir * pushPower;


function OnCollisionExit(collisionInfo : Collision) 
    BlockRigidBody = null;

This will not work: OnCollisionExit isn’t sent to the CharacterController. I would try another approach: each time you push a rigidbody in OnControllerColliderHit, reload a timer; when the timer reaches zero, return to the walk animation:

var pushPower = 1;
var tTimer: float = 0.2; // ,
private var timer: float = 0;

function OnControllerColliderHit(hit : ControllerColliderHit){
  var rBody = hit.collider.attachedRigidbody;
  if (rBody && !rBody.isKinematic){ // if pushing a rigidbody...
    timer = tTimer; // reload timer
    var pushDir = Vector3 (0, 0, hit.moveDirection.z);
    rBody.velocity = pushDir * pushPower;
    animation.CrossFade("push"); // switch to "push" animation

function Update(){
  // consume timer in Update...
  timer -= Time.deltaTime;
  if (timer < 0){ // when timer zeroed, return to walk

hello I’m interested in something like this

but i’m not sure if I due open another questions

I wish the player is able to push the movable thing when hit “action” key for a unity (one face of a standard cube)
then stop

and better if in different time in accordin with his weigth
if is light it’s easy to push and take minor time
(i.e.) if is a crate of beer or a car

more better, if is beer can lift and transport for during “action” is hold

is ask too much? .
:slight_smile: :-):slight_smile: :-):slight_smile: :-):slight_smile: :slight_smile:

I’ll try it, While i’m pushing; add a time and updates sub a time, when not pushing the time will be < 0, thanks