- Home /
Camera rotation and position problem,Camera rotation and camera position
Hello, so I "created" a script that should rotate and move the camera and it works, but when I turn the camera and try to move it, it's like the rotation of the camera stays in place, I don't know how to explain it, I'm just starting to program and I can't fix it
Here's a video that more or less shows what it looks like: https://youtu.be/PvG77CXhl_w
using UnityEngine;
public class CameraController : MonoBehaviour
{
public float panSpeed = 20f;
public float panBorderThickness = 10f;
public Vector2 panLimit;
public float scrollSpeed = 20f;
public float minY = 20f;
public float maxY = 200f;
public float speedH = 2.0f;
public float speedV = 2.0f;
private float yaw = 0.0f;
private float pitch = 0.0f;
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(1))
{
yaw += speedH * Input.GetAxis("Mouse X");
pitch -= speedV * Input.GetAxis("Mouse Y");
}
transform.eulerAngles = new Vector3(pitch, yaw, 0.0f);
Vector3 pos = transform.position;
if (Input.GetKey("w") || Input.mousePosition.y >= Screen.height - panBorderThickness )
{
pos.z += panSpeed * Time.deltaTime;
}
if (Input.GetKey("s") || Input.mousePosition.y <= panBorderThickness)
{
pos.z -= panSpeed * Time.deltaTime;
}
if (Input.GetKey("d") || Input.mousePosition.x >= Screen.width - panBorderThickness)
{
pos.x += panSpeed * Time.deltaTime;
}
if (Input.GetKey("a") || Input.mousePosition.x <= panBorderThickness)
{
pos.x -= panSpeed * Time.deltaTime;
}
float scroll = Input.GetAxis("Mouse ScrollWheel");
pos.y -= scroll * scrollSpeed * 100f * Time.deltaTime;
pos.x = Mathf.Clamp(pos.x, -panLimit.x, panLimit.x);
pos.y = Mathf.Clamp(pos.y, minY, maxY);
pos.z = Mathf.Clamp(pos.z, -panLimit.y, panLimit.y);
transform.position = pos;
}
}
,Hello, so I "created" a script that should rotate and move the camera and it works, but when I turn the camera and try to move it, it's like the rotation of the camera stays in place, I don't know how to explain it, I'm just starting to program and I can't fix it
Here's a video that more or less shows what it looks like: https://youtu.be/PvG77CXhl_w
using UnityEngine;
public class CameraController : MonoBehaviour
{
public float panSpeed = 20f;
public float panBorderThickness = 10f;
public Vector2 panLimit;
public float scrollSpeed = 20f;
public float minY = 20f;
public float maxY = 200f;
public float speedH = 2.0f;
public float speedV = 2.0f;
private float yaw = 0.0f;
private float pitch = 0.0f;
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(1))
{
yaw += speedH * Input.GetAxis("Mouse X");
pitch -= speedV * Input.GetAxis("Mouse Y");
}
transform.eulerAngles = new Vector3(pitch, yaw, 0.0f);
Vector3 pos = transform.position;
if (Input.GetKey("w") || Input.mousePosition.y >= Screen.height - panBorderThickness )
{
pos.z += panSpeed * Time.deltaTime;
}
if (Input.GetKey("s") || Input.mousePosition.y <= panBorderThickness)
{
pos.z -= panSpeed * Time.deltaTime;
}
if (Input.GetKey("d") || Input.mousePosition.x >= Screen.width - panBorderThickness)
{
pos.x += panSpeed * Time.deltaTime;
}
if (Input.GetKey("a") || Input.mousePosition.x <= panBorderThickness)
{
pos.x -= panSpeed * Time.deltaTime;
}
float scroll = Input.GetAxis("Mouse ScrollWheel");
pos.y -= scroll * scrollSpeed * 100f * Time.deltaTime;
pos.x = Mathf.Clamp(pos.x, -panLimit.x, panLimit.x);
pos.y = Mathf.Clamp(pos.y, minY, maxY);
pos.z = Mathf.Clamp(pos.z, -panLimit.y, panLimit.y);
transform.position = pos;
}
}
[1]: https://youtu.be/PvG77CXhl_w
Your answer
Follow this Question
Related Questions
Create camera transition from one point to top of object 1 Answer
camera acting weird... 1 Answer
Rotate 3rd person Character according to mouse position 0 Answers
Make object appear within camera view 0 Answers
Freeze camera 1 Answer