x


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

more ▼

asked Nov 23 '10 at 08:00 PM

ODPaterson gravatar image

ODPaterson
27 6 6 13

Not enough info - you haven't said how the camera is controlled, or even whether the game is 1st-person or 3rd-person. If you still need help with this, edit your post to include more info (and perhaps your camera control code as well).

Nov 23 '10 at 08:24 PM Jesse Anders
(comments are locked)
10|3000 characters needed characters left

3 answers: sort voted first

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 :)

more ▼

answered Dec 07 '10 at 01:21 PM

ODPaterson gravatar image

ODPaterson
27 6 6 13

(comments are locked)
10|3000 characters needed characters left

You need to rotate the camera by 180 degrees

more ▼

answered Nov 23 '10 at 08:24 PM

Siim gravatar image

Siim
1

The problem I have is that I need a script which does this and I'm useless at scripting so I don't know where to start :S

Nov 23 '10 at 10:13 PM ODPaterson
(comments are locked)
10|3000 characters needed characters left

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

more ▼

answered Nov 28 '10 at 09:53 AM

azzogat gravatar image

azzogat
918 3 16

Thanks, but it doesn't seem to work :S. I have a camera flip script but it just gets overwritten by the camera follow script. When I press space the camera view flickers to the right position for a millisecond but ultimately stays the same. If I could wok out what was doing that I'd be alright I think.

Nov 30 '10 at 07:35 PM ODPaterson
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x2996
x379
x52

asked: Nov 23 '10 at 08:00 PM

Seen: 1323 times

Last Updated: Nov 27 '10 at 11:48 PM