欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 在UI界面中实现3d人物展示

在UI界面中实现3d人物展示

2025/5/2 9:58:07 来源:https://blog.csdn.net/weixin_44001501/article/details/139550682  浏览:    关键词:在UI界面中实现3d人物展示

简要原理(设置双摄像机):

  • 为需要展示的3D人物单独设置一个摄像机(只设置为渲染人物层级),主要摄像机的方向与人物方向一致,但摄像机需要需要旋转180°,设置的角度自行进行微调
  • 创建一个Render Texture类型的组件用于存储摄像机渲染的内容
  • UI上设置需要展示的图片区域,图片类型为RawImage

具体实现

    //打开详细信息界面,charCameraTrans为人物展示摄像机public void OpenInfoWnd(){if (charCameraTrans == null){charCameraTrans = GameObject.FindGameObjectWithTag("CharShowCam").transform;}//设置人物展示相机的相对位置charCameraTrans.localPosition = playerController.transform.position + playerController.transform.forward * 1.8f + new Vector3(0,0.9f,0);charCameraTrans.localEulerAngles = new Vector3(0, 180 + playerController.transform.localEulerAngles.y, 0);charCameraTrans.gameObject.SetActive(true);infoWnd.showWnd();}//关闭详细信息界面public void CloseInfoWnd(){//关闭人物展示摄像机charCameraTrans.gameObject.SetActive(false);//关闭显示界面infoWnd.hideWnd(); }

UI中实现角色旋转的触控

 简要原理

记录人物旋转角度x:鼠标按下位置减去鼠标拖拽的终点的得到鼠标的旋转角度

将旋转角度作用在角色上:记录人物初始的角度(y轴的角度),重新设置人物的角度

代码实现

    //注册触摸事件private void RegTouchEvts(){
//OnClickDown函数参考之前博文实现非按钮物体的事件监听OnClickDown(imgChar.gameObject, (PointerEventData evt) => {MouStartPos = evt.position;
//角色开始的角度startRoate = playerController.transform.localEulerAngles.y;});OnDrag(imgChar.gameObject, (PointerEventData evt) =>{//计算鼠标拖拽的距离float roate =MouStartPos.x-evt.position.x; playerController.transform.localEulerAngles = new Vector3(0, roate+startRoate, 0);});}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词