Я недавно начал изучать Unity, поэтому я все еще новичок ie, и мне нужно было, чтобы моя камера могла смотреть вверх и вниз, а не только перемещаться вокруг персонажа.
Я следовал многим учебникам, пытался адаптировать некоторые из них, и это код, над которым я работал, и мне не ясно, почему он не смотрит вверх и вниз
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraControls : MonoBehaviour
{
public float RotationSpeed;
public Transform Target, Player;
float mouseX, mouseY;
public Transform Obstruction;
float zoomSpeed = 2f;
void Start()
{
Obstruction = Target;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
void LateUpdate()
{
CamControl();
ViewObstructed();
}
void CamControl()
{
mouseX += Input.GetAxis("Mouse X") * RotationSpeed;
mouseY -= Input.GetAxis("Mouse Y") * RotationSpeed;
mouseY = Mathf.Clamp(mouseY, -35, 60);
transform.LookAt(Target);
Target.rotation = Quaternion.Euler(mouseY, mouseX, 0);
Player.rotation = Quaternion.Euler(0, mouseX, 0);
}
void ViewObstructed()
{
RaycastHit hit;
if(Physics.Raycast(transform.position, Target.position - transform.position, out hit, 4.5f))
{
if(hit.collider.gameObject.tag != "Player")
{
Obstruction = hit.transform;
if (Obstruction.gameObject.GetComponent<MeshRenderer>())
{
Obstruction.gameObject.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly;
if (Vector3.Distance(Obstruction.position, transform.position) >= 3f && Vector3.Distance(transform.position, Target.position) >= 1.5f)
{
transform.Translate(Vector3.forward * zoomSpeed * Time.deltaTime);
}
}
}
}else
{
Obstruction.gameObject.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
if (Vector3.Distance(transform.position, Target.position) < 4.5f)
{
transform.Translate(Vector3.back * zoomSpeed * Time.deltaTime);
}
}
}
}