Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Создание игры юнити

pro provlt Знаток (478), на голосовании 4 месяца назад
В чем проблема, камера сидит только на одно объекте, а на новых перекидываться не хочет
Вот пример моего кода
(using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraFloww : MonoBehaviour
{
public Transform player; // Цель, за которой должна следить камера

void Update()
{
if (player != null)
{
// Обновляем позицию камеры по осям X и Y
transform.position = new Vector3(player.position.x, player.position.y, transform.position.z);
}
}

// Вызовите этот метод, чтобы изменить цель камеры
public void ChangeTarget(Transform NewPlayer)
{
player = NewPlayer;
}
})
Голосование за лучший ответ
Денис Родыгин Ученик (37) 5 месяцев назад
Заставь просто
pro provltЗнаток (478) 5 месяцев назад
оч смешно
Татьяна Просветленный (36374) 5 месяцев назад
Проблема может заключаться в том, что метод ChangeTarget не вызывается, либо новый объект, который передается в качестве цели, не является корректным или его позиция не обновляется.
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class CameraFloww : MonoBehaviour
{
public Transform player; // Цель, за которой должна следить камера
public float smoothSpeed = 0.125f; // Скорость сглаживания
public Vector3 offset; // Смещение камеры относительно цели

void LateUpdate()
{
if (player != null)
{
Vector3 desiredPosition = player.position + offset;
Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
transform.position = smoothedPosition;
}
}

// Вызовите этот метод, чтобы изменить цель камеры
public void ChangeTarget(Transform newPlayer)
{
player = newPlayer;
}
}
В этом коде добавлено сглаживание движения камеры с помощью Vector3.Lerp, что делает переход камеры более плавным. Также добавлено смещение offset, чтобы камера не находилась точно на позиции игрока, а была на небольшом расстоянии.

Убедитесь, что метод ChangeTarget вызывается корректно и передается правильный объект. Например:
 public class GameManager : MonoBehaviour 
{
public CameraFloww cameraFloww;
public Transform newPlayer;

void Start()
{
// Пример вызова метода для смены цели камеры
cameraFloww.ChangeTarget(newPlayer);
}
}
Похожие вопросы