- Home /
Question by
$$anonymous$$ · Nov 16, 2020 at 11:04 PM ·
player movementcamera-lookcamera followcamera rotation
camera not rotating with body
instead of walking in the direction where im looking, the wasd keys are like bounded to axis of the 3d world, and dont rotate as the player turns around. What to do?
Movement Script:
public class Movement : MonoBehaviour {
public float speed;
public Rigidbody rig;
private void Start()
{
Camera.main.enabled = false;
rig = GetComponent<Rigidbody>();
}
// Update is called once per frame
void FixedUpdate()
{
float t_hmove = Input.GetAxisRaw("Horizontal");
float t_vmove = Input.GetAxisRaw("Vertical");
Vector3 t_direction = new Vector3(t_hmove, 0, t_vmove);
t_direction.Normalize();
rig.velocity = transform.TransformDirection(t_direction) * speed * Time.deltaTime;
}
}
looking script:
public class Look : MonoBehaviour { public static bool cursorLocked = true;
public Transform player;
public Transform cams;
public float xSensitivity;
public float ySensitivity;
public float maxAngle;
private Quaternion camCenter;
// Start is called before the first frame update
void Start()
{
camCenter = cams.localRotation; //set rotation origin for cameras to camCenter
}
// Update is called once per frame, t_ = temporär
void Update()
{
SetY();
SetX();
UpdateCursorLock();
}
void SetY() {
float t_input = Input.GetAxis("Mouse Y") * ySensitivity * Time.deltaTime;
Quaternion t_adj = Quaternion.AngleAxis(t_input, -Vector3.right);
Quaternion t_delta = cams.localRotation * t_adj;
if (Quaternion.Angle(camCenter, t_delta) < maxAngle) {
cams.localRotation = t_delta;
}
}
void SetX()
{
float t_input = Input.GetAxis("Mouse X") * xSensitivity * Time.deltaTime;
Quaternion t_adj = Quaternion.AngleAxis(t_input, Vector3.up);
Quaternion t_delta = cams.localRotation * t_adj;
cams.localRotation = t_delta;
}
void UpdateCursorLock() {
if(cursorLocked)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
if(Input.GetKeyDown(KeyCode.Escape)) {
cursorLocked = false;
}
}
else {
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
if (Input.GetKeyDown(KeyCode.Escape))
{
cursorLocked = true;
}
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Camera rotation 0 Answers
Smooth Follow cam; how to keep camera close, but still retain sideways lag/lerp 1 Answer
Returning the camera back to original position, 1 Answer
how can i rotate the camera around the object , which follows the object??? 0 Answers
3rd Person Camera,How would I make it so that the character will turn the way of the camera? 0 Answers