unity在UI界面上展示旋转模型

本文介绍了在Unity3D中创建UI显示3D模型并实现模型旋转的方法。通过创建RawImage组件、调整渲染器纹理、设置摄像机角度,以及编写脚本来控制模型旋转,详细阐述了3D模型在UI界面的交互展示过程。同时提到,对于更复杂的旋转需求,可以使用transform.RotateAround实现相机围绕模型的旋转展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建一个Raw Image用来在UI界面进行显示模型

2.将图片在界面调整到合适位置,根据自己的需要进行调整

3.在Assets文件夹下创建“渲染器纹理”

后面如果觉得显示不够清晰可以选择调“渲染器纹理”整这里的大小

4.导入模型

5.创建一个摄像机 

(我这里用的是原神“莹”,如有侵权请私信,看到后立即删除)

 

记得删除相机创建上的组件“Audio Listener” 

6.将创建好的相机对准好模型,调整好你需要的角度

 7.选择创建好的相机,将之前的创建好的“渲染器纹理”拖入

 8.选择“Raw image”将关联好的“渲染器纹理”添加到“纹理”中

 

 9.让模型人物旋转

9.1创建一个空对象 

 9.2让空对象Transform与模型的数据一样

9.3让模型成为空对象的子物体

9.4创建一个脚本,将脚本挂载到空对象上

代码如下


    public GameObject obj;

    bool iswork;//判断鼠标是否工作
    Vector3 startPoint, startAngle;//保存开始鼠标在屏幕上的数据//保存物体模型Angles的数据
    public float rotateScale = 1f;//控制旋转速度


    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0)&&!iswork)
        {
            iswork = true;
            startPoint=Input.mousePosition;
            startAngle = obj.transform.eulerAngles;
        }
        if (Input.GetMouseButtonUp(0))
        {
            iswork=false;
        }
        if (iswork)
        {
             var x = startPoint.x - Input.mousePosition.x;///

            obj.transform.eulerAngles=startAngle+new Vector3(0,x*rotateScale,0);

        }

    }

 接着将空对象关联即可

----------------------------------------附加内容------------------------------------

对于直接旋转模型其实可能存在一些问题,导致对角色控制方向、导航等产生影响

所以多数旋转还是采用镜头旋转展示,在展示完然后归位

如何做?

让相机绕模型坐标使用transform.RotateAround

进行旋转展示

Unity中,你可以使用`OnPointerDown`、`OnPointerMove`和`OnPointerUp`等事件来实现UI上3D模型的鼠标拖拽旋转功能。以下是基本步骤: 1. 首先,你需要在UI上添加一个3D模型图元(3D Object),可以是一个空游戏对象或者已经包含模型的游戏对象。 2. 确保这个3D模型有一个公开的Transform组件,以便对其进行位置、旋转和缩放的操作。 3. 在UI元素上添加脚本,通常选择的是C#脚本,例如`UIWidgetScript`。在这个脚本里,我们需要捕捉到鼠标交互的事件。 ```csharp using UnityEngine; using UnityEngine.UI; public class UIWidgetScript : MonoBehaviour { public RectTransform parentRectTransform; // UI元素的RectTransform private GameObject targetObject; // 要旋转的3D模型 void Start() { targetObject = parentRectTransform.GetComponent<RectTransform>().anchoredPosition3d.gameObject; // 获取3D模型 } void OnPointerDown(PointerEventData eventData) { if (eventData.button == PointerButton.Left) { // 记录开始的旋转角度 originalRotation = targetObject.transform.rotation.eulerAngles; } } void OnPointerMove(PointerEventData eventData) { if (eventData.button == PointerButton.Left) { // 根据鼠标的移动计算新的旋转角度 Vector3 newRotation = originalRotation + Vector3.up * eventData.delta.z; // 这里假设鼠标垂直移动影响旋转 targetObject.transform.rotation = Quaternion.Euler(newRotation); } } void OnPointerUp(PointerEventData eventData) { // 指针抬起后,取消监听事件 UnregisterDrag(); } void UnregisterDrag() { GetComponent<Button>().onClick.AddListener(null); // 取消按钮的点击事件 } } ``` 记得在Unity编辑器中将`targetObject`变量设置为你想要控制的3D模型,并为`UIWidgetScript`组件添加到UI元素上。当用户按下左键并移动鼠标时,3D模型会随着鼠标手势旋转
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

作孽就得先起床

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值