- Home /
Restricting movement on an axis from physics
I want enemies and objects to not move on the y-axis on account of physics, but I want to still be able to move them at will, such as in their update method. So I may want an enemy to move up and down on the y axis, but if the player bumps into him I don't want the enemy to go flying off into space because of a y axis offset. A configurable joint is amazing, but does not work to my knowledge, as I can't move the object at all.
I was thinking maybe something with Math.clamp, but I'm not sure if that's the best solution.
it would be great if you can edit in and example of your clamp theory.
Well, now that I think about it, that wouldn't work. At certain points I may want the player to "descend" through the level on the y axis, in a on-rails type of way. Clamping movement wouldn't work, as that would limit the amount the player could move.
So basically, I want objects to be able to move freely on the y axis, but not move at ALL on that axis in terms of physics or collisions.
Answer by jonas-echterhoff · Feb 10, 2010 at 10:29 AM
You could Make a script which clamps the character to a certain position on the y-Axis. Then, when you actually want to move the character on that axis, do that via the script. Like this:
var yPos = 0.0;
function FixedUpdate () {
transform.position.y = yPos;
}
function Move (var newPos: Vector3) {
transform.position = newPos;
yPos = newPos.y;
}
Your answer
Follow this Question
Related Questions
How to program gravity for planets? 3 Answers
Got unwanted motion blur on fast moving object (Only iOS) 0 Answers
How to archive anti-gravity controlls for a racer? 0 Answers
RigidBody immediately stops after AddForce 1 Answer
How can I make a physics object jump a given height on collision regardless of current velocity? 1 Answer