Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Uniti 2D C# - Запись координат Position в переменную и дальнейшая работа с переменной.

Алексей А Ученик (117), на голосовании 3 месяца назад
Добрый день, уже неделю пытаюсь познать прелести скриптов в Uniti 2D и не могу понять, как правильно обратиться к transform.position и присвоить её значение переменной "pos1" (к примеру).

Как в скрипте объекта, создать переменную и присвоить ей position объекта для дальнейших математических расчетов или для передачи между скриптами?

Пример:
На сцене имеется объект и камера, требуется создать скрипт камеры, перемещающий камеру на координату объекта.

Так как планируется создавать больше объектов, на которые логически должна переключаться камера, в данном случае требуется именно узнать координату объекта, разумеется через скрипт этого объекта.
Как вывести координату в консоль я нашел
 Debug.Log(gameObject.transform.position); 
Но мне нужно именно присвоить её переменной, при попытке присвоить её переменной (в принципе как показано на многих сайтах с таким же вопросом) выдает ошибку:
 Assets\Scenes\CameraPos.cs(8,24): error CS0236: A field initializer cannot reference the non-static field, method, or property 'Component.gameObject'  
Голосование за лучший ответ
Алим Биджиев Ученик (151) 4 месяца назад
Если я правильно понял ты хочешь камеру которая будет перемещаться из одной точки в другую в нужный момент
public float x,y;
public GameObject НужныйОбъект;
void SmenaPos()
{
x = НужныйОбъект.transform.position.x;
y = НужныйОбъект.transform.position.y;
Vector2 f = new Vector2(x, y);
gameObject.transform.position = f;
}
И вызываешь SmenaPos() в нужный момент
Алексей АУченик (117) 4 месяца назад
Это не то что я планировал но ты очень помог, я думал может быть есть способ менее требовательный по ресурсам, но вот это заработало
 //Создаем переменные для записи
public static Vector3 PlayCamPos;
private float x,y, z;
 private void FixedUpdate(){
x = gameObject.transform.position.x;
y = gameObject.transform.position.y;
z = gameObject.transform.position.z;
Vector3 PlayerXY = new Vector3(x, y, z);

PlayCamPos = PlayerXY;
PlayerXY - соединяет получившиеся вектора
PlayCamPos - переносит полученное на другой скрипт
Так ошибок нет и все как по маслу.
Похожие вопросы