Как исправить скрипт камеры?

На сцене есть игрок Player.
На сцене есть камера Main Camera - камера созданная автоматически при создании новой сцены.
К камере подключен скрипт
using UnityEngine;
using System.Collections;

public class CameraFollowXJumpY : MonoBehaviour
{
private float cameraHeight;
private GameObject player;
private Transform playerTransform;
private float playerCapsuleCollider2DSizeY;
private Vector3 cameraOffset;

void Start()
{
player = GameObject.Find("Player"); 
playerTransform = player.GetComponent<Transform>();
playerCapsuleCollider2DSizeY = playerTransform.GetComponent<CapsuleCollider2D>().size.y;

// Изначально камера стоит на координатах x=координате игрока (для того чтобы при слежении игрок всегда был в центре камеры) y=0.
transform.position = new Vector3(playerTransform.position.x, 0f, transform.position.z);

cameraHeight = GetComponent<Camera>().orthographicSize;
cameraOffset = transform.position - playerTransform.position;
}


void Update()
{
// Код передвижения камеры по оси x 
Vector3 targetCamPos = new Vector3(playerTransform.position.x + cameraOffset.x, transform.position.y, transform.position.z);
transform.position = Vector3.Lerp(transform.position, targetCamPos,  0);
 transform.position = targetCamPos;
}

}

При передвижении игрока камера следует за ним по горизонтали. Все работает.

Далее я беру камеру и перетаскиваю - делаю её вложенным объектом в игрока. Теперь Main Camera вложена в Player.
Запускаю игру.
Если игрок стоит - камера отображает сцену - всё хорошо. Как только игрок начинает движение (срабатывает скрипт), камера отображает фон, установленный у неё в свойстве Background.
Как это исправить?
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Я так понимаю, камеру дочерней сделали вы, чтобы всё спавнить вместе? Если я угадал, тогда вы прямо в префабе можете руками сделать ссылку на игрока, а затем на старте этого скрипта просто вызвать
transform.parent = null;
Чтобы отправить камеру в свободное плавание, что и предполагается скриптом слежки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Figma-designer
@Figma-designer
Когда камера вложена в объект игрока, она меняет свои позиции относительно игрока, а не мира. Соответственно, когда игрок не в 0, то камера будет отдаляться от игрока и показывать что-то совсем другое.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы