我如何检测哪个摄像机发出了光线?

时间:2019-02-23 23:48:54

标签: c# unity3d

好,所以我打算将多人游戏放入我的游戏中,并且会有多个带有自己相机的玩家对象。

每个玩家都应该能够通过光线投射而不是其他玩家对象来点击场景中他们自己的可选对象。

如果允许进行光线投射的播放器的摄像机选择对象,我该如何比较?

我可能正在接近多人游戏和摄影机,但都错了,所以如果有人知道并可以指出这一点,那就太好了。

如果我要说的话没有道理,请随时问我,我很乐于阐述。

1 个答案:

答案 0 :(得分:3)

可能是我误会了你,但是

当您进行光线投射时,您只需“发出光线”即可。

(实际上,它可能在任何地方-可能与相机无关。例如,当您悬挂汽车时,由于某些原因,您发出的光线指向地面向下-您知道吗? )

因此,您的问题的答案很简单,对于X摄像机,您确实使光线来自该摄像机!

https://docs.unity3d.com/Manual/CameraRays.html

希望这就是你的意思。

仅来自Unity示例...

   RaycastHit hit;
    Ray ray = camera.ScreenPointToRay(Input.mousePosition);

    if (Physics.Raycast(ray, out hit)) {
        Transform objectHit = hit.transform;

        // Do something with the object that was hit by the raycast.
    }

我认为您只是想向被击中的对象发送消息。很简单:

假设您在命中对象上有一个名为“ Robot.cs”的脚本。

Robot hitRobot = objectHit.GetComponent<Robot>();

现在,您在所击中的物体上有了该组件。

假设在Robot.cs中有一个功能“ IWasHit()”

所以下一步就是

hitRobot.IWasHit();

你看到了吗?简单! :)

享受