How do I tilt my Spaceship and make it go up and down?

I want my spaceship to tilt left and right whenever I ‘sidestep’ with it. But I’m not sure how to make that work :confused:
I would also like to make my spaceship go straight up and down, when pressing ‘space’ and ‘ctrl’, but my If-statement doesn’t really work >_> any suggestions?

using UnityEngine;
using System.Collections;

public class FirstPersonController : MonoBehaviour {
	public float movementSpeed;
	public float mouseSensitivity;
	public float tilt;
	public float upSpeed;
	public float downSpeed;
	private float normal = 0.0f;
	CharacterController cc;
	void Start() {
		Screen.lockCursor = true;
		cc = GetComponent<CharacterController>();
	}//start end
	void Update() {
		float rotLeftRight = Input.GetAxis("Mouse X") * mouseSensitivity;
		transform.Rotate(0, rotLeftRight, 0);
		float rotUpDown = Input.GetAxis("Mouse Y") * mouseSensitivity;
		transform.Rotate(-rotUpDown, 0, 0);
		float forwardSpeed = Input.GetAxis("Vertical") * movementSpeed * Time.deltaTime;
		float sideSpeed = Input.GetAxis("Horizontal") * movementSpeed * Time.deltaTime;
		if(Input.GetButton("Jump")) {
			normal = upSpeed;
		                         //(left/right, up/down, forward)
		Vector3 speed = new Vector3(sideSpeed,0,forwardSpeed);
		speed = transform.rotation * speed;
		cc.Move(speed * Time.deltaTime);
	}//update end
}//class end

To tilt the ship…

transform.Rotate(0,0,Input.GetAxis("Horizontal") * -45 - transform.eulerAngles.z);

As for your if statement, it is fine. Just remove " = 0.0f" from line 12 and put “normal = 0;” inside the Start function.

That didn’t have the desired effect… The tilt was only supposed to make the ship tilt a little from side to side to make it seem more smooth but this that code makes the ship follow the tilt, which wasn’t the intention… plus if you look straight up and go left or right, then the ship goes ape shit…

I made some code in a 2D setting that had the desired result:

     GetComponent<Rigidbody>().rotation = Quaternion.Euler(0.0f, 0.0f, GetComponent<Rigidbody>().velocity.x * -tilt);

But what I want to make now is in a 3D setting…

For anyone interested, I made the ‘up and down’ function work like this:

		if(Input.GetKey("space")) {
			upDownSpeed = movementSpeed * Time.deltaTime;
		} else {
			if(Input.GetKey("left ctrl")) {
				upDownSpeed = -movementSpeed * Time.deltaTime;
			} else {
				upDownSpeed = 0.0f;

A special thanks to MrMeows for the assistance :slight_smile: