Thinking it might be better for my game, I’v started converting my player controls using the Character Controller component to a Rigidbody component. Almost everything for the player movement is converted except for one line of code. As seen below (at the very bottom) it is the line with controller.Move, because I don’t know the Rigidbody equivalent to controller.Move. If anyone knows what I can put to get this script to work, please let me know.
public class PlayerController : MonoBehaviour
{
public CharacterController controller
public Transform cam
public float turnSmoothTime = 0.07f;
float turnSmoothVelocity;
void Update()
{
//Character Movement
float horizontal = Input.GetAxisRaw("Horizontal");
float vertical = Input.GetAxisRaw("Vertical");
inputVector = new Vector3(horizontal * 50f, rb.velocity.y, vertical * 50f).normalized;
rb.velocity = inputVector;
//Character Rotation
if (inputVector.magnitude >= 0.1f)
{
float targetAngle = Mathf.Atan2(inputVector.x, inputVector.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
transform.rotation = Quaternion.Euler(0f, angle, 0f);
Vector3 moveDir = Quaternion.Euler(0f, targetAngle, 0f) * Vector3.forward;
controller.Move(moveDir.normalized * movementSpeed * Time.deltaTime);
}
}
}