Automatically flip a player game object upright on z axis?
So I've been working on a flight sim using arcade physics. I'd like to have the player roll on the z-axis back to 0 if the player flips upside down.
The ship currently stays upright when it turns using yaw controls (x-axis), but when it flips upside down using pitch controls (y-axis) it stays upside down. I can detect when the player is upside down, but I'm having trouble figuring out how to correct this.
I've looked all over the unity community, and tried several different approaches, but I can seem to get this working right. Anyone have any suggestions?
public class PlayerCon : MonoBehaviour {
private Rigidbody rb;
private float speed = 15.0f;
public float tilt = 10.0f;
private float moveHorizontal = 0.0f;
private float moveVertical = 0.0f;
private float tiltHorizontal;
private bool upSideDown = false;
void Start(){
rb = GetComponent<Rigidbody>();
}
void FixedUpdate(){
moveHorizontal = Input.GetAxis ("Horizontal") + moveHorizontal;
tiltHorizontal = Input.GetAxis ("Horizontal");
moveVertical = Input.GetAxis ("Vertical") + moveVertical;
rb.transform.position += transform.forward*speed*Time.deltaTime;
//player can rotate from side to side, up and down, and tilts a little when using yaw contols
rb.rotation = Quaternion.Euler (moveVertical, moveHorizontal, tiltHorizontal * -tilt);
if (Vector3.Dot (transform.up, Vector3.down) > 0) {
Debug.Log ("upside down"); //what can i do here?
} else {
Debug.Log ("right side up");
}
}
}
Answer by Some-Yahoo · Jan 03, 2018 at 03:35 AM
I know this has been a long time coming, but I did this...
//roll upright
if (AutoRoll)
{
Vector3 unitRight = transform.position + transform.right;
Roll(-unitRight.y + transform.position.y);
}
... and the Roll Function...
private void Roll(float Amount)
{
rigidBody.AddRelativeTorque(0f, 0f, Amount);
}
Your answer
Follow this Question
Related Questions
Movement/Rotation Methods Don't Work Together 0 Answers
Unable to get world position of object after rotation 0 Answers
Aspect ratio boxes floor 0 Answers
Rotating and Positioning Gameobjects 0 Answers