Unity3d Unity使用另一个脚本的值和函数更改摄影机位置
我对Unity还很陌生,我正在努力理解为什么它不起作用。我要做的是用矢量3.Lerp将相机从当前相机位置移动到对象位置。我想从两个脚本中的函数中执行此操作。因此,我有两个脚本,一个用于摄影机,另一个用于多维数据集 这是相机的脚本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
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);
}
}
}