Можно ли изменить свойства у переменной типа GameObject?

я должен создавать объект на координатах 0x, 0y, 30z и чтобы он двигался к игроку (ну то есть к 0 по z), для этого я хочу обратиться к Rigidbody2d.vellocity, но вылезает ошибка т.к вызываю vellocity для GameObject (прошу ответить на вопрос в заголовке, можно или нельзя) вот код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Spawner : MonoBehaviour
{
    public GameObject circle;
    void Start()
    {
        StartCoroutine("spawn");
        circle = GetComponent<GameObject>();
        // строка снизу ошибку выдаёт
        circle.Rigidbody2D.vellocity = new Vector3(0, 0, -1);
    }

    private IEnumerator spawn()
    {
        Instantiate(_circle, new Vector3(0,0,30), Quaternion.identity);
        yield return new WaitForSeconds(5);
        StartCoroutine(spawn());
    }
}


Ответы (1 шт):

Автор решения: setagiSan

Вы можете получить доступ к любому компоненту объекта, но для этого вам потребуется ссылка на объект. Для этого стоит объявить новую переменную за функцией и заносить в неё ссылку на объект.


public class Spawner : MonoBehaviour {
    private GameObject circle;
    private Rigitbody2d rb;
    
    void Start() {
        StartCoroutine("spawn");
        rb = circle.GetComponent<Rigidbody2D>();
        rb.vellocity = new Vector3(0, 0, -1);
    }
    
    private IEnumerator spawn()
    {
        circle = Instantiate(_circle, new Vector3(0,0,30), Quaternion.identity);
        yield return new WaitForSeconds(5);
        StartCoroutine(spawn());
    }
}
→ Ссылка