The title might not be very descriptive. I now how to to this, I just can’t think of a logical way to implement it, if that makes any sense…Please read
I have a camera parented to a truck(the player). If the player starts doing flips and stuff, upon landing the camera will be rotated in some weird manner. I have a script that was written mostly by my instructor, for the camera to make the view lag a bit when you turn the truck, as if the camera were a balloon attached to the truck by a string. By disabling that script and testing the game, I determined that the issue is a result of the script, but I would like very much to keep it. My idea was this
var camRotX : float;
var camRotZ : float;
function Start(){ //defines original rotation values
camRotX = transform.rotation.eulerAngles.x;
camRotZ = transform.rotation.eulerAngles.z;
}
function Update (){ //sets current rotation values to original
transform.rotation.eulerAngles.x = camRotX;
transform.rotation.eulerAngles.z = camRotZ;
}
This worked, except that it was maintaining the rotation of the camera constantly, so if you were to go up a slope, the camera would stare at the side of the mountain while the truck rotated with the grade. I thought maybe setting the rotation values only when the truck collides with the terrain would work, but I have no idea how to make my camera know when the truck hits the ground. I was thinking maybe some sort of ParentOnCollisionEnter might exist but I couldn’t find anything in the scripting API.
I don’t think it’s necessary, but just in case, here is the whole script.
var frameCounter : int = 0;
var frameCycle_01 : int;
var frameCycle_02 : int = 0;
var rot_Y : float[] = new float[10];
var camRotX : float;
var camRotZ : float;
function Start(){
camRotX = transform.rotation.eulerAngles.x;
camRotZ = transform.rotation.eulerAngles.z;
}
function Update () {
frameCycle_01 = frameCounter%10;
frameCycle_02 = (frameCounter + 1)%10;
rot_Y[frameCycle_01] = TruckDriver.truckRotation.y;
transform.rotation.eulerAngles.y = rot_Y[frameCycle_02];
transform.rotation.eulerAngles.x = camRotX;
transform.rotation.eulerAngles.z = camRotZ;
frameCounter++;
}