@NeznaykaVshapke

Отчего ошибка 'LineRenderer' does not contain a definition for 'positionCount'?

Создаю 2D платформер, сейчас стоит задача сделать прорисовку линии полёта гранаты. Для этого создал пустой объект, на него добавил элемент LineRenderer и в коде этого объекта пишу следующее:
private LineRenderer lineRendererComponent;

private void Start()
{
    lineRendererComponent = GetComponent<LineRenderer>();
}
public void ShowTraectory(Vector2 origin, Vector2 speed)
{
    Vector3[] points = new Vector3[40];
    lineRendererComponent.positionCount = points.Length;
    for (int i = 0; i < points.Length; i++)
    {
        float t = i * 0.1f;
        points[i] = origin + speed * t + Physics2D.gravity * t * t / 2f;
    }
    lineRendererComponent.SetPosition(points);
}


Здесь origin - положение игрока (начальное положение гранаты), speed - скорость гранаты.
По идее, должно работать. Но выдается ошибка:
'LineRenderer' does not contain a definition for 'positionCount' and no accessible extension method 'positionCount' accepting a first argument of type 'LineRenderer' could be found (are you missing a using directive or an assembly reference?)

И выделяется в VS красным: "positionCount" и "SetPosition"
Если кто-то знает, как можно исправить, буду крайне благодарен, уже долго мучаюсь над этой ошибкой!!! Или, может быть, можно сделать прорисовку линии каким-то другим способом...
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
'LineRenderer' does not contain a definition for 'positionCount'
Вероятно проблема с VS, т.к. код в норме.

И выделяется в VS красным: "positionCount" и "SetPosition"
Читайте внимательно в таких случаях документацию, какие именно методы у класса и как ими пользоваться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@NeznaykaVshapke Автор вопроса
Наконец-то нашёл решение ошибки.
Необходимо было показывать UNITY, что LineRenderer это не просто придуманное мной название, а компонент системы: UnityEngine.LineRenderer
public class TraectoryRenderer : MonoBehaviour
{
private UnityEngine.LineRenderer lineRendererComponent;

    private void Start()
    {
        lineRendererComponent = GetComponent<UnityEngine.LineRenderer>();
    }
    public void ShowTraectory(Vector2 origin, Vector2 speed)
    {
        Vector3[] points = new Vector3[40];
        lineRendererComponent.positionCount = points.Length;
        for (int i = 0; i < points.Length; i++)
        {
            float t = i * 0.1f;
            points[i] = origin + speed * t + Physics2D.gravity * t * t / 2f;
            lineRendererComponent.SetPosition(i,points[i]);
        }
        
    }
    
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы