Изменить положение камеры, когда следует за игроком в единстве - PullRequest
0 голосов
/ 29 октября 2019

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

https://i.imgur.com/jQ6efAJ.png, как вы можете видеть, вы не можете видеть большую часть того, что находится перед игроком.

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

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

    public class CameraFollow : MonoBehaviour
{
public Transform playerObject;

public float distanceFromObject = 6f;
void Update()
{
    Vector3 lookOnObject = playerObject.position - transform.position;
    lookOnObject = playerObject.position - transform.position;
    transform.forward = lookOnObject.normalized;

    Vector3 playerLastPosition;
    playerLastPosition = playerObject.position - lookOnObject.normalized * distanceFromObject;

    playerLastPosition.y = playerObject.position.y + distanceFromObject / 2;
    transform.position = playerLastPosition;
}

Заранее спасибо за помощь. Это для школьного проекта, поэтому я очень надеюсь, что ваши решения великолепны и не могут дождаться, чтобы услышать от вас!

1 Ответ

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

Вы хотите добавить смещение к камере относительно положения взгляда камеры. То, что вам нужно сделать, это сместить playerObject.position, когда вы назначаете его lookOnObject.

Добавьте новый вектор 3 и назовите его lookOffset. Теперь он станет lookOnObject = (playerObject.position + lookOffset) - transform.position. Он будет действовать как контроль высоты тона для вашей камеры.

Используйте distanceFromObject для управления положением камеры z.

[EDIT]

Вот измененный скрипт, которыйЯ сделал. Как упоминалось выше, вам необходимо сместить положение, на которое будет смотреть камера. В этом сценарии вместо Vector3 я использовал float:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraFollow : MonoBehaviour { public Transform playerObject; // Управляет высотой камеры, в которой она вращается // по оси X public float pitchOffset = 0;

//Controls the yaw of the camera where it rotates
//in Y axis
public float yawOffset = 0;

public float distanceFromObject = 6f;
void Update()
{
    //Creation of the look offset relative to the
    //Observable position
    Vector3 lookOffset = playerObject.position;
    lookOffset.y += pitchOffset;
    lookOffset.x += yawOffset;

    Vector3 lookOnObject = playerObject.position - transform.position;
    //Replaced playerObject.position with lookOffset
    lookOnObject = lookOffset - transform.position;
    transform.forward = lookOnObject.normalized;


    Vector3 playerLastPosition;
    //Replaced playerObject.position with lookOffset
    playerLastPosition = lookOffset - lookOnObject.normalized * distanceFromObject;

    playerLastPosition.y = playerObject.position.y + distanceFromObject / 2;
    transform.position = playerLastPosition;
}

}

Это может быть сделано с Vector3 или Vector2, где вы сохраняете pitchOffset и yawOffset для полей x и y.

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