- Home /
Mouse Flight Doesn't Allow for Rolling
I've been making a game where you control a spaceship using mouse controls. Ultimately, I want to achieve something similar to this game, and I've gotten something close. This is the script for movement:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Controls : MonoBehaviour
{
public int throttle = 0;
public int maxThrottle = 100;
public int minThrottle = -20;
public float sensitivity = 20;
public float spin;
Vector3 LookAtPos;
Vector3 SmoothedLookAtPos;
public Rigidbody rb;
void Start ()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate ()
{
//Throttle Controls
if (Input.GetKey ("w") && throttle < maxThrottle && throttle >= minThrottle)
{
throttle += 1;
print ("Throttle = " + throttle);
}
if (Input.GetKey ("s") && throttle <= maxThrottle && throttle > minThrottle)
{
throttle -= 1;
print ("Throttle = " + throttle);
}
rb.AddForce (transform.forward * throttle);
//Roll Controls
if (Input.GetKey ("a"))
{
rb.AddRelativeTorque (0, 0, spin);
}
if (Input.GetKey ("d"))
{
rb.AddRelativeTorque (0, 0, -spin);
}
//Mouse Controls
LookAtPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 100));
SmoothedLookAtPos = Vector3.Lerp(SmoothedLookAtPos, LookAtPos, Time.deltaTime * 5);
transform.LookAt(SmoothedLookAtPos);
}
}
I'm still very new to Unity, so the code to make the ship follow the mouse is near the bottom there, starting with LookAtPos I got from this post. The problem with this is that it doesn't work with the code to "roll" the ship, and I've tried tweaking the mouse movement code to fix this. I just can't figure it out. The roll code is still working, I can see the ship slightly twitch when the roll keys are pressed, but it just won't rotate fully with the mouse controls enabled.
So is there any way to keep the mouse controls like they are now, where the ship moves towards where the mouse is on screen, and also allow rolling the ship?
Answer by Diukrone · Jan 13, 2018 at 02:36 PM
if (Input.GetKey ("a") || Input.GetAxis("MouseY") !=0 || Input.GetAxis("MouseY") !=0) {//Roll Controls
rb.AddRelativeTorque (0, 0, spin); }
maybe it Works, just pseudocode. Put mouse Axis on each IF roll call orders.
Input.GetAxis("$$anonymous$$ouseY") !=0 || Input.GetAxis("$$anonymous$$ouseX") !=0
is the correct, i did a mistake there. I have a roll system, enter in contact with me on private.