C#

Пишет The name 'lastX' does not exist in the current context подскажите пжл что делать.ЮНИТИ

Пишет The name 'lastX' does not exist in the current context подскажите пжл что делать
вот сам скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraControl : MonoBehaviour
{
public float dumping = 1.5f;
public Vector2 offset = new Vector2(2f, 1f);
public bool isLeft;

private Transform player;
private int last;

[SerializeField]
float leftlimit;
[SerializeField]
float rightLimit;
[SerializeField]
float bottomLimit;
[SerializeField]
float upperLimit;

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;

}

transform.position = new Vector3
(
Mathf.Clamp(transform.position.x, leftlimit, rightLimit),
Mathf.Clamp(transform.position.y, bottomLimit, upperLimit),
transform.position.z

);
}
}
Нет у вас переменной lastX, есть только поле last:
 private int last; 
Наверное, должно быть так:
 private int lastX; 
Павел Вишневский
Павел Вишневский
93 561
Лучший ответ
Борис Эдуардов Понял,спасибо
А где у тебя описан этот lastX? Чой-то я слепой стал совсем, не вижу...
ДД
Дэн Дэн
85 197
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;

public class CameraControl : MonoBehaviour
{
public float dumping = 1.5f;
public Vector2 offset = new Vector2(2f, 1f);
public bool isLeft;

private Transform playerTransform; // добавлена declartion playerTransform
[Header("Player")]
private int lastX; // добавлены Header и declartion lastX

[Range(-180, 180)]
[Tooltip("left limit of camera movement")]
public float leftLimit;

[Range(-180, 180)]
[Tooltip("right limit of camera movement")]
public float rightLimit;

[Range(-90, 90)]
[Tooltip("bottom limit of camera movement")]
public float bottomLimit;

[Range(-90, 90)]
[Tooltip("top limit of camera movement")]
public float topLimit;

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

public void FindPlayer(bool playerIsLeft)
{
playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
lastX = Mathf.RoundToInt(playerTransform.localPosition.x);
if (playerIsLeft)
{
transform.localPosition = new Vector3(playerTransform.localPosition.x - offset.x, playerTransform.localPosition.y - offset.y, transform.localPosition.z);
}
else
{
transform.localPosition = new Vector3(playerTransform.localPosition.x + offset.x, playerTransform.localPosition.y + offset.y, transform.localPosition.z);
}
}

void Update ()
{
if (playerTransform)
{
int currentX = Mathf.RoundToInt(playerTransform.localPosition.x);
if (currentX > lastX) isLeft = false;
else if (currentX < lastX) isLeft = true;
lastX = Mathf.RoundToInt(playerTransform.localPosition.x);

Vector3 target;
if (isLeft)
{
target = new Vector3(playerTransfor