В первом я делаю движения кубика через кнопки. Координаты кубика вставляю в move .
Второй скрипт это камера... через скрипт я хочу привязать координаты камеры до кубика. что бы камера двигалась вместе з кубиком. Но суть проблемы что я никак не могу взять з первого скрипта координаты.
!!!(я знаю что камеру можна просто перетащить на кубик или использовать Синемашина)!!! Это я взял чисто для того что бы разобраться и научиться работать з передачей динамичных данных из одного скрипта в другой.
Первый скрипт. public Vector3 move; который я хочу взять и передать в второй скрипт.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class TransformFunctions : MonoBehaviour
{
public float moveSpeed = 10f;
public float turnSpeed = 50f;
public Vector3 move;
public Vector3 rotation;
void Update()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
float jump = Input.GetAxis("Jump");
float MouseX = Input.GetAxis("Mouse X");
float MouseY = Input.GetAxis("Mouse Y");
move = new Vector3(horizontal, jump , vertical);
rotation = new Vector3(- MouseY, MouseX );
transform.Translate(move * moveSpeed * Time.deltaTime);
transform.Rotate(rotation, turnSpeed * Time.deltaTime);
}
}
using System.Collections;
public class TransformFunctions : MonoBehaviour
{
public float moveSpeed = 10f;
public float turnSpeed = 50f;
public Vector3 move;
public Vector3 rotation;
void Update()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
float jump = Input.GetAxis("Jump");
float MouseX = Input.GetAxis("Mouse X");
float MouseY = Input.GetAxis("Mouse Y");
move = new Vector3(horizontal, jump , vertical);
rotation = new Vector3(- MouseY, MouseX );
transform.Translate(move * moveSpeed * Time.deltaTime);
transform.Rotate(rotation, turnSpeed * Time.deltaTime);
}
}
Второй скрипт.. Где я взятый из первого скрипта public Vector3 move; хочу вставить в координаты камеры. там где transform.Translate(moveCam);
using UnityEngine;
using System.Collections;
public class CameraLookAt : MonoBehaviour
{
public Transform target;
public Vector3 moveCam;
private TransformFunctions NewMoveCam;
void Start()
{
}
void Update()
{
NewMoveCam = new TransformFunctions(); <--------------------- Вот здесь проблема
moveCam = NewMoveCam.move;
transform.LookAt(target);
transform.Translate(moveCam);
Debug.Log("move" + moveCam);
}
}
Дает ошибку(предупреждение).
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor ()
TransformFunctions:.ctor () (at Assets/Scripts/Test/Expert/Move/TransformFunctions.cs:12)
CameraLookAt:Update () (at Assets/Scripts/Test/Expert/Move/CameraLookAt.cs:20)
Ну и координаты
move(0.0, 0.0, 0.0)
UnityEngine.Debug:Log (object)
CameraLookAt:Update () (at Assets/Scripts/Test/Expert/Move/CameraLookAt.cs:24)
Я читал про GetComponent и AddComponent. Но так и не понял как правильно надо написать, что бы оно заработало.
За раня благодарю.