- Home /
Camera rotating with physics based movement.
I'm using the following script for my camera controller.
using UnityEngine;
public class PlayerController : MonoBehaviour {
public float moveSpeed = 150f;
public float rotationSpeed = 2f;
private Rigidbody rigidBody;
private Vector3 directionalForce;
private Vector3 rotationalForce;
// Use this for initialization
void Start () {
rigidBody = GetComponent<Rigidbody>();
Cursor.lockState = CursorLockMode.Locked;
}
// Update is called once per frame
void Update () {
float horizontal = Input.GetAxisRaw("Horizontal");
float vertical = Input.GetAxisRaw("Vertical");
float depth = Input.GetAxisRaw("Depth");
float mouseX = Input.GetAxisRaw("Mouse X");
float mouseY = Input.GetAxisRaw("Mouse Y");
float rotation = Input.GetAxisRaw("Rotation");
directionalForce = new Vector3(horizontal, depth, vertical);
rotationalForce = new Vector3(mouseY, mouseX, rotation);
if (Input.GetKeyUp(KeyCode.Escape))
{
Cursor.lockState = CursorLockMode.None;
}
}
void FixedUpdate() {
rigidBody.AddRelativeForce(directionalForce * moveSpeed);
rigidBody.AddRelativeTorque(rotationalForce * rotationSpeed);
if (Mathf.Abs(rigidBody.velocity.x) > moveSpeed)
{
rigidBody.velocity = new Vector3(Mathf.Sign(rigidBody.velocity.x) * moveSpeed, rigidBody.velocity.y, rigidBody.velocity.z);
}
if (Mathf.Abs(rigidBody.velocity.y) > moveSpeed)
{
rigidBody.velocity = new Vector3(rigidBody.velocity.x, Mathf.Sign(rigidBody.velocity.y) * moveSpeed, rigidBody.velocity.z);
}
if (Mathf.Abs(rigidBody.velocity.z) > moveSpeed)
{
rigidBody.velocity = new Vector3(rigidBody.velocity.x, rigidBody.velocity.y, Mathf.Sign(rigidBody.velocity.z) * moveSpeed);
}
}
}
However, when I move my mouse the camera rotates even though it shouldn't have force being applied to it.
Here's a webm of the issue: https://arimil.com/rotating.webm
And here's a screenshot of how I setup those two axis:
Comment
Your answer
Follow this Question
Related Questions
Orbit cam and Rigidbodies aiming 0 Answers
I'm making a top down game. Where should the camera point? 2 Answers
Camera/Direction Rotation 2 Answers
rotate around with physics 1 Answer
Camera rotation around a single axis - following a rolling ball 3 Answers