How do I set Transform.rotate to an absolute value?
I'm making game that involves a boat, and I'm running into a problem with rotating the boat. When the arrow keys are pressed, I want the boat to turn in that direction to that specific rotation to a definite value, or even better slowly turn to that definite point, and not add to the current rotation. The relevant code that I am currently using is below:
public float speed;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
//Gets standard WASD and arrow input from player to control the boat
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
//Moves boat along x-z plane based on user input
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rb.AddForce(movement * speed);
//Rotates the ship based on whether Z or V is being pressed
if (Input.GetKeyDown(KeyCode.V))
{
transform.Rotate(0, 90, 0);
}
if (Input.GetKeyDown(KeyCode.Z))
{
transform.Rotate(0, -90, 0);
}
}
I have also tried:
GetComponent<Rigidbody>().rotation = Quaternion.Euler(0.0f, GetComponent<Rigidbody>().velocity.x * -tilt, 0.0f);
and:
GetComponent<Rigidbody>().rotation.y = 90; (Which ran an error).
As of yet I have not found an answer, and whatever I try does not seem to be working. So my question is: what will?
Answer by Vice_Versa · Jan 16, 2016 at 03:10 AM
to answer the Question of absolute values, use Mathf.abs() function. Now for what youre trying to do, Transform.rotate doesnt work that way. try transform.Rotate(Vector3.up Time.deltaTime speed); where speed will be a variable that you set. if youre trying to set the value to exactly 90, then you would do transform.rotation = Quaternion.Euler(new Vector3(0,90,0));
Your answer
Follow this Question
Related Questions
How to make a 2D sprite rotate towards a specific point while facing perpendicular to the camera ? 1 Answer
quaternion eular degrees 0 Answers
Rotate gameObject to a specific angle on one axis 0 Answers
Why Quaternion.Euler can't rotate 360 Degrees 0 Answers
[VR] Rigidbody.AddForce() following controllers rotation 0 Answers