Мне нужна моя камера, чтобы можно было смотреть вверх и вниз - PullRequest
0 голосов
/ 17 марта 2020

Я недавно начал изучать 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);
        }
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...