Как заставить камеру следовать за вращающимся шаром сзади? - PullRequest
0 голосов
/ 29 октября 2019

Я использую Unity 2018.3.5f1, поэтому некоторые решения этой проблемы не работают.

Начиная с демонстрационного проекта Roll-A-Ball, я хочу расширить скрипт камеры, чтобы следовать за игроком, но также отслеживая направление движения. Пример: если мяч начинает двигаться в сторону, мне нужно, чтобы камера вращалась вокруг оси игрока, чтобы расположиться позади него, а затем начать следовать за ним.

Я пытался сделать камеру ребенком мячом. Я пытаюсь контролировать, и я пытался сделать сценарий, но он не будет правильно следовать за мячом, он продолжает вращать камеру и мяч (я использую этот фрагмент кода и пытаюсь изменить его, так как это единственныйтот, который работает)

вот код, который у меня есть на данный момент:

using UnityEngine;
using System.Collections;

public class CompleteCameraController : MonoBehaviour
{

    public GameObject player;        //Public variable to store a reference to the player game object


    private Vector3 offset;            //Private variable to store the offset distance between the player and camera

    // Use this for initialization
    void Start()
    {
        //Calculate and store the offset value by getting the distance between the player's position and camera's position.
        offset = transform.position - player.transform.position;
    }

    // LateUpdate is called after Update each frame
    void LateUpdate()
    {
        // Set the position of the camera's transform to be the same as the player's, but offset by the calculated offset distance.
        transform.position = player.transform.position + offset;
    }                                                                         
}

Я понимаю, почему он вращается, но никакие исследования не помогают мне узнать, как заблокировать камеру, чтобы онапостоянно смотрит за мячом

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Вы пытались добавить некоторые ограничения на вашу камеру? Если он должен поворачиваться, чтобы следовать за мячом, вы можете заморозить положение двух осей (x и z) и позволить камере вращаться только вокруг оси y шара.

Вы можете поиграться с ограничениями в Инспекторе или использовать GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeRotationX; в скрипте камеры.

(РЕДАКТИРОВАТЬ) Извините, это то, что вы сделали бы, если gameObject имееттвердое тело, но идея та же, если у него его нет.

Когда вы устанавливаете положение или поворот камеры, подумайте, какие компоненты положения / вращения вы действительно хотите изменить (х, у, г). Используйте offset = new Vector3 (offset.x, offset.y, offset.z) и замените все, что не должно изменяться, на постоянную.

Кроме того, когда вы сделали камеру дочерним элементом мяча, вы могли бы установить ее так, чтобы каждый кадр обновлялся камерой таким образом. способ, которым это не катится с шаром. Вы можете сделать это, поместив код в метод обновления камеры, который устанавливает компонент x, y или z равным некоторой константе. Независимо от того, на какой оси находится наземная плоскость, это, вероятно, правильный выбор.

0 голосов
/ 29 октября 2019

Если вы хотите использовать тот же угол наклона камеры, которым должна следовать камера во время следования за мячом (аналогично Temple Run), попробуйте следующий код:

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

public class CompleteCameraController : MonoBehaviour
{
    public Transform Player;
    public float distanceFromObject = 3f;
    void Update()
    {
        Vector3 lookOnObject = Player.position - transform.position;
        lookOnObject = Player.position - transform.position;
        transform.forward = lookOnObject.normalized;
        Vector3 playerLastPosition;
        playerLastPosition = Player.position - lookOnObject.normalized * distanceFromObject;
        playerLastPosition.y = Player.position.y + distanceFromObject / 2;
        transform.position = playerLastPosition;
    }

Когда мяч перемещается влево или вправо,камера движется под тем же углом, что и шарик.

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