[英]How to Dynamically script viewport rect in unity
我想根据屏幕三个角落的车辆ID和右上角的主摄像头视图统一动态分配3架飞机的显示。 我只是不确定如何将视口矩形脚本作为相机预制件的一部分。
为此,您必须搜索 camera.rect 并且可以使用基本 if 语句动态分配它。
using UnityEngine;
// Change the width of the viewport each time space key is pressed
public class ExampleClass : MonoBehaviour
{
private Camera cam;
void Start()
{
cam = Camera.main;
}
void Update()
{
if (Input.GetKey("space"))
{
// choose the margin randomly
float margin = Random.Range(0.0f, 0.3f);
// setup the rectangle
cam.rect = new Rect(margin, 0.0f, 1.0f - margin * 2.0f, 1.0f);
}
}
}
在 api 中搜索 Camera.rect 以查找文档。
这是您可以使用的简单 if 语句
private void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.Space))
SplitScreen();
}
public void SplitScreen()
{
if (StateQueue.TryDequeue(out var stateMsg))
if (stateMsg.ID == 9)
{
// choose the margin randomly
float margin = Random.Range(0.0f, 0.3f);
// setup the rectangle
sensorCamera.rect = new Rect(margin, 0.25f, 1.0f - margin * 2.0f, 0.25f);
MainCamera.rect = new Rect(margin, 0.50f, 0.0f - margin * 2.0f, 0.25f);
}
else if (stateMsg.ID == 10)
{ // choose the margin randomly
float margin = Random.Range(0.0f, 0.3f);
// setup the rectangle
sensorCamera.rect = new Rect(margin, 0.25f, 0.0f - margin * 2.0f, 0.25f);
MainCamera.rect = new Rect(margin, 0.50f, 0.0f - margin * 2.0f, 0.25f);
}
else if (stateMsg.ID == 11)
{
// choose the margin randomly
float margin = Random.Range(0.0f, 0.3f);
// setup the rectangle
sensorCamera.rect = new Rect(margin, 0.25f, 0.25f - margin * 2.0f, 0.25f);
MainCamera.rect = new Rect(margin, 0.50f, 0.0f - margin * 2.0f, 0.25f);
}
else
{
Debug.Log("this didnt work");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.