【问题标题】:Stop camera from moving on x axis停止相机在 x 轴上移动
【发布时间】:2015-11-25 14:02:52
【问题描述】:

所以我有一个火箭(玩家)在 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 unity3d scripting perspectivecamera


    【解决方案1】:

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

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

    【讨论】:

    • 太好了,行得通!在您的代码中发现了一个错误,在最后 5 行中,您编写了新的 Vector。您需要 Unity 中的新 Vector3 :P 谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多