- 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