- Home /
i would like to rotate an object from an other objects script
hey, Im trying to make a flight game that includes a verticcal takeoff and landing plane, for grafic and utility purpose i would like to have an engine rotate, the engine being a child of the plane, from the code of the plane it selffor some akward reason, the cube seems to rotate x, y, and z axis at the same time when i only need x, and extreemly fast. here is the code im using.
#pragma strict
var Speed = 0;
var Torque = 10;
var Gravity = 100.0;
var Acceleration = 2;
var maxSpeed = 0;
var minSpeed = 0;
private var SavedGravity = 0;
var engin : Transform;
var engineOrient = 0.0;
var engineRotSpeed = 10.0;
SavedGravity = Gravity;
function Start () {
}
function Update () {
if (Speed >= maxSpeed)Speed = maxSpeed;
if (Speed <= minSpeed)Speed = minSpeed;
if (Input.GetKey(KeyCode.W))Speed += 1 * Acceleration;
if (Input.GetKey(KeyCode.S))Speed -= 1 * Acceleration;
if (Input.GetKey(KeyCode.Tab))engineOrient += 1 * engineRotSpeed/100;
if (Input.GetKey(KeyCode.LeftControl))engineOrient -= 1 * engineRotSpeed/100;
constantForce.relativeTorque.y = Input.GetAxis("Yaw") * Torque * 2 * Time.deltaTime;
constantForce.relativeTorque.x = Input.GetAxis("Pitch") * Torque * Time.deltaTime;
constantForce.relativeTorque.z = Input.GetAxis("Roll") * Torque * Time.deltaTime;
// set direction of engine
engin.transform.rotation.x = engineOrient;
Gravity = SavedGravity - Speed;
if(Gravity <= 0)Gravity = 0;
// note that the speed s not here because it will be set acording to the engines orientation
thank you all
Answer by sparkzbarca · Nov 13, 2012 at 02:01 AM
rotation is stored as a quanternion. You do now screw with quanternions. They are based on irrational numbers math and your cant screw with them directly without knowing more about math than you know. It can end up producing results like what you just got.
You want to use
rotation.eulerangles
euler angles are what your thinking a rotation is.
Google Quanternions or euler angles for a more in depth answer.
if you would like to just make the engine point at the ground just use RotateTo(transform.rotation.eulerangles, -vector3.up() ); notice the negative sign in front of vector3.up(). Makes it down.
alternatly you can lock the y and z axis
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
RotateAround help 1 Answer
What's wrong with my script? 1 Answer
transform.localScale unexpected behavior after Rotate() 1 Answer