- Home /
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. Thanks...
 // 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;
 
    // SET TO PUSH ANIMATION;
 }
 
 
 function OnCollisionExit(collisionInfo : Collision) 
 {
     BlockRigidBody = null;
     
     //SET TO WALK ANIMATION
 }
Answer by aldonaletto · Jul 08, 2012 at 03:45 AM
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 animation.CrossFade("walk"); } }
Answer by Ingen · Jul 08, 2012 at 04:02 PM
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? . :-) :-):-) :-):-) :-):-) :-)
Answer by leandropim · Jul 08, 2012 at 09:33 PM
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
Your answer
 
 
             Follow this Question
Related Questions
Is Triggered Collider Issue 1 Answer
Rigid bodies not to push each other? 4 Answers
Making Colliders/Triggers or Rigidbodies move a Character Controller 5 Answers
How can I push my player with a rotating object. 0 Answers
Parent Object 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                