Как я могу заставить камеру игнорировать ось у, пока игрок прыгает, используя Cinemachine в Unity2D? - PullRequest
0 голосов
/ 19 января 2020

Добрый день, я делаю 2D платформерную игру и пытаюсь заставить камеру следить за игроком. Но игнорируйте ось Y, поэтому, когда игрок прыгает, камера остается на месте, а не следует за игроком.

Пример (см. Демонстрационную версию пакета активов): https://ansimuz.itch.io/gothicvania-church-pack

Как это сделать с помощью Cinemachine?

1 Ответ

0 голосов
/ 20 января 2020

Вам не нужно переопределять значение Y камеры в скрипте контроллера камеры. Это будет очень базовая c реализация:

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour {

public GameObject player;        //Public variable to store a reference to the player game object
public bool followY = false;

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.
        if(followY)
          {
          transform.position = player.transform.position + offset; // we should follow the player Y movements, so we copy the entire position vector
          }
        else
          {
          transform.position = new Vector3(player.transform.position.x, transform.position.y, player.transform.position.z) + offset; // we just copy the X and Z values
          }
    }
}

Прикрепите этот скрипт к камере, и вы можете включить или отключить движение по оси Y, установив соответствующий логический параметр. Если вам никогда не понадобится эта функциональность, просто оставьте строку в блоке else.

Надеюсь, это вам поможет!

...