C# 停止相机在x轴上移动

C# 停止相机在x轴上移动,c#,android,unity3d,scripting,perspectivecamera,C#,Android,Unity3d,Scripting,Perspectivecamera,所以我有一个火箭(玩家)在Y轴上飞行。我有一个相机,上面有一个脚本,跟在火箭后面: using UnityEngine; using System.Collections; public class CameraController : MonoBehaviour { public GameObject player; private Vector3 offset; // Use this for initialization void Start () { offset = tr

所以我有一个火箭(玩家)在Y轴上飞行。我有一个相机,上面有一个脚本,跟在火箭后面:

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour
{
public GameObject player;
private Vector3 offset;

// Use this for initialization
void Start () 
{
    offset = transform.position;
}



// Update is called once per frame
void LateUpdate () 
{
    transform.position = player.transform.position + offset;
}
}
如何阻止相机在x轴上移动?我只希望它沿着火箭的Y轴向上。我尝试添加一个刚体并在那里阻止X轴,但没有成功。有没有办法在脚本中实现这一点?谢谢大家!


另外,我对脚本编写有点陌生,请告诉我如何实现额外的代码。

好吧,将相机锁定在一个轴上的简单方法是将您上面提供的代码更改为:

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour
{
public GameObject player;
private Vector3 offset;

// Use this for initialization
void Start () 
{
    offset = transform.position;
}



// Update is called once per frame
void LateUpdate () 
{
    transform.position = new Vector(
    offset.x, player.transform.position.y + offset.y,
    offset.z);
}
}

这将使相机仅随火箭上升/下降,而不会在x轴或z轴上移动。如果这不是您想要实现的目标,请留下评论,我来看看

好吧,将您的相机锁定在一个轴上的简单方法是将您上面提供的代码更改为:

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour
{
public GameObject player;
private Vector3 offset;

// Use this for initialization
void Start () 
{
    offset = transform.position;
}



// Update is called once per frame
void LateUpdate () 
{
    transform.position = new Vector(
    offset.x, player.transform.position.y + offset.y,
    offset.z);
}
}

这将使相机仅随火箭上升/下降,而不会在x轴或z轴上移动。如果这不是你想要实现的,请留下评论,我来看看,

刚体对你没有帮助,因为在刚体中锁定轴只会忽略Unity物理学所称的运动,如果你想用刚体来处理它,你可以使用AddForce,但这一切都没有意义。最简单的方法就是像这样覆盖X值:

Vector3 newPosition = player.transform.position + offset;
newPosition.x = 0;
transform.position = newPosition;

这将计算新的位置,然后将X设置为零(或任何其他您想要的值),然后将该向量设置为位置。

刚体对您没有帮助,因为锁定刚体中的轴只会忽略Unity物理学调用的运动,如果你想通过刚体来处理它,你可以使用AddForce,但这样做没有意义。最简单的方法就是像这样覆盖X值:

Vector3 newPosition = player.transform.position + offset;
newPosition.x = 0;
transform.position = newPosition;

这将计算新的位置,然后将X设置为零(或任何其他您想要的值),然后将该向量设置为位置。

太好了,可以了!在代码中发现一个bug,在最后5行中,您编写了新的Vector。你需要统一的新矢量3:P谢谢!太好了,行了!在代码中发现一个bug,在最后5行中,您编写了新的Vector。你需要统一的新矢量3:P谢谢!