自己琢磨的一个按C键摄像机变化代码程序,如下:
public class Cameras : MonoBehaviour
{
//定义3个摄像机相对于Player的Vector3变量
private Vector3 mainCameraOffset = new Vector3(0, 4, -6.5f);
private Vector3 leftCameraOffset = new Vector3(-1.7f, 0.9f, 0);
private Vector3 topCameraOffset = new Vector3(0, 300, 0);
public GameObject player;
public Camera[] cameras;
public int cameraIndex = 0;
// Start is called before the first frame update
void Start()
{
player = GameObject.Find("Player");
//设置0号摄像机可用,其他不可用
cameras[cameraIndex].enabled = true;
for (cameraIndex += 1; cameraIndex < cameras.Length; cameraIndex++)
{
cameras[cameraIndex].enabled = false;
}
cameraIndex = 0;
}
// Update is called once per frame
void Update()
{
//如果按下C键,cameraIndex自增
if (Input.GetKeyDown(KeyCode.C))
{
cameraIndex++;
//如果cameraIndex为最后一个摄像机索引,则循环到0号摄像机
if (cameraIndex == cameras.Length)
{
cameraIndex = 0;
cameras[cameras.Length - 1].enabled = false;
}
//按下C键下一个摄像机设置为可用
cameras[cameraIndex].enabled = true;
//如果cameraIndex不为0,则设置上一个摄像机不可用
if (cameraIndex != 0)
{
cameras[cameraIndex - 1].enabled = false;
}
}
}
void LateUpdate()
{
//按照不同的摄像机设置相对于Player的位置
switch (cameraIndex)
{
case 0:
Camera.main.transform.position = player.transform.position + mainCameraOffset;
break;
case 1:
Camera.main.transform.position = player.transform.position + leftCameraOffset;
break;
case 2:
Camera.main.transform.position = player.transform.position + topCameraOffset;
break;
default:
break;
}
}
}
其中Sence需创建一个Empty Gameobject为CameraManager,如图:

同时所有的Camera tag需设置为"MainCamera",同默认的MainCamera一致。
本文分享了一段Unity脚本代码,实现通过按下C键在第一人称、左侧面和顶视图三个摄像机视角之间的循环切换。代码详细定义了摄像机相对于玩家位置的偏移,并在每帧更新中检查按键输入,实现摄像机的动态切换。
1086

被折叠的 条评论
为什么被折叠?



