Как использовать transform.localEularAngles в Unity - PullRequest
0 голосов
/ 26 марта 2020

Здравствуйте, я новичок в Unity и пытаюсь сделать простой 3D шутер от первого лица. Для этого я пытаюсь заставить камеру следовать за курсором мыши. Для этого я хочу использовать набор localEularAngles в соответствии с вращением, генерируемым мышью.

Ниже приведен код моего скрипта CameraController:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraController : MonoBehaviour
{
    public float maximumY = 360f;
    public float minimumY = -360f;
    public float maximumX = 60f;
    public float minimumX = -60f;

    public float sensitivityX = 15f;
    public float sensitivityY = 15f;

    public Camera cam;

    float rotationY;
    float rotationX;

    float offset;

    // Start is called before the first frame update
    void Start()
    {
        offset = cam.transform.position.y - transform.position.y;
    }

    // Update is called once per frame
    void Update() {

        rotationY += Input.GetAxis  ("Mouse X") * sensitivityY;
        rotationX += Input.GetAxis  ("Mouse Y") * sensitivityX;

        rotationX = Mathf.Clamp(rotationX, minimumX, maximumX);

        transform.localEularAngles = new Vector3(0, rotationY, 0);

        cam.transform.localEularAngles = new Vector3(-rotationX, rotationY, 0);

        cam.transform.position = new Vector3(cam.transform.position.x, 
        cam.transform.position.y + offset, cam.transform.position.z);
    }
}

Идея, лежащая в основе этого, взята из руководства по этой ссылке: https://www.mvcode.com/lessons/first-person-camera-controls-jamie

Однако при попытке компиляции я получаю сообщение об ошибке: Assets \ CameraController.cs (36,31): ошибка CS1061: «Преобразование» не содержит определения для «localEularAngles» и отсутствует доступный метод расширения «localEularAngles», принимающий Первый аргумент типа «Преобразование» может быть найден (вам не хватает директивы using или ссылки на сборку?)

Ошибка возникает в обоих местах, где я использую transform.localEularAngles. На самом деле я не нашел способа написать transform.localEularAngles таким образом, чтобы компилироваться, что привело меня к мысли, что это может быть устаревшим, но, скорее всего, я упускаю что-то фундаментальное.

1 Ответ

0 голосов
/ 26 марта 2020

Просто простая орфографическая ошибка, должна быть localEulerAngles.

transform.localEulerAngles = new Vector3(0, rotationY, 0);

cam.transform.localEulerAngles = new Vector3(-rotationX, rotationY, 0);

cam.transform.position = new Vector3(cam.transform.position.x, 
cam.transform.position.y + offset, cam.transform.position.z);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...