停止相机在 x 轴上移动

Stop camera from moving on x axis

所以我有一个火箭(玩家)在 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 轴,但这没有用。任何想法如何在脚本中执行此操作?谢谢!

P.S。我对脚本有点陌生,请告诉我如何实现额外的代码。

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

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);
}
}

这应该使相机只 up/down 与火箭一起移动,但不会在 x 轴或 z 轴上移动。如果这不是您想要实现的目标,请发表评论,我会看看

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

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

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