Quantcast
Viewing all articles
Browse latest Browse all 133

Making Player Rotation Smoother

I need help making my player rotation smoother. Right now, whenever the camera is facing a different direction than the player is facing, if I press forward with the player controls, he snaps into the direction the camera is facing, rather than a smooth rotation. This is the code in the player: if (Mathf.Abs(Input.GetAxis("Vertical")) + Mathf.Abs(Input.GetAxis("Horizontal")) > 0) { // Rotate in the direction the pivot is facing transform.rotation = Quaternion.Euler(0f, pivot.rotation.eulerAngles.y, 0f); // Create a new rotation based on the direction the player is currently facing Quaternion newRotation = Quaternion.LookRotation(new Vector3(moveDirection.z, 0, -moveDirection.x)); // Set the player model rotation to be in the direction of the new rotation playerModel.transform.rotation = Quaternion.Slerp(playerModel.transform.rotation, newRotation, rotateSpeed * Time.deltaTime); } This is the code in the camera: void LateUpdate() { if(!Cursor.visible) { pivot.transform.parent = null; pivot.transform.position = target.transform.position; //Get X position of the mouse & rotate the target float horizontal = Input.GetAxis("Mouse X") * rotateSpeedX; pivot.Rotate(0, horizontal, 0); //Get Y position of the mouse & rotate the pivot float vertical = Input.GetAxis("Mouse Y") * rotateSpeedY; //pivot.Rotate(-vertical,0 , 0); if (invertY) { pivot.Rotate(vertical, 0, 0); } else { pivot.Rotate(-vertical, 0, 0); } float desiredYAngle = pivot.eulerAngles.y; float desiredXAngle = pivot.eulerAngles.x; //Limit up/down camera rotation if (pivot.rotation.eulerAngles.x > maxViewAngle && pivot.rotation.eulerAngles.x < 180) { pivot.rotation = Quaternion.Euler(maxViewAngle, desiredYAngle, 0);//pivot.rotation.eulerAngles.y, pivot.rotation.eulerAngles.z); } if (pivot.rotation.eulerAngles.x > 180 && pivot.rotation.eulerAngles.x < 360 + minViewAngle) { pivot.rotation = Quaternion.Euler(360 + minViewAngle, desiredYAngle, 0);//pivot.rotation.eulerAngles.y, pivot.rotation.eulerAngles.z); } //Move camera based on current rotation of target Quaternion rotation = Quaternion.Euler(desiredXAngle, desiredYAngle, 0); transform.position = target.position - (rotation * offset); if (transform.position.y < target.position.y) { transform.position = new Vector3(transform.position.x, target.position.y - 0.5f, transform.position.z); } transform.LookAt(target.transform); } }

Viewing all articles
Browse latest Browse all 133

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>