Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d Unity使用另一个脚本的值和函数更改摄影机位置_Unity3d_Camera_Position_Transform - Fatal编程技术网

Unity3d Unity使用另一个脚本的值和函数更改摄影机位置

Unity3d Unity使用另一个脚本的值和函数更改摄影机位置,unity3d,camera,position,transform,Unity3d,Camera,Position,Transform,我对Unity还很陌生,我正在努力理解为什么它不起作用。我要做的是用矢量3.Lerp将相机从当前相机位置移动到对象位置。我想从两个脚本中的函数中执行此操作。因此,我有两个脚本,一个用于摄影机,另一个用于多维数据集 这是相机的脚本 using UnityEngine; using System.Collections; public class CameraScript : MonoBehaviour { private Vector3 positionCamera; publ

我对Unity还很陌生,我正在努力理解为什么它不起作用。我要做的是用矢量3.Lerp将相机从当前相机位置移动到对象位置。我想从两个脚本中的函数中执行此操作。因此,我有两个脚本,一个用于摄影机,另一个用于多维数据集

这是相机的脚本

using UnityEngine;
using System.Collections;

public class CameraScript : MonoBehaviour {

    private Vector3 positionCamera;
    public Camera camera;

    void Start () {
        camera = GetComponent<Camera>();
        positionCamera = camera.transform.position;
    }

    void Update () {
        GoToTarget();
    }

    public void GoTo(Vector3 position)
    {
        positionCamera = Vector3.Lerp(positionCamera, position, Time.deltaTime);
    }

    public void GoToTarget()
    {
        Vector3 newpos = positionCamera;
        camera.transform.position = newpos;
    }
}
我从多维数据集脚本传递位置,并将其发送到摄影机脚本中的GoTo函数。然后相机应该使用Vector3.Lerp将相机移动到立方体的位置。然而,这不起作用

如何使用函数实现此功能? 我是否正确使用相机的translate.position?或者我应该先分配一个游戏对象吗


谢谢

我在CubeScript中编辑了位,并在按下空格键时检查它是否适合我。我为我改变的东西写了评论。。。经历它

using UnityEngine;
using System.Collections;

public class CubeScript : MonoBehaviour {   

    [SerializeField]
    private CameraScript cameraScript = null;// Changes here

    private GameObject cube;
    private Vector3 cubePosition;
    private Vector3 newPosition;

    void Start () {
        if (this.cameraScript == null) {
            this.cameraScript = this.gameObject.GetComponent<CameraScript>(); // Changes here
        }

        cube = this.gameObject;

        cubePosition = cube.transform.position;
        newPosition = transform.position;
    }

    // Update is called once per frame
    public void Update () {
        UpdatePosition();
    }

    public void UpdatePosition()
    {
        if (Input.GetKey(KeyCode.Space))
        {
            cameraScript.GoTo(newPosition);
        }
    }
}
使用UnityEngine;
使用系统集合;
公共类CubeScript:MonoBehavior{
[序列化字段]
私有CameraScript CameraScript=null;//此处更改
私有游戏对象立方体;
私有向量3立方位;
私有向量3新位置;
无效开始(){
if(this.cameraScript==null){
this.cameraScript=this.gameObject.GetComponent();//此处更改
}
cube=this.gameObject;
cubePosition=cube.transform.position;
newPosition=transform.position;
}
//每帧调用一次更新
公共无效更新(){
UpdatePosition();
}
public void UpdatePosition()
{
if(Input.GetKey(KeyCode.Space))
{
cameraScript.GoTo(newPosition);
}
}
}
从一个脚本到另一个脚本调用函数或变量等有不同的方法,我在这里的评论可以获得更多信息

using UnityEngine;
using System.Collections;

public class CubeScript : MonoBehaviour {   

    [SerializeField]
    private CameraScript cameraScript = null;// Changes here

    private GameObject cube;
    private Vector3 cubePosition;
    private Vector3 newPosition;

    void Start () {
        if (this.cameraScript == null) {
            this.cameraScript = this.gameObject.GetComponent<CameraScript>(); // Changes here
        }

        cube = this.gameObject;

        cubePosition = cube.transform.position;
        newPosition = transform.position;
    }

    // Update is called once per frame
    public void Update () {
        UpdatePosition();
    }

    public void UpdatePosition()
    {
        if (Input.GetKey(KeyCode.Space))
        {
            cameraScript.GoTo(newPosition);
        }
    }
}