当前位置: 首页 > 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;}
}
http://www.lryc.cn/news/395984.html

相关文章:

  • Spring AOP源码篇四之 数据库事务
  • 小波与傅里叶变换的对比(Python)
  • Linux-sqlplus安装
  • LeetCode 算法:课程表 c++
  • 前端面试题30(闭包和作用域链的关系)
  • A股本周在3000点以下继续筑底,本周依然继续探底?
  • Javadoc介绍
  • C# Application.DoEvents()的作用
  • IDEA如何创建原生maven子模块
  • LCD EMC 辐射 测试随想
  • Docker安装遇到问题:curl: (7) Failed to connect to download.docker.com port 443: 拒绝连接
  • 阿里云安装rabbitMQ
  • 中文大模型基准测评2024上半年报告
  • 新火种AI|OpenAI的CEO又有新动作?这次他成立了AI健康公司
  • 中介子方程五十
  • 如何借助社交媒体影响者的力量,让品牌影响力倍增?
  • Python面试题:Python 中的 `property` 函数有什么用?
  • 十五、小型电脑没有数字键及insert,怎么解决IDEA快速插入getset构造这些方法
  • 【鸿蒙学习笔记】属性学习迭代笔记
  • 工具推荐:滴答清单
  • 阶段三:项目开发---大数据开发运行环境搭建:任务4:安装配置Spark集群
  • SDIO CMD 数据部分 CRC 计算规则
  • 每日一编程,早点拿offer
  • https创建证书
  • C++ 是否变得比 C 更流行了?
  • Redis-Jedis连接池\RedisTemplate\StringRedisTemplate
  • Obsidian 文档编辑器
  • Spring Boot项目中JPA操作视图会改变原表吗?
  • C++之goto陈述
  • ChatGPT提问提示指南PDF下载经典分享推荐书籍