Как я могу реализовать вид от первого лица? - PullRequest
0 голосов
/ 24 января 2019

Я сейчас следую этому уроку: https://unity3d.com/learn/tutorials/projects/roll-ball-tutorial/moving-camera?playlist=17141

Мне удалось реализовать кнопку просмотра камеры от третьего лица, но у меня возникли проблемы с выяснением, как сделать то же самое для вида камеры от первого лица. Ниже приведен скрипт управления камерой, который я прикрепил к основной камере:

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

public class cameraControls : MonoBehaviour
{
    public GameObject player;
    private Vector3 offset;
    public bool thirdPerson;
    public bool firstPerson;

    void OnGUI()
    {
        // 3rd person camera view
        if (GUI.Button(new Rect(20, 50, 140, 40), "3rd Person Camera"))
        {
            thirdPerson = true;
        }

        // 1st person camera view
        if (GUI.Button(new Rect(20, 110, 140, 40), "1st Person Camera"))
        {
            firstPerson = false;
        }
    }

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

    // Update is called once per frame
    void Update()
    {
        if (thirdPerson == true)
        {
            transform.position = player.transform.position + offset;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вы можете использовать одну камеру и изменять ее положение в зависимости от того, какой угол обзора должен быть активным.Попробуйте связать два пустых объекта как children с вашим объектом проигрывателя и добавить ссылку на них в ваш скрипт (ваша камера также должна быть дочерним элементом вашего проигрывателя, чтобы это работало),Затем перетащите их из иерархии в инспектор и просто переключайтесь между этими позициями следующим образом:

public Transform firstPersonPosition;
public Transform thirdPersonPosition;
public Camera camera;

private void GoFirstPerson()
{
    camera.transform.position = firstPersonPosition.position;
}
private void GoThirdPerson()
{
    camera.transform.position = thirdPersonPosition.position;
}

Вы можете в основном использовать их в качестве «путевых точек» для вашей камеры, чтобы перейти к.

// Edit: если у вас возникли проблемы с пониманием того, как ваш код влияет на ваши GameObjects в режиме Play, просто переключитесь на Scene View во время игры и посмотрите на ваши объекты и их местоположение.сцена.Бьюсь об заклад, ваша камера от первого лица находится где-то в вашей модели игрока, потому что вы устанавливаете ее положение в положение ваших игроков.

0 голосов
/ 24 января 2019

Хорошо, хотя для такого небольшого учебника это может быть хорошо: вы не должны использовать GUI и OnGUI для игрового интерфейса.Unity выпустила в версии 4.6 (несколько лет назад) лучшую систему пользовательского интерфейса.

Вы можете иметь 2 камеры: одну для третьего лица, одну для первого лица.при нажатии одной из ваших кнопок вы отключаете одну камеру и включаете другую.


на основе ваших правок:

у вас в настоящее время есть 2 переменные bool, одна для "firstPerson", однадля "третьего человека" это избыточно.

что вы делаете, если оба факта верны?или оба ложные?просто есть одна переменная, например, "thirdPerson" true -> использовать 3-го лица, false -> использовать 1-го лица.

также я вижу, что вы решили изменить положение камер вместо использования 2 камер.это также возможный способ достижения вашей цели

...