Question by
shugininigor · May 25, 2021 at 08:36 PM ·
camera3dshakingparkour
Camera Shaking At High Speed
Hello, I am working on my 3D game project, it is a parkour game where there is no limit to velocity. When I ran a couple of tests, I realized that the camera starts to shake if I reached high speed. I tried many solutions but none of them worked. Please help.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
[Header("Refrences")]
public Transform orientation;
public Transform groundCheck;
public Rigidbody m_rb;
[Header("Player Movement Settings")]
public float moveSpeed;
public bool isGrounded;
public float jumpForce;
public float radius;
public LayerMask groundMask;
private void FixedUpdate() {
//Check for ground
isGrounded = Physics.CheckSphere(groundCheck.position,radius,groundMask);
float x = Input.GetAxisRaw("Horizontal");
float z = Input.GetAxisRaw("Vertical");
Vector3 moveVec = orientation.right.normalized * x * moveSpeed * Time.deltaTime + orientation.forward * z * moveSpeed * Time.deltaTime;
m_rb.AddForce(moveVec,ForceMode.Impulse);
if(isGrounded){
m_rb.drag = 7f;
moveSpeed = 90f;
}
else if(!isGrounded){
m_rb.drag = 0f;
moveSpeed = 10f;
}
}
private void Update()
{
PlayerJump();
}
private void OnDrawGizmos() {
Gizmos.DrawWireSphere(groundCheck.position,radius);
}
void PlayerJump()
{ //Controls jumping.
if (Input.GetButtonDown("Jump") && isGrounded == true){
Vector3 jump = new Vector3(0, jumpForce, 0);
m_rb.AddForce(0f, 0f, 0f);
m_rb.AddForce(jump, ForceMode.Impulse);
isGrounded = false;
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraLook : MonoBehaviour
{
[Header("References")]
[SerializeField] WallRun wallRun;
[SerializeField] private float sensX = 100f;
[SerializeField] private float sensY = 100f;
[SerializeField] Transform cam = null;
[SerializeField] Transform orientation = null;
float mouseX;
float mouseY;
float multiplier = 0.01f;
float xRotation;
float yRotation;
private void Start()
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
private void LateUpdate()
{
mouseX = Input.GetAxisRaw("Mouse X");
mouseY = Input.GetAxisRaw("Mouse Y");
yRotation += mouseX * sensX * multiplier;
xRotation -= mouseY * sensY * multiplier;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);
cam.transform.rotation = Quaternion.Euler(xRotation, yRotation, wallRun.tilt);
orientation.transform.rotation = Quaternion.Euler(0, yRotation, 0);
}
private void CheckForShooting()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit whatIhit;
if (Physics.Raycast(transform.position, transform.forward, out whatIhit, Mathf.Infinity))
{
}
}
}
}
I put my code here. I am using RigidBody, Intrerpolate.
image-2021-05-25-204832.png
(105.6 kB)
Comment
Your answer
Follow this Question
Related Questions
How to Make a only player can see a prefab? 1 Answer
Third person Camera rotation problem 2 Answers
How to fix an object to the center of the screen? 0 Answers
How do I get the current active camera? 2 Answers
Project 3d Object to Camera View 0 Answers