【发布时间】:2018-04-14 16:09:07
【问题描述】:
我在 Unity 2017.4.0f1 上遇到了多个显示器的问题。我需要创建 3 个摄像头并在 3 个不同的监视器上显示它们的视口,并且效果很好。但是,当我尝试单击连接到另一个相机的另一个显示器上的对象时,单击对象不起作用。似乎点击只适用于具有MainCamera 标签的相机。
谁能帮我理解和解决这个问题?非常感谢。
编辑:这是点击代码:
Ray raycam;
RaycastHit hit;
Vector2 displayleft = new Vector2(-72, 0);
Vector2 displaycenter = new Vector2(1366, 0);
raycam = cam2.ScreenPointToRay(Input.mousePosition);
if (Input.mousePosition.x < displaycenter.x && Input.mousePosition.x > 0)
{
Debug.Log("1");
if (Input.GetKey(KeyCode.A))
{
instruction.text = "1";
}
raycam = cam1.ScreenPointToRay(Input.mousePosition);
}
else if (Input.mousePosition.x < displayleft.x)
{
if (Input.GetKey(KeyCode.A))
{
instruction.text = "2";
}
Debug.Log("2");
raycam = cam2.ScreenPointToRay(Input.mousePosition);
}
else if (Input.mousePosition.x > displaycenter.x)
{
if (Input.GetKey(KeyCode.A))
{
instruction.text = "3";
}
Debug.Log("3");
raycam = cam3.ScreenPointToRay(Input.mousePosition);
}
if (Input.GetMouseButtonDown(0))
{
if (Physics.Raycast(raycam, out hit))
{
hit.transform.root.GetComponent<Animator>().speed = 0f;
GameObject ChildGameObject1 = hit.transform.GetChild(0).gameObject;
GameObject ChildGameObject2 = ChildGameObject1.transform.GetChild(0).gameObject;
ChildGameObject2.GetComponent<Animator>().SetBool("prova", true);
StartCoroutine(Activation(hit));
}
}
【问题讨论】:
-
点击游戏对象不起作用是什么意思?你能分享一些你使用的代码吗?
-
当然,这里是代码: void FixedUpdate() { if (Input.GetMouseButtonDown(0)) { Ray ray; RaycastHit 命中;射线 = Camera.main.ScreenPointToRay(Input.mousePosition); if(Physics.Raycast(ray, out hit)) { hit.transform.root.GetComponent
().speed = 0f;游戏对象 ChildGameObject1 = hit.transform.GetChild (0).gameObject;游戏对象 ChildGameObject2 = ChildGameObject1.transform.GetChild (0).gameObject; ChildGameObject2.GetComponent ().SetBool("prova", true); StartCoroutine(Activation(hit));}}} -
我的意思是点击只能在MainCamera displaytarget上正常工作,但是当我切换到另一个显示器时,点击不起作用
-
请将代码编辑到您的问题中。
-
您的问题很明显:您只是从主摄像机投射光线,由您的
Camera.main声明给出。
标签: c# unity3d camera click game-engine