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

Unity делает вещи

да да Ученик (64), на голосовании 4 месяца назад
при создании игры на юнити при написании скрипта по передвижению камеры за персонажем вылезает такая ошибка:
UnityException: Tag: player is not defined.
MoveCamera.FindPlayer (System.Boolean CatIsLeft) (at Assets/Scripts/CameraControl.cs:20)
MoveCamera.Start () (at Assets/Scripts/CameraControl.cs:15)

Что делать ума не приложу, всё перепробовал, подскажите пожалуйста вот сам код:using System;
using UnityEngine;

public class MoveCamera : MonoBehaviour
{
public float dumping = 1.5f;
public Vector2 offset = new Vector2(2f, 1f);
public bool isLeft;
private Transform cat;
private int lastX;

void Start()
{
offset = new Vector2(Mathf.Abs(offset.x), offset.y);
FindPlayer(isLeft);
}

public void FindPlayer(bool CatIsLeft)
{
cat = GameObject.FindGameObjectWithTag("player").transform;
lastX = Mathf.RoundToInt(cat.position.x);
if (CatIsLeft)
transform.position = new Vector3(cat.position.x - offset.x, cat.position.y - offset.y, transform.position.z);
else
transform.position = new Vector3(cat.position.x + offset.x, cat.position.y + offset.y, transform.position.z);
}

void Update()
{
if (cat)
{
int currentX = Mathf.RoundToInt(cat.position.x);
if (currentX > lastX) isLeft = false; else if (currentX < lastX) isLeft = true;
lastX = Mathf.RoundToInt(cat.position.x);
Vector3 target;
if (isLeft)
{
target = new Vector3(cat.position.x - offset.x, cat.position.y - offset.y, transform.position.z);
}
else
{
target = new Vector3(cat.position.x + offset.x, cat.position.y + offset.y, transform.position.z);
}
Vector3 Position = Vector3.Lerp(transform.position, target, dumping * Time.fixedDeltaTime);
transform.position = Position;
}
}
}
Голосование за лучший ответ
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (157215) 5 месяцев назад
GPT-4o
Ошибка `UnityException: Tag: player is not defined` указывает на то, что в вашей сцене отсутствует объект с тегом "player". Чтобы исправить эту ошибку, выполните следующие шаги:

1. **Добавьте тег "player" в Unity:**
- Откройте Unity и выберите объект, который должен быть персонажем, за которым будет следить камера.
- В инспекторе (Inspector) найдите поле `Tag` и щелкните на него.
- В раскрывающемся списке выберите "Add Tag...".
- Нажмите на символ "+" в верхнем правом углу и добавьте новый тег с именем "player".
- Вернитесь к вашему объекту и присвойте ему этот новый тег "player".

2. **Проверьте правильность написания тега:**
- Убедитесь, что тег написан точно так же, как в скрипте, т.е. "player" с маленькой буквы. Любое расхождение в регистре букв вызовет ошибку.

3. **Убедитесь, что объект с тегом "player" существует в сцене:**
- Убедитесь, что объект с тегом "player" действительно присутствует в вашей игровой сцене перед запуском игры.

После выполнения этих шагов ошибка должна исчезнуть, и скрипт будет работать корректно.
creakdowndeadly Мастер (1091) 5 месяцев назад
Привет.

Тебе нужно объекту Player, неважно prefab или объект на сцене - добавить тэг 'player'.
А так я тебе не рекомендую использовать Find по тэгу игрока.

Ты можешь просто задать как GameObject игрока в скрипт камеры и в инспектор (справа окно) для слежки.
Похожие вопросы