山东大学增强现实实验三

题目

设置场景中的多个标志,通过跟踪这些标志,实现操控虚拟物体的目的。虚拟物体自选,要求:
1)标志物至少有3个(一个识别,一个平移,一个旋转);
2)操控虚拟物体的平移和旋转;
3)文档给出代码及实现思路。

实验步骤

1.制作标志物

步骤和实验二差不多(可以参考文章:关于Unity实现AR功能(一)Vuforia介绍),主要需要修改一下Vuforia Configuration(打开方式:ARCamera→Open Vuforia Configuration)下的一些参数,使得可以同步识别多张图片,设置最大跟踪图片数和物体数为5。
Vuforia Configuration参数

2.制作按钮

我通过设置点击按钮来控制物体的移动。分别在两张识别图上添加button。这里需要注意,把Canvas设置成World Space,因为在该模式下,画布和其他在3D世界中的游戏物体具有相同性质,可以通过设置Rect Transform组件的数值,改变位置、尺寸和旋转角等属性。有利于调节button的位置使其分布在识别图片上。
效果图
注意调节Canvas大小不能把width和height缩小,这样得到的button会变得非常模糊。正确的做法应该是保持原来的width和height,缩小button的scale。
我设置的相关参数如下:
canvas参数
button参数

3.编写按钮的点击事件脚本

新建一个脚本
代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ClickUp : MonoBehaviour
{
    
    
    // 获取待操纵的标志物
    public GameObject g= GameObject.Find("cola");
    // 设置移动速度
    public float speed=3;


    // Start is called before the first frame update
    void Start()
    {
    
    
        
    }

    // Update is called once per frame
    void Update()
    {
    
    
        
    }

    // 向上移动
    public void OnMyClick()
    {
    
    
        g.transform.Translate(Vector3.forward * speed * Time.deltaTime);
    }

    // 向下移动
    public void OnMyClickDown()
    {
    
    
        g.transform.Translate(Vector3.back * speed * Time.deltaTime);
    }

    // 向左移动
    public void OnMyClickLeft()
    {
    
    
        g.transform.Translate(Vector3.left * speed * Time.deltaTime);
    }

    // 向右移动
    public void OnMyClickRight()
    {
    
    
        g.transform.Translate(Vector3.right * speed * Time.deltaTime);
    }

    // 绕x旋转
    public void rotateX()
    {
    
    
        // 一次旋转10度,Space.Self表示以自身坐标系为参考旋转
        g.transform.Rotate(10, 0, 0, Space.Self);
    }

    // 绕y旋转
    public void rotateY()
    {
    
    
        g.transform.Rotate(0, 10, 0, Space.Self);
    }

    // 绕z旋转
    public void rotateZ()
    {
    
    
        g.transform.Rotate(0,0,10, Space.Self);
    }
}

在button的inspector中点击add component添加该脚本。在button的onclick组件中设置好相关参数如图,把对应的方法赋给对应的button:
onclick参数

完成

猜你喜欢

转载自blog.csdn.net/weixin_45830447/article/details/123778624