This is my code, the character moves in the direction the camera is turned to but the actual model does not turn. Any suggestions? I’m new to coding and any help would be very helpful. Thank you
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraControl : MonoBehaviour
{
private const float Y_ANGLE_MIN = 0.0f;
private const float Y_ANGLE_MAX = 50.0f;
private float moveFB, moveLR;
public float moveSpeed = 2f;
public Transform lookAt;
public Transform camTransform;
public Transform centerPoint;
public float mouseYPosition = 1f;
public float rotationSpeed = 5f;
private Camera cam;
private float distance = 3.0f;
private float currentX = 0.0f;
private float currentY = 20.0f;
private float sensivityX = 6.0f;
private float sensivityY = 2.0f;
float cameraDistanceMax = 6f;
float cameraDistanceMin = 0.5f;
float cameraDistance = 3f;
float scrollSpeed = 0.5f;
private float mouseX, mouseY;
private void Start()
{
camTransform = transform;
cam = Camera.main;
}
private void Update()
{
lookAt.localRotation = Quaternion.Euler(mouseY, mouseX, 0);
if (Input.GetMouseButton(1))
currentX += Input.GetAxis("Mouse X");
if (Input.GetMouseButton(1))
currentY += Input.GetAxis("Mouse Y");
currentY = Mathf.Clamp(currentY, Y_ANGLE_MIN, Y_ANGLE_MAX);
moveFB = Input.GetAxis("Vertical") * moveSpeed;
moveLR = Input.GetAxis("Horizontal") * moveSpeed;
Vector3 movement = new Vector3(moveLR, 0, moveFB);
movement = Camera.main.transform.TransformDirection(movement);
movement.y = 0.0f;
//movement = lookAt.rotation * movement;
lookAt.GetComponent<CharacterController>().Move(movement * Time.deltaTime);
centerPoint.position = new Vector3(lookAt.position.x, lookAt.position.y + mouseYPosition, lookAt.position.z);
lookAt.GetComponent<CharacterController>().Move(movement * Time.deltaTime);
//lookAt.position = new Vector3(lookAt.position.x , lookAt.position.y + mouseYPosition, lookAt.position.z );
if (Input.GetAxis ("Vertical") > 0 | Input.GetAxis ("Vertical") < 0)
{
Quaternion turnAngle = Quaternion.Euler(0, lookAt.eulerAngles.y, 0);
lookAt.rotation = Quaternion.Slerp(lookAt.rotation, turnAngle, Time.deltaTime * rotationSpeed);
}
//zoom code
cameraDistance += Input.GetAxis("Mouse ScrollWheel") * scrollSpeed;
cameraDistance = Mathf.Clamp(cameraDistance, cameraDistanceMin, cameraDistanceMax);
//zoom code
}
private void LateUpdate()
{
Vector3 dir = new Vector3(0, 0, -cameraDistance);
Quaternion rotation = Quaternion.Euler(currentY, currentX, 0);
camTransform.position = lookAt.position + rotation * dir;
camTransform.LookAt(lookAt.position);
}
}