Cant parent the standard FPSController during gameplay
I'm parenting the standard assets FPS controller during play with a simple script. The controller get's parented but also instantly inherits the rotation of the parent. This doesn't happen in Editor mode. This incorrect behavior happens regardless if I move the player with a script or by parenting him with my mouse cursor.
I suspect the error comes from the way the character controller script is set up.
In the FPS controller script the player rotates via mouse movement in the Update function in the following way:
private void Update()
{
RotateView();
}
private void RotateView()
{
m_MouseLook.LookRotation (transform, m_Camera.transform);
}
m_MouseLook get's its rotation from m_Camera.transform. It in turn uses transform.localPosition.
I think it's the use of localposition that causes the strange behavior.
How do I fix it?
I added the script that I used to re-parent the fps controller below:
public Transform ParentTarget;
public GameObject player;
void OnTriggerEnter(Collider other)
{
player.transform.SetParent(ParentTarget, true);
}
void OnTriggerExit(Collider other)
{
player.transform.parent = null;
}
As I said the script is fairly simple and the same error happens when I re-parent the controller by dragging it with my mouse during play.
If I set worldPositionStays to false then the player is offset and doesn't inherit the parent rotations at all. This isn't what I want.
The desired behavior is to keep the player rotation, and then change it as the parent is rotating after the re-parenting event. This is what would happen if I re-parented any ordinary GameObject.
It is the character controller mouse look part that is most likely causing all the trouble.
Your answer
Follow this Question
Related Questions
Parenting a GameObject with script not working (C#) 0 Answers
Tilt character with acceleration 1 Answer
I want to add some Velocity controll to my CharacterController 1 Answer
How to control a plant or vine? 0 Answers
BoatRiderController? 1 Answer