停止相机在x轴上移动

问题描述 投票:0回答:3

所以我有一个火箭(玩家)在 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 轴,但这不起作用。有什么想法如何在脚本中做到这一点吗?谢谢!

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

c# android unity-game-engine scripting perspectivecamera
3个回答
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 轴上移动。如果这不完全是您想要实现的目标,请发表评论,我会看一下


0
投票

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

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

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


0
投票

如果你想限制 X 轴上的移动,我之前写过这段代码,现在它可能对你有用:

float xRange = 20f;
public GameObject Camera;

if(Camera.transform.position.x > xRange)
{
   Camera.transform.position = new Vector3(xRange, Camera.transform.position.y, Camera.transform.position.z);
}else if(tramsform.position.x < -xRange)
{
   Camera.transform.position = new Vector3(-xRange, Camera.transform.position.y, Camera.transform.position.z);
}

您可以自定义 xRange 值以获得您想要的结果。对于这种情况,请将 xRange 设置为等于相机的 X 位置,以确保它永远不会在 X 轴上移动。事实上,我和你一样是一个初学者,我从来没有尝试过以这种方式使用这段代码,但是,我想这应该可行!

© www.soinside.com 2019 - 2024. All rights reserved.