停止相机在 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 设置为零(或您想要的任何其他值),然后将该向量设置为位置。
所以我有一个火箭(玩家)在 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 设置为零(或您想要的任何其他值),然后将该向量设置为位置。