c# – VR Player控制器未显示给角色控制器

c# – VR Player控制器未显示给角色控制器,第1张

概述我正在开发一个多人游戏,普通角色控制器用户和VR用户可以参与其中.因此,通过用户可以加入的游戏有两种模式,Normal和VR Mode. I am able to manage these modes and user can participate with any mode但问题是普通播放器(字符控制器)无法查看VR控制器(HTC vive控制器),因为这些对象在字符控制器一侧关闭.那么我如何 我正在开发一个多人游戏,普通角色控制器用户和VR用户可以参与其中.因此,通过用户可以加入的游戏有两种模式,normal和VR Mode.

I am able to manage these modes and user can participate with any mode但问题是普通播放器(字符控制器)无法查看VR控制器(HTC vive控制器),因为这些对象在字符控制器一侧关闭.那么我如何在正常玩家端显示VR控制器正在做什么.

(我尝试过的)我制作了一个物体,试图模仿它相对于VR控制器的位置和旋转,但它不起作用,因为模仿源(VR控制器)关闭(在正常的玩家端,但在VR模式下工作)和他们的位置没有改变.如何向其他用户显示vr控制器

解决方法 经过三天的努力,我努力使用这些步骤来解决这个问题.下面给出了这些步骤,以便将来的用户不会遇到这个问题,因为没有其他全面的指南可用:

>使用Network Identity和network transform为头部(简单立方体)制作一个Gameobject
>使用网络身份和网络转换为(右)控制器(简单立方体)创建一个Gameobject
>使用网络身份和网络转换为(左)其他控制器(简单立方体)创建一个Gameobject
>预制所有上述游戏对象.
>将所有三个预制件添加到Network Manager(已注册的Spawnable预制件列表)
>从场景中删除三个预制件
>在我的vr播放器中添加以下脚本(请参阅注释以获取详细信息)并分配相应的预制件和游戏对象

public class VRPlayerCtrl : Networktransform {//source gameobjects head,left and right controller object of htc vive prefabpublic GameObject rightContSource;public GameObject leftContSource;public GameObject headObJsource;//prefabs to assign head,left controller,and right controllerpublic GameObject vrheadObjPrefab;public GameObject vrleftCtrlPrefab;public GameObject vrRightCtrlPrefab;GameObject vrheadObj;GameObject vrleftCtrl;GameObject vrRightCtrl;voID Start(){    DeBUG.Log("Start of the vr player");    if (isLocalPlayer)    {        //instantiate prefabs        CmdInstantiteheadAndController();        //Disabled conroller meshes at VR player sIDe so it cannont be vIEw by him        vrleftCtrl.GetComponent<MeshRenderer>().enabled = false;        vrRightCtrl.GetComponent<MeshRenderer>().enabled = false;    }}//Instantiate on start head and vr controller object so that it can be vIEw by normal playersvoID CmdInstantiteheadAndController(){    DeBUG.Log("instantiateing the controller and head object");    vrheadObj = (GameObject)Instantiate(vrheadObjPrefab);    vrleftCtrl = (GameObject)Instantiate(vrleftCtrlPrefab);    vrRightCtrl = (GameObject)Instantiate(vrRightCtrlPrefab);    // spawn the bullet on the clIEnts    NetworkServer.Spawn(vrheadObj);    NetworkServer.Spawn(vrleftCtrl);    NetworkServer.Spawn(vrRightCtrl);}voID Update(){    if (!isLocalPlayer)    {        return;    }    //sync pos on network    CmdControllerpositionSync();}//sync position on VR controller objects so that VR player movemnts/action can be vIEwd by normal user[Command]public voID CmdControllerpositionSync(){    vrheadObj.transform.localRotation = headObJsource.transform.localRotation;    vrheadObj.transform.position = headObJsource.transform.position;    vrleftCtrl.transform.localRotation = leftContSource.transform.localRotation;    vrRightCtrl.transform.localRotation = rightContSource.transform.localRotation;    vrleftCtrl.transform.localposition = leftContSource.transform.position;    vrRightCtrl.transform.localposition = rightContSource.transform.position;}}

恭喜你做到了!

总结

以上是内存溢出为你收集整理的c# – VR Player控制器未显示给角色控制器全部内容,希望文章能够帮你解决c# – VR Player控制器未显示给角色控制器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1246485.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存