- Home /
Rigidbody +parenting +rotation +elevator = Player unwanted behavior(pushed away)
Hey Dev´s
I have problems with an elevator script or better with the "OnCollisionExit" function in it. Basically I parent the Player to the elevator with "OnCollisionEnter" and if the user makes an Input I unparent it and do a rotation, and this works so far.
But when I try to unparent with the "OnCollisionExit" the Player is pushed through the scene. I can reproduce this in OnCollisionEnter when activating "playerTransform.parent = null" at the end!
The problem is I need "OnCollisionExit" if the player is not longer on the elevator.
Any Ideas?
//Elevator Script
//
/////////////////////////
// Move the Elevator
//Start Point
var targetA : GameObject;
//Finish Point
var targetB : GameObject;
//Speed
var speed : float = 0.1;
//////////////////////////
//
//
//Code for moving the Elevator
function FixedUpdate ()
{
var weight = Mathf.Cos(Time.time * speed * 2 * Mathf.PI) * 0.5 + 0.5;
transform.position = targetA.transform.position * weight
+ targetB.transform.position * (1-weight);
}
//
// If player enters the Elevator...
function OnCollisionEnter(other : Collision)
{
//
FPSWalker.grounded = true; //This is not the standard FPSWalker Script,
//just the same name
var playerTransform = other.transform;
//Parent the player to the Elevator
playerTransform.parent = transform;
//
//If User do this input unparent from Elevator
if(Input.GetButtonDown("Rotate1"))
{
playerTransform.parent = null;
}
//
//If User do this input unparent from Elevator
if(Input.GetButtonDown("Rotate2"))
{
playerTransform.parent = null;
}
//
//
//playerTransform.parent = null; //(1)if this is active, same error like the one in OnCollisionExit
}
///////////////////////////////////////////////////////
//if OnCollision is active player is pushed around the scene
/*
function OnCollisionExit(other : Collision)
{
var playerTransform = other.transform;
playerTransform.parent = transform;
playerTransform.parent = null;
//Here no difference if FPSWalker.grounded = true or false
//FPSWalker.grounded = false;
}
*/
////////////////////////////////////////////////////
Answer by MathewRyanWandell · Jul 02, 2020 at 03:59 PM
For the love of god I wish Unity developers would deleat all these out dated ass javascript answers, I mean come onI'm already having a rough time concentrating on c#, hell unity doesn't even have javascript in their new editors so what the f bleeping bleep gives already
Your answer
Follow this Question
Related Questions
Rigidbody Rotates When Getting a Child 0 Answers
Child affecting parent rigidbody? 1 Answer
Rigidbody constraints not working with parent/child relationship 2 Answers
Engine weight Simulation 2 Answers