Can I make the camera flip upside-down when spacebar is pressed?

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...

You need to rotate the camera by 180 degrees

On an empty object, this should do the trick:

    if (Input.GetButtonUp ("Jump")){
transform.eulerAngles = Vector3(0, 0, 180); 
}

If you're planning on getting anywhere with your project, I recommend you take the time to understand any external snippet of code you're using. The Scripting Reference is your friend :

http://unity3d.com/support/documentation/ScriptReference/Transform-eulerAngles.html

Sorted.

I attached a camera movement script to a cube, removed its mesh renderer and then made the main camera a child of it. I then added this script:

function LateUpdate() {
if (Input.GetKeyDown(KeyCode.Space)) {
     transform.Rotate(0, 0*Time.deltaTime, 180);
}

}

to the main camera.

This means the camera movement script and the camera flip script don't interfere with each other.

There was almost certainly a better and more elegant way of solving this problem, but I'm not a programmer, I'm pushed for time and this works so it's all good :)