Vector3: переменные как координаты - PullRequest
0 голосов
/ 03 ноября 2018

Переменные как координаты Vector3 ... Это часть скрипта на пустом игровом объекте, который рисует квад и луч. Я могу нарисовать квад, и я могу нарисовать луч. Я могу перемещать этот луч вручную, печатая поплавки в Vector3. Почему я не могу использовать "planeWidth" или "planeHeight" вместо цифр в моем Vector3? Я получаю ошибки, просто определяя строку "public Vector3 rayA1Pos ...".

//Define my Quad
    public float planeWidth = 24f;
    public float planeHeight = 34.5f;
//Declare rayA1
    private Ray rayA1;
    private RaycastHit hitA1;
    public float rayDistance = 150f;
//rayA1's Vector3 coordinate at top-right corner of Quad
 public Vector3 rayA1Pos = new Vector3( (**planeWidth**/2), (planeHeight/2), 0f);

Просто чтобы показать пример использования, это работает: rayA1 = новый луч (transform.position + new Vector3 (0f, 150f, 0f), transform.forward);

Но почему это не работает:

    rayA1 = new Ray(transform.position + rayA1Pos, transform.forward);

или это?

ray1 = new Ray(transform.position + new Vector3(planeWidth, planeHeight, 0f), transform.forward)

Еще раз, "planeWidth" и "planeHeight" выдают ошибки, когда я помещаю их внутрь в качестве координат Vector3. Спасибо за прочтение. Это мои первые поты, но я нашел кучу интересных вещей на этом форуме, так что я уже должен вам большое спасибо! Том Г.

1 Ответ

0 голосов
/ 03 ноября 2018

Я полагаю, вы получаете следующую ошибку:

Инициализатор поля не может ссылаться на нестатическое поле, метод или свойство

Вы не можете использовать переменные для инициализации других переменных так, как вы хотите в вашей глобальной области видимости. Вам придется изменить planeWidth и planeHeight на статические. Обычно вы делаете инициализацию в конструкторах классов. В Unity3D с MonoBehaviour вы обычно делаете это методом Start() или Awake().

Сделайте это вместо:

public float planeWidth = 24f;
public float planeHeight = 34.5f;
public Vector3 rayA1Pos;

void Start()
{
   rayA1Pos = new Vector3((planeWidth/2), (planeHeight/2), 0f);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...