Почему камера подпрыгивает, когда луч попадает на объект?C#

Место общения программистов C#
Anonymous
Почему камера подпрыгивает, когда луч попадает на объект?

Сообщение Anonymous »

У меня проблема в Unity v2023: при использовании базового raycast из поля зрения камеры игрока, и когда я нажимаю на что-то нужное (определенный слой), камера перемещается сама по себе без причины.
Я нашел на YouTube парня, у которого тоже была такая проблема, вот видео:

просто поставьте 0:43, чтобы увидеть проблему.
Мой код очень прост:
public static PlayerViewTrigger Instance { get; private set; }

[SerializeField] private Transform viewTriggerPos;
private bool eleanorCamp;

private void Awake()
{
if (Instance != null && Instance != this) { Destroy(this); }
else { Instance = this; }
}

private void Update()
{
ViewTrigger();
}

private void ViewTrigger()
{
if (Physics.Raycast(viewTriggerPos.position, viewTriggerPos.TransformDirection(Vector3.forward), out RaycastHit hit, 50f))
{
if (hit.collider.CompareTag("EleanorCamp") && !eleanorCamp)
{
eleanorCamp = true;
SceneManager_02_Camp.Instance.EleanorSpot();
}
}
}

и скрипт SceneManager:
public void EleanorSpot()
{
BackgroundAudio.Instance.audioDarkForest.Play();
horrorAudioSource1.PlayOneShot(horrorAudioClip1);
Invoke("HideEleanor", 3f);

jessyWaterDialogTrigger.SetActive(false);
jessyWaterDialogStartTrigger.SetActive(false);
}

private void HideEleanor()
{
horrorAudioSource2.PlayOneShot(horrorAudioClip2);
fireParticles.SetActive(false);

eleanor.SetActive(false);
eleanorTrigger = false;

Invoke("JessyScream1", 5f);
}

private void JessyScream1()
{
ShowJessy(5);
jessy_bathroom1_AudioSource.PlayOneShot(jessy_scream1_AudioClip);
JessyGoesToBathroom_LimitMovementTrigger.SetActive(false);
Invoke("HenryShout1", .8f);
}

private void HenryShout1()
{
PlayerSounds.Instance.voiceAudioSource.PlayOneShot(PlayerSounds.Instance.jessyBathroom_2);
JessyGoesToBathroom_Scream2.SetActive(true);
}

Это код для поворота камеры (посмотрите)
private void PlayerCameraRotate()
{
rotationXAxis += Input.GetAxis(mouseYInput) * cameraSensitivity * Time.deltaTime;
rotationYAxis += Input.GetAxis(mouseXInput) * cameraSensitivity * Time.deltaTime;

rotationXAxis = Mathf.Clamp(rotationXAxis, -upDownLookRange, upDownLookRange + 20f);

hand.rotation = Quaternion.Euler(-rotationXAxis, rotationYAxis, 0f);

transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0f, rotationYAxis, 0f), cameraAcceleration * Time.deltaTime);
playerCamera.localRotation = Quaternion.Lerp(playerCamera.localRotation, Quaternion.Euler(-rotationXAxis, 0f, 0f), cameraAcceleration * Time.deltaTime);
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... -an-object

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