当前位置: 首页 > news >正文

Vuforia AR篇(八)— AR塔防上篇

目录

  • 前言
  • 一、设置Vuforia AR环境
    • 1. 添加AR Camera
    • 2. 设置目标图像
  • 二、创建塔防游戏基础
    • 1. 导入素材
    • 2. 搭建场景
    • 3. 创建敌人
    • 4. 创建脚本

前言

在增强现实(AR)技术快速发展的今天,Vuforia作为一个强大的AR开发平台,为开发者提供了许多便捷的工具和功能。在本篇博客中,我们将介绍如何使用Vuforia在Unity中创建一个简单的塔防游戏。通过结合Vuforia的图像识别和增强现实技术,我们可以将传统的塔防游戏带入一个全新的维度。


一、设置Vuforia AR环境

1. 添加AR Camera

在Unity场景中添加一个Vuforia AR Camera。可以在GameObject -> Vuforia Engine -> AR Camera中找到。AR Camera将用于检测和跟踪目标图像。

2. 设置目标图像

Vuforia需要一个目标图像来识别并生成增强现实内容。在Vuforia开发者门户中,上传你的目标图像并生成一个目标数据库。下载生成的数据库并将其导入到Unity项目中。在Unity中,创建一个目标图像对象,路径为GameObject -> Vuforia Engine -> Image Target,并选择你导入的目标数据库。


二、创建塔防游戏基础

1. 导入素材

在这里插入图片描述

2. 搭建场景

创建一个图片大小的plane

在这里插入图片描述

创建4个cube,然后围起来

在这里插入图片描述

创建小方块作为炮台部署位置

在这里插入图片描述

3. 创建敌人

在这里插入图片描述

创建敌人移动的路径点

在这里插入图片描述


4. 创建脚本

小球生成脚本


using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SpawnManager : MonoBehaviour
{public GameObject enemyPrefab;public GameObject parent;void Awake(){}void Start (){CreateEnemy();}void Update (){}public void CreateEnemy(){GameObject enemy = Instantiate(enemyPrefab, parent.transform);enemy.transform.SetParent(parent.transform);enemy.transform.localPosition = new Vector3(-1f, 0.25f, 4f);}}

GameManager 脚本


using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GameManager : MonoBehaviour 
{public static GameManager Instance { get; private set; }public List<Transform> pointList;void Awake(){if (Instance==null){Instance = this;}else{Destroy(gameObject);}}   void Start (){}void Update (){}
}

敌人移动脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Enemy : MonoBehaviour
{public int currentIndex;public float moveSpeed;void Awake(){moveSpeed = 0.2f;currentIndex = 0;}void Start(){}void Update(){Move();}public void Move(){int nextPoint = currentIndex + 1;if (GameManager.Instance.pointList.Count <= nextPoint){//TODOreturn;}Vector3 v3 = transform.InverseTransformPoint(GameManager.Instance.pointList[nextPoint].position);transform.Translate(v3 * (Time.deltaTime * moveSpeed));if (IsArrive(GameManager.Instance.pointList[nextPoint])){currentIndex++;}}bool IsArrive(Transform t){float distance = Vector3.Distance(transform.position, t.position);if (distance < 0.05f){return true;}return false;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Wireshark 对 https 请求抓包并展示为明文
  • matlab R2016b安装cplex12.6,测试时cplex出现出现内部错误的解决方法
  • “论软件维护方法及其应用”写作框架,软考高级论文,系统架构设计师论文
  • 前端挑战:Tkinter布局与设计【三种布局】
  • 基于STM32设计的家庭智能健康监测系统(局域网)(185)
  • Elasticsearch:介绍 retrievers - 搜索一切事物
  • 接口基础知识3:详解url
  • C++基础(二十):常见C++11的新特性
  • Unity3D开发之传送带实现
  • C语言——二维数组
  • 检测精度评价指标召回率和精确率
  • C到C嘎嘎的衔接篇
  • [FPGA]-时序传输模型分析
  • Python:while循环
  • Java之Java基础八(方法)
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 07.Android之多媒体问题
  • 230. Kth Smallest Element in a BST
  • create-react-app项目添加less配置
  • js对象的深浅拷贝
  • Shell编程
  • Solarized Scheme
  • SpringBoot几种定时任务的实现方式
  • ubuntu 下nginx安装 并支持https协议
  • Vue UI框架库开发介绍
  • 简单基于spring的redis配置(单机和集群模式)
  • 三分钟教你同步 Visual Studio Code 设置
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 详解NodeJs流之一
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​2021半年盘点,不想你错过的重磅新书
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Qt) 默认QtWidget应用包含什么?
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ***监测系统的构建(chkrootkit )
  • .net core 6 集成和使用 mongodb
  • .NET单元测试
  • .net的socket示例
  • .Net接口调试与案例
  • .NET连接数据库方式
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • //TODO 注释的作用
  • @Import注解详解
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [C++] C++11详解 (一)
  • [CDOJ 1343] 卿学姐失恋了
  • [CVPR 2023:3D Gaussian Splatting:实时的神经场渲染]
  • [Hadoop in China 2011] Hadoop之上 中国移动“大云”系统解析
  • [HeMIM]Cl,[AeMIM]Br,[CeEIM]Cl,([HO-PECH-MIM]Cl,[HOOC-PECH-MIM]Cl改性酚醛树脂