Камера не двигается за персонажем
код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cameraController : MonoBehaviour
{
public float dumping = 1.5f;
public Vector2 offset = new Vector2(2f, 1f);
public bool isLeft;
private transform Player;
private int lastX;
void Start(){
offset = new Vector2(Mathf.Abs(offset.x), offset.y);
FindPlayer(isLeft);
}
public void FindPlayer(bool playerisLeft)
{
player = GameObject.FindGameObjectWithTag("Player").transform;
lastX = Mathf.RoundToInt(player.position.x);
if (playerisLeft) {
transform.position = new Vector3(player.position.x - offset.x, player.position.y - offset.y, transform.position.z);
}else {
transform.position = new Vector3(player.position.x + offset.x, player.position.y + offset.y, transform.position.z);
}
}
void Update(){
if (player) {
int currentX = Mathf.RoundToInt(player.position.x);
if (currentX > lastX) isLeft = false; else if (currentX < lastX) isleft = true;
lastX = Mathf.RoundToInt(player.position.x);
Vector3 target;
if (isLeft) {
target = new Vector3(player.position.x - offset.x, player.position.y - offset.y, transform.position.z);
}
else {
target = new Vector3(player.position.x + offset.x, player.position.y + offset.y, transform.position.z);
}
Vector3 currentPosition = Vector3.Lerp(transform.position, target, dumping * Time.deltaTime );
transform.position = currentPosition;
}
}
}
ошибка:
The type or namespace name 'transform' could not be found (are you missing a using directive or an assembly reference?)
Ответы (3 шт):
transform - свойство
Transform - тип
И дело не в большой букве, а во внимательности
private transform Player;//заменить
private Transform Player;
Честно говоря, мне не очень нравятся такие вопросы, в которых даже нет вступления. Дана проблема, код, ошибка. Вы даже не написали в какой строке ошибка! Ну ладно, у вас не очень высокий опыт на StackVerflow, так что простительно.
Поподробнее разъясню ответ Valera Kvip.
Transform - это тип данных, как int, string, GameObject и так далее. Это один из основных компонентов, который есть у всех игровых объектов. Он включает в себя такие поля, как позиция XYZ, вращение XYZ, размер XYZ.
transform - это функция с помощью которой вы можете получить компонент Transform игрового объекта. Синтаксис: Игровой_объект.transform. Полученное значение можно упаковать в переменную, типа данных Transform.
ТАКИМ ОБРАЗОМ. Чтобы исправить ошибку вам нужно в 10 строке заменить
private transform Player;
на
private Transform Player;
Что бы камера двигалась за персонажем вообще не нужно никакого кода. Ни строчки.
Достаточно просто разместить в инспекторе обьект камеры внутрь обьекта персонажа после чего визуально отстроить положение камеры в пространстве. И все, камера будет следовать за персонажем.
Что до ошибки, то она явно указывает на то, что ты неправильно использовал transform.
А еще желательно поработать над неймингом переменных ибо сейчас все только заплутывает.