Чувствительность камеры к вращению сильно различается, когда твердое тело находится в движении.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Чувствительность камеры к вращению сильно различается, когда твердое тело находится в движении.

Сообщение Anonymous »

По сути, я использую контроллер от первого лица, и когда я двигаюсь, чувствительность становится намного выше, чем если бы я стоял на месте и вращался. Не удалось найти причину этой проблемы. (Я новичок)
код для вращения камеры игрока
using UnityEngine;

public class PlayerCam : MonoBehaviour
{
public float sensX;
public float sensY;

public Transform orientation;

float xRotation;
float yRotation;

private void Start()
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}

private void Update()
{
float mouseX = Input.GetAxisRaw("Mouse X") * Time.deltaTime * sensX;
float mouseY = Input.GetAxisRaw("Mouse Y") * Time.deltaTime * sensY;

yRotation += mouseX;

xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);

//rotera kamera samt orentation av spelare
transform.rotation = Quaternion.Euler(xRotation, yRotation, 0);
orientation.rotation = Quaternion.Euler(0, yRotation, 0);
}
}

код для движения игрока
(это не весь сценарий, но я поместил те части, которые, по моему мнению, могут иметь значение, не смог разместить все код.)
private void FixedUpdate()
{
MovePlayer();
}

private void Update()
{
grounded = GetComponent().grounded;
MyInput();
SpeedControl();

if (grounded)
{
rb.linearDamping = groundDrag;
} else
{
rb.angularDamping = 0;
rb.linearDamping = 0;
}

}

private void MyInput()
{
horizontalInput = Input.GetAxisRaw("Horizontal");
verticalInput = Input.GetAxisRaw("Vertical");

if(Input.GetKey(jumpKey) && readyToJump && grounded)
{
readyToJump = false;
Jump();

Invoke(nameof(ResetJump), jumpCooldown);
}

if(Input.GetKey(sprintKey))
{
moveSpeed = 8;
} else
{
moveSpeed = 4;
}
}

private void MovePlayer()
{
moveDirection = orientation.forward * verticalInput + orientation.right * horizontalInput;

if(grounded)
{
rb.AddForce(moveDirection.normalized * moveSpeed * 10f, ForceMode.Force);
}
else if(!grounded)
{
rb.AddForce(moveDirection.normalized * moveSpeed * 10f * airMultiplier, ForceMode.Force);
}

}

private void SpeedControl()
{
Vector3 flatVel = new Vector3(rb.linearVelocity.x, 0f, rb.linearVelocity.z);

if (flatVel.magnitude > moveSpeed)
{
Vector3 limitedVel = flatVel.normalized * moveSpeed;
rb.linearVelocity = new Vector3(limitedVel.x, rb.linearVelocity.y, limitedVel.z);
}
}
}



Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-motion
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»