Question by
unity_19-10320 · Aug 25, 2020 at 10:38 PM ·
rigidbodyjumpingjittering
Jump landing jittering
public class PlayerMovement : MonoBehaviour
{
public float speed = 10f;
public float jumpForce = 30f;
CapsuleCollider capsule;
Rigidbody rigidbody;
public float mouseSensitivity = 100f;
public Transform camera;
private float ydeg;
public float extraGravity = 45;
GameObject rifle;
float xRotation = 0f;
private void Start()
{
rigidbody = this.GetComponent<Rigidbody>();
capsule = GetComponent<CapsuleCollider>();
rifle = GameObject.FindGameObjectWithTag("Rifle");
}
bool isGrounded;
// Update is called once per frame
void Update()
{
Rotate();
Movement();
GroundCheck();
Jump();
}
void Jump()
{
if (isGrounded && Input.GetButtonDown("Jump"))
{
rigidbody.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}
}
void Movement()
{
float x = Input.GetAxisRaw("Horizontal");
float z = Input.GetAxisRaw("Vertical");
Vector3 move = (transform.right * x + transform.forward * z).normalized;
transform.position += move * speed * Time.smoothDeltaTime;
}
void GroundCheck()
{
RaycastHit gh;
isGrounded = Physics.Raycast(new Ray(transform.position, Vector3.down), GetComponent<Collider>().bounds.extents.y + 0.1f);
}
void Rotate()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.smoothDeltaTime;
transform.Rotate(Vector3.up * mouseX);
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.smoothDeltaTime;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -40f, 40f);
rifle.transform.localRotation = Quaternion.Euler(new Vector3(rifle.transform.localRotation.x, 90, rifle.transform.localRotation.z + xRotation));
if (Input.GetMouseButton(1))
{
xRotation -= 20f * Time.smoothDeltaTime;
transform.Rotate(Vector3.up * -6 * Time.smoothDeltaTime);
}
camera.transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
}
}
public class MouseLook : MonoBehaviour
{
public float mouseSensitivity = 100f;
public Transform playerBody;
private float ydeg;
GameObject rifle;
float xRotation = 0f;
private void Start()
{
rifle = GameObject.FindGameObjectWithTag("Rifle");
}
private void LateUpdate()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.smoothDeltaTime;
playerBody.Rotate(Vector3.up * mouseX);
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.smoothDeltaTime;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -40f, 40f);
rifle.transform.localRotation = Quaternion.Euler(new Vector3(rifle.transform.localRotation.x, 90, rifle.transform.localRotation.z + xRotation)) ;
if (Input.GetMouseButton(1))
{
xRotation -= 15f * Time.smoothDeltaTime;
//ydeg += 15f * Time.deltaTime;
}
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
}
}
when I Build and Run a game, I'm pretty happy with WASD movement and rotation, but While I landing from jumping, It causes Stuttering. I set rigidBody to both none and interpolate but it was no use. is there a way to reduce jitter or rid of it?
Comment
Your answer
Follow this Question
Related Questions
Character jumping too fast 1 Answer
Rigidbody jittering (Interpolation set on) 0 Answers
Why is my player getting stuck when jumping into awalls? 0 Answers
why do two of my codes when collided don't function properly? 0 Answers
Unity skipping input 0 Answers