- Home /
Player push object with different pushPower
I have a FirstPersonController, a ,,wooden box" and a ,,heavy iron box" in the scene. Boxes have box collider and rigidbody too. Player can push this boxes. I use this script in the FirstPersonController:
// this script pushes all rigidbodies that the character touches
var pushPower = 1.5;
function OnControllerColliderHit (hit : ControllerColliderHit)
// this script pushes all rigidbodies that the character touches
var pushPower = 1.5;
function OnControllerColliderHit (hit : ControllerColliderHit)
{
var body : Rigidbody = hit.collider.attachedRigidbody;
// no rigidbody
if (body == null || body.isKinematic) { 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);
// If you know how fast your character is trying to move,
// then you can also multiply the push velocity by that.
// Apply the push
body.velocity = pushDir * pushPower;
}
But how can I do this: the player push the wooden box with pushPower: 2, and the heavy iron box with pushPower 0.5 ?
You could have 2 variables, woodPushPower, ironPushPower, and you add tags for the boxes.When you collide with something, check for the tag of the gameObject you just collided with and respond with the appropriate push power.Or you could have a default push power and subtract from it the mass of the rigidbody.
Answer by DESTRUKTORR · Aug 14, 2012 at 02:19 PM
You don't want to change the player's push-power. You want to change the mass on the rigidbodies. Push-power is a force exerted on the object, based on its mass. Trust me, doing that, rather than dynamically changing the push-power based on the player's position will save you a lot of time, debugging, unfixable glitches, and stress.
Just change the mass on the iron boxes' rigidbody to 5, for example, then set it to a prefab (if you plan to use it repeatedly).
[Edit] Also: When you paste code, highlight all of it, then press the code button, rather than pressing the code button first. It's a bit finicky, and so if you press enter too many times, it cuts off the code block pretty easily. I can't tell you how many people have one whole class pasted that is split up into sections of code and regular text...
Answer by gordeszkakerek · Aug 15, 2012 at 05:56 PM
Thanks for the answers, you too Destrukorr, I was happy that your idea is easier, but if I do this, then my ironbox begin move slower, but after that moving same speed with the wooden box. I dont understand Dark0's idea, because I'm yet beginner in scriptwriteing :/,
Your answer
Follow this Question
Related Questions
Detecting when Player stoped to push a rigidbody? 3 Answers
Box collider acting weird. 0 Answers
2D box colliders gap 0 Answers
Internal collisions 1 Answer
Have script detect which collider 2 Answers