停止相机在x轴上移动

时间:2015-08-31 13:50:35

标签: 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 = transform.position;
}



// Update is called once per frame
void LateUpdate () 
{
    transform.position = player.transform.position + offset;
}
}

如何阻止相机在x轴上移动?我只希望它在Y轴上向上跟随火箭。我尝试添加一个刚体并在那里阻挡X轴但是没有用。任何想法如何在脚本中执行此操作?谢谢!

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

2 个答案:

答案 0 :(得分:0)

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

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轴上移动。如果这不是您想要达到的目的,请发表评论,我会看看

答案 1 :(得分:0)

RigidBody没有帮助你,因为锁定RigidBody中的轴只会忽略Unity物理调用的动作,如果你想通过RigidBody来处理它,你可以使用AddForce但是没有必要这么做。最简单的方法就是覆盖X值,如下所示:

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

计算新位置,然后将X设置为零(或任何其他所需的值),然后将该矢量设置为位置。