I making a game which involves flipping gravity so that the player travels on the ceiling when space is pressed.
The problem is that when gravity is switched round the camera doesn't switch round too which makes things very disorienting!
Thanks in advance to anyone who can help out!
[Edit]
More detail:
The camera is attached to a vehicle with this script:
using UnityEngine;
using System.Collections;
public class CarCamera : MonoBehaviour { public Transform target = null; public float height = 1f; public float positionDamping = 3f; public float velocityDamping = 3f; public float distance = 4f; public LayerMask ignoreLayers = -1;
private RaycastHit hit = new RaycastHit();
private Vector3 prevVelocity = Vector3.zero;
private LayerMask raycastLayers = -1;
private Vector3 currentVelocity = Vector3.zero;
void Start()
{
raycastLayers = ~ignoreLayers;
}
void FixedUpdate()
{
currentVelocity = Vector3.Lerp(prevVelocity, target.root.rigidbody.velocity, velocityDamping * Time.deltaTime);
currentVelocity.y = 0;
prevVelocity = currentVelocity;
}
void LateUpdate()
{
float speedFactor = Mathf.Clamp01(target.root.rigidbody.velocity.magnitude / 70.0f);
camera.fieldOfView = Mathf.Lerp(50, 70, speedFactor);
float currentDistance = Mathf.Lerp(4f, 2.25f, speedFactor);
currentVelocity = currentVelocity.normalized;
Vector3 newTargetPosition = target.position + Vector3.up * height;
Vector3 newPosition = newTargetPosition - (currentVelocity * currentDistance);
newPosition.y = newTargetPosition.y;
Vector3 targetDirection = newPosition - newTargetPosition;
if(Physics.Raycast(newTargetPosition, targetDirection, out hit, currentDistance, raycastLayers))
newPosition = hit.point;
transform.position = newPosition;
transform.LookAt(newTargetPosition);
}
}
I've tried to make a flipping script like this:
function Update() { if (Input.GetKeyDown(KeyCode.Space)) { ; transform.Rotate(0, 0*Time.deltaTime, 180); } }
This camera flipping script works but not with the camera with a vehicle script attached at the same time.
My guess is something in a that big script is messing up my little script...