在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);
         });
    }

相关推荐

  1. UI跟随3D人物

    2024-06-09 06:32:03       35 阅读
  2. unity实现3D物体UI前方

    2024-06-09 06:32:03       33 阅读
  3. unityUI、shader显示3D物体前

    2024-06-09 06:32:03       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 06:32:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 06:32:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 06:32:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 06:32:03       20 阅读

热门阅读

  1. Sony前端连接功放:深度解析与实用指南

    2024-06-09 06:32:03       13 阅读
  2. Linux服务器配置一个简单的DNS

    2024-06-09 06:32:03       9 阅读
  3. 【 k8s 标签与选择器 】

    2024-06-09 06:32:03       12 阅读
  4. adb 删除文件或文件夹

    2024-06-09 06:32:03       7 阅读
  5. 字母异位词分组(charyw)

    2024-06-09 06:32:03       12 阅读
  6. Docker面试整理-什么是Docker Compose?

    2024-06-09 06:32:03       11 阅读
  7. 数据查询深分页优化方案

    2024-06-09 06:32:03       10 阅读
  8. 《非暴力沟通》:值得所有人阅读

    2024-06-09 06:32:03       10 阅读
  9. 【含项目亮点】小免鲜项目总结

    2024-06-09 06:32:03       9 阅读