【发布时间】:2021-08-24 22:04:40
【问题描述】:
我有一个脚本,玩家可以用鼠标控制相机。问题是玩家可以使用鼠标将其移动到下方,如下所示:
我不想要这个,我想在 Y 位置低于玩家 Y 位置时停止相机。
这是我的相机代码:
using System.Collections;
using UnityEngine;
public class CameraController : MonoBehaviour
{
private Vector3 offset;
public Transform player;
public float camPosX;
public float camPosY;
public float camPosZ;
public float camRotationX;
public float camRotationY;
public float camRotationZ;
public float turnSpeed;
private void Start()
{
offset = new Vector3(player.position.x + camPosX, player.position.y + camPosY, player.position.z + camPosZ);
transform.rotation = Quaternion.Euler(camRotationX, camRotationY, camRotationZ);
}
private void Update()
{
offset = Quaternion.AngleAxis(Input.GetAxis("Mouse X") * turnSpeed, Vector3.up) * Quaternion.AngleAxis(Input.GetAxis("Mouse Y") * turnSpeed, Vector3.right) * offset;
transform.position = player.position + offset;
transform.LookAt(player.position);
}
}
我已尝试通过检查相机 Y 位置是否小于玩家 Y 位置来解决此问题,如果是这样,我不会更新相机位置。
这是我用于此的代码:
private void Update()
{
offset = Quaternion.AngleAxis(Input.GetAxis("Mouse X") * turnSpeed, Vector3.up) * Quaternion.AngleAxis(Input.GetAxis("Mouse Y") * turnSpeed, Vector3.right) * offset;
if (!((player.position + offset).y < player.position.y))
{
transform.position = player.position + offset;
}
transform.LookAt(player);
}
这解决了主要问题,但有时会导致整个摄像机移动出现故障......就像有时它完全停止移动并且只是看着玩家而不是跟随它。像这样
我不知道如何解决这个问题,感谢任何帮助
【问题讨论】: