Unity游戏编程-——迷宫巡逻兵

2023-11-11

游戏设计要求:

  • 创建一个地图和若干巡逻兵(使用动画);
  • 每个巡逻兵走一个3~5个边的凸多边型,位置数据是相对地址。即每次确定下一个目标位置,用自己当前位置为原点计算;
  • 巡逻兵碰撞到障碍物,则会自动选下一个点为目标;
  • 巡逻兵在设定范围内感知到玩家,会自动追击玩家;
  • 失去玩家目标后,继续巡逻;
  • 计分:玩家每次甩掉一个巡逻兵计一分,与巡逻兵碰撞游戏结束;

程序设计要求:

  • 必须使用订阅与发布模式传消息
  • 工厂模式生产巡逻兵

基本思路分析:

模式基础
  • 订阅与发布模式:定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。
  • 工厂模式:在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。明确地计划不同条件下创建不同实例。
  • 单例模式:单一的类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
架构设计

使用正常的导演、场记、动作管理员、用户操作处理器、游戏对象工厂框架,添加游戏事件处理器(用于处理外设输入事件,提供玩家运动功能)。

具体脚本和游戏对象设计:使用Maze场景作为基本游戏对象,在其上添加GameEventManager游戏事件处理器脚本、StuffFactory游戏物品工厂脚本、PatrolActionManager巡逻兵动作管理员脚本、PatrolFactory巡逻兵工厂脚本、SceneController场景控制器脚本、UserInterface用户界面和操作设计脚本;为 PlayerPatrolStuff 设计Animation Controller,控制在用户操作下游戏对象的动画切换(通过.GetComponent<Animator>().SetBool("isRun", true)Animation Controller的转换条件参数进行设计,进而影响动画切换);为 PlayerPatrolStuffMaze的每个unit 添加Collider和碰撞检测器,参考博文,为这些游戏对象的子对象添加包含OnCollisionEnter方法的脚本,并添加collider组件,为 PatrolStuffMaze的每个unit 勾选isTrigger

碰撞检测:为 Player 设置Inspector的Tag,根据Tag在OnCollisionEnter方法和OnTriggerEnter方法中进行碰撞检测和操作设置。

关键模块

动画的设计:需要考虑到如何使动画的切换受代码控制,在特定条件下完成动作切换,主要通过为Animation Controller的动画切换添加数值型条件,再在代码中利用Set函数设置该值,从而切换动画。

巡逻兵寻道方式:为巡逻兵设置较大的Collider,视作嗅觉范围,只有在该范围内才能检测到玩家,根本在于检测碰撞事件,当该范围的碰撞器被触发,立即获取对方碰撞器的position,并且向该地址运动,连续不间断的寻址。

碰撞检测的触发条件:与碰撞双方是否具有刚体性质密切相关。

遇到的问题

碰撞检测无法完成,根据OnCollisionEnter方法和OnTriggerEnter方法需要获得碰撞体实例,但是始终无法获得。

资源地址

github地址
视频地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity游戏编程-——迷宫巡逻兵 的相关文章

  • 专利与论文-0:目录

    1 为什么要写专利 专利的好处 CSDN 2 什么是专利 专利的几种类型 CSDN 3 专利的特点是什么 什么不能申请专利 CSDN 4 专利申请流程与生命周期及费用 CSDN 5 专利说明书 的撰写与注意事项 CSDN 6 专利权利要求书
  • python爬虫系列8--Scrapy开发环境搭建和简单使用介绍

    简介 参考地址 http python jobbole com 86405 Python开发的一个快速 高层次的屏幕抓取和web抓取框架 用于抓取web站点并从页面中提取结构化的数据 Scrapy吸引人的地方在于它是一个框架 任何人都可以根
  • spring-boot-maven-plugin not found 解决方案

    今天尝试使用IDEA 搭建Spring Boot 项目 pom xml 核心文件如下
  • GLSL 简介

    GLSL OpenGL Shading Language 也称作 GLslang 是一个以C语言为基础的高阶着色语言 它是由 OpenGL ARB 所建立 提供开发者对绘图管线更多的直接控制 而无需使用汇编语言或硬件规格语言 目录 隐藏 1
  • 经纬度相关的一些计算

    欢迎访问我的个人博客 sky的技术小屋 1 已知两个位置的经纬度 计算其间地理距离 private static Double CalculateDistance ArrayList
  • L2TP的windows客户端连接

    转载及部分修改 1 首先需要搭建PPTP服务器 并配置账号密码 例如 2 选择新的连接或网络 3 选择连接到工作区 4 5 Internet 地址填写你购买账号的服务器名称或IP 目标名称随便都可以 6 配置登录 7 8 点击属性 修改模式
  • 项目k图绘制

    目录 数据准备 图标属性配置 数据准备 1 从后端接收数据 存入data数组内 2 按照项目需要切分数据 并将时间作为分类轴 X轴 的属性 3 计算均线 由于需要绘制MA5 MA10 MA20 MA30等均线 所以应先编写计算MA均线的函数
  • unity +百度UNIT

    百度UNIT使用保姆级别 百度UNIT 的 API使用理解 具体理解如下 过程步骤 创建UNIT Access Token获取 UNIT API的调用 Unity 源码 效果 百度UNIT 的 API使用理解 具体理解如下 创建 UNIT
  • android Socket 长连接出错:android.system.ErrnoException: connect failed: ECONNREFUSED Connection refuse

    Android 端做Socket 长连接测试 报错 提示说连接被拒绝 java net ConnectException failed to connect to 192 168 0 101 port 8081 connect failed
  • 【HCIA】虚拟化技术介绍

    虚拟化技术介绍 虚拟化 Virtualization 的含义很广泛 将任何一种形式的资源抽象成另一种形式的技术都是虚拟化 是资源的一种逻辑表示 解除了物理硬件和操作系统之间的紧耦合关系 虚拟化是云计算的基础 简单地说 虚拟化使得在一台物理的
  • 卷积操作的填充和输出大小的公式

    输入图像大小为II 卷积核大小为kk 填充为p 步长为s 输出大小为O O 那么 如果输出不能对齐 常采用下采用
  • c语言中变量不初始化会怎么样?

    目录 变量初始化 未初始化 随机数的产生 产生原理 初始化必要性 问题来源 在日常学习结构体的语法时看到文章中用数组进行举例 进行输出 在讨论数组是否初始化 输出的值的问题 代码如下 include
  • CTFHUB-UA注入

    User Agent User Agent 通常就是用户的浏览器相关信息 例如 User Agent Mozilla 5 0 X11 Linux x86 64 rv 12 0 Gecko 20100101 Firefox 12 0 Hack
  • HTTP Status 500 An exception occurred processing JSP page

    问题代码 出现异常界面 从上图可知在19处出现了异常 主要有两处 以及 为了很好的解决以上错误 我们将依次把传进来的各个参数在tomcat控制台上打印输出 先看看结果 主要操作代码 控制台显示结果 从以上输出可看到getRemoteAddr
  • Object.keys()、Object.values()、Object.entries()详解

    在JavaScript中 Object keys 是一个内置函数 用于获取一个对象中所有可枚举属性的名称 并返回一个包含这些属性名称的数组 以下是使用Object keys 函数的示例 const obj a 1 b 2 c 3 const
  • 代码混淆后可能出现的问题

    1 ClassNotFoundException NoSuchMethodError 原因 这种异常会在好多情况下出现 比如 本地代码通过反射调用其他的类 但是经过了混淆之后 就会出现如上异常 调用了JNI之后 C或者C 和java代码进行
  • 前端面试题复习二

    组件中写 name 选项有什么作用 项目使用 keep alive 时 可搭配组件 name 进行缓存过滤 DOM 做递归组件时需要调用自身 name Vue devtools 调试工具里显示的组见名称是由 Vue 中组件 name 决定的
  • 战双服务器维护,战双帕弥什维护到几点 战双帕弥什维护什么时候结束

    战双帕弥什今日正式火爆开测 随着大量玩家的加入 服务器也难免出现了过载情况 很多玩家在登陆时出现了战双帕弥什提示服务器未开放请稍后再试的情况 那么战双帕弥什维护什么时候结束 战双帕弥什维护原因是什么 快一起了解一下吧 战双帕弥什维护原因 1
  • C++ 匿名对象的生命周期——强化训练(二)

    include
  • STM32F10X单片机学习之PWM.C代码注解

    include stm32f10x h Device header void PWM Init void RCC APB1PeriphClockCmd RCC APB1Periph TIM2 ENABLE 开启 APB1 外设总线上的外设时

随机推荐

  • Unity最新热更新框架 hybridclr_addressable

    GitHub YMoonRiver hybridclr addressable 开箱即用的商业游戏框架 集成了主流的开发工具 将主流的GameFramework修改 支持Addressable和AssetBundle 已完善打包工具和流程
  • “黑色星期五”数据分析实战

    项目背景 美国圣诞节大采购一般是从感恩节之后开始的 感恩节是每年11月的第四个星期四 因此它的第二天 也就是美国人大采购的第一天 在这一天 美国的商场都会推出大量的打折和优惠活动 以在年底进行最后一次大规模的促销 这有点类似于淘宝的双十一购
  • Java项目——文档搜索引擎

    文章目录 1 项目概述 2 准备阶段 2 1 项目创建 2 2 准备静态页面 3 搜索逻辑 4 分词 5 处理 HTML 文件 5 1 枚举文件夹中所有文件 5 2 预处理文件 5 2 1 获取标题 5 2 2 获取 URL 5 2 3 获
  • [VUE] 过滤器函数

    VUE 过滤器可以用在两个地方 双花括号插值和 v bind 表达式 代码如下 message capitalize div div 你可以在一个组件的选项中定义本地的过滤器 filters capitalize function valu
  • Apple Magic Mouse 卡顿的问题

    更新时间 2022 06 30 17 58 37 发现在公司使用就会很卡顿 在家里使用就很流畅 感觉还是公司信号被干扰了 更新时间 2022年06月13日 尝试过下面所以的方法 以及怀疑是键盘蓝牙干扰 把键盘关掉 最后的结论 都没什么卵用
  • opencv读写和保存中文路径图片及base64与图片互转

    文章目录 1 opencv读取中文路径图片 2 opencv保存中文路径图片 3 图片转base64 4 base64转图片 有几点要注意 cv2 imread filename flags cv2 imwrite filename img
  • 交叉编译器的安装方法

    首先简单介绍一下 所谓的搭建交叉编译环境 即安装 配置交叉编译工具链 在该环境下编译出嵌入式Linux系统所需的操作系统 应用程序等 然后再上传到目标机上 交叉编译工具链是为了编译 链接 处理和调试跨平台体系结构的程序代码 对于交叉开发的工
  • STL 常用函数

    STL 常用函数 本文参考自 C STL常用函数总结 总结学习用 sort 函数 排序函数 sort 起始地址 末尾地址 cmp 其中cmp是可以自己定义的函数名 sort a a 5 sort vec begin vec end bool
  • ajax内置对象有什么,用js内置对象XMLHttpRequest 来用ajax

    步骤 用XMLHTTPRequest来进行ajax异步数据交交互 主要有几个步骤 1 创建XMLHTTPRequest对象 最复杂的一步 if window XMLHttpRequest code for IE7 Firefox Chrom
  • Apache Beam程序向导4

    今天在集群上实验Beam On Spark的时候 遇到一个坑爹的问题 这个问题总结起来是一个java lang NoClassDefFoundError 错误 具体错误如下图1所示 图1 错误提示 该错误提示SparkStreamingCo
  • cesium中定位方法使用

    cesium中定位到位置 在cesium中viewer flyTo和Camera flyTo的区别挺大 我们通常会用camera来定位 但当需要加上一个倾斜角的时候 可能定位的结果就和预想的区别很大 需求 矩形的中心点位置 110 0 35
  • CSDN竞赛第35期题解

    CSDN竞赛第35期题解 1 题目名称 交换后的or 给定两组长度为n的二进制串 请问有多少种方法在第一个串中交换两个不同位置上的数字 使得这两个二进制串 或 的 结果发生改变 int n cin gt gt n string a b ci
  • Python GUI 设计(三)---Widget组件详解

    1 1 Canvas画布组件 Tkinter模块中的Canvas组件主要用于绘制图形 文字 设计动画等甚至也可以将其他小部件放在画布上 比如视频 它的语法格式如下 Canvas 父窗口 options 第一个参数是父窗口 表示这个画布建立在
  • Linux操作系统~必考面试题⑥

    文件管理命令 1 cat 命令 cat 命令用于连接文件并打印到标准输出设备上 cat 主要有三大功能 1 一次显示整个文件 cat filename 2 从键盘创建一个文件 cat gt filename 3 将几个文件合并为一个文件 c
  • 链表-哈希表 详解

    链表 链表是由一系列节点组成的元素集合 每个节点包含两部分 数据域item和指向一下个节点的指针next 通过节点之间相互连接 最终串联成一个链表 链式存储结构就是 两个相邻的元素在内存中可能不是相邻的 每一个元素都有一个指针域 指针域一般
  • odoo权限管理详解

    前言 odoo作为ERP框架 必然有不同角色的用户使用这同一系统 对于系统上面的数据 应该对不同角色设置不同的查阅修改权限 odoo框架自带了了比较完善的权限控制机制 这篇博客的实践基于odoo13 其他版本可能略有差别 A 按odoo使用
  • 文举论金:黄金原油全面走势分析策略指导。

    市场没有绝对 涨跌没有定势 所以 对市场行情的涨跌平衡判断就是你的制胜法宝 欲望 有句意大利谚语 让金钱成为我们忠心耿耿的仆人 否则 它就会成为一个专横跋扈的主人 空头 多头都能赚钱 唯有贪心不能赚 是你掌控欲望还是欲望掌控你 古人云 不积
  • MVCC 实现原理

    这里是CS大白话专场 让枯燥的学习变得有趣 没有对象不要怕 我们new一个出来 每天对ta说不尽情话 好记性不如烂键盘 自己总结不如收藏别人 在讲解 MVCC 之前先来看一下 MySQL 中事务的四种隔离级别 读未提交 一个事务可以读到另一
  • ChatGPT生成内容很难脱离标准化,不建议用来写留学文书

    ChatGPT无疑是23年留学届的热门话题 也成为了不少留学生再也离不开的万能工具 从总结文献 润色论文 给教授写email似乎无所不能 各大高校对于学生使用ChatGPT的态度也有所不同 例如 哈佛大学教育代理院长 Anne Harrin
  • Unity游戏编程-——迷宫巡逻兵

    文章目录 游戏设计要求 程序设计要求 基本思路分析 模式基础 架构设计 关键模块 遇到的问题 资源地址 游戏设计要求 创建一个地图和若干巡逻兵 使用动画 每个巡逻兵走一个3 5个边的凸多边型 位置数据是相对地址 即每次确定下一个目标位置 用