Question by
HaykAv · Jun 13, 2016 at 03:10 AM ·
camerarigidbodycamera-movementcamera-lookcamera follow
When attaching my custom camera script camera shakes when player starts to move fast.
Here is my player script.
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour
{
Rigidbody rb;
Vector3 currMovement;
public float jumpSpeed = 10;
public float moveSpeed = 10;
public float rotSpeed = 180;
float distToGround;
public float posSmoothTime = 0.5f;
float currPos;
float targetPos;
float posVel;
public float rotSmoothTime = 0.5f;
float currRot;
float targetRot;
float rotVel;
void Start()
{
rb = GetComponent<Rigidbody>();
distToGround = GetComponent<Collider>().bounds.extents.y;
}
bool isGrounded() { return Physics.Raycast(transform.position, Vector3.down, distToGround + 0.1f); }
void Update()
{
Move();
}
void Move()
{
// Rotation smoothing.
targetRot = Input.GetAxisRaw("Horizontal") * rotSpeed * Time.smoothDeltaTime;
if (targetRot > 360)
targetRot -= 360;
if (targetRot < 0)
targetRot += 360;
currRot = Mathf.SmoothDampAngle(currRot, targetRot, ref rotVel, rotSmoothTime * Time.smoothDeltaTime);
transform.eulerAngles += new Vector3(0, currRot, 0);
// Movement smoothing.
targetPos = Input.GetAxisRaw("Vertical") * moveSpeed;
currPos = Mathf.SmoothDamp(currPos, targetPos, ref posVel, posSmoothTime * Time.smoothDeltaTime);
currMovement = new Vector3(0, 0, currPos);
currMovement = transform.rotation * currMovement;
if (isGrounded())
{
if (Input.GetButtonDown("Jump"))
rb.velocity += Vector3.up * jumpSpeed;
}
rb.position += currMovement * Time.smoothDeltaTime;
}
}
I have a Rigidbody attached to my player. I think the problem is with my camera script. Here is my camera script.
using UnityEngine;
using System.Collections;
public class CameraMovement : MonoBehaviour
{
public Transform player;
Quaternion targetLook;
Vector3 targetMove;
public float smoothLook = 0.5f;
public float smoothMove = 0.5f;
public float distFromPlayer = 5, heightFromPlayer = 3;
Vector3 moveVel;
void LateUpdate()
{
CameraMove();
}
void CameraMove()
{
targetMove = player.position + (player.rotation * new Vector3(0, heightFromPlayer, -distFromPlayer));
transform.position = Vector3.SmoothDamp(transform.position, targetMove, ref moveVel, smoothMove);
targetLook = Quaternion.LookRotation(player.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, targetLook, smoothLook);
}
}
The player is not an parent of my camera. When I parent the camera to my player the shake stops. But I want a custom smooth camera movement with my custom scirpt, so I can't make the player a parent of the camera.
Comment
Your answer
Follow this Question
Related Questions
CineMachine Camera Movement is inverse 1 Answer
Spyro Like Camera Follow 0 Answers
When attaching my custom camera script camera shakes when player starts to move fast. 1 Answer
getting Jittery movement on camera when player rotating and moving in same time 0 Answers
Camera EdgeScrolling Question 0 Answers