新用户注册入口 老用户登录入口

[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

文章作者:转载 更新时间:2024-03-11 12:57:03 阅读数量:767
文章标签:Unity场景互动要素射击机制主角血量管理怪物AI行为灯光交互设计
本文摘要:该文章详细介绍了使用Unity开发的一款包含射击要素和场景互动的俯视角闯关游戏Demo。游戏中,主角需通过操作开关改变灯光状态、利用宝箱获取武器击败石像鬼和幽灵等怪物,并巧妙避开减速陷阱与地刺陷阱等障碍物以达成通关目标。设计中,主角具有血量管理及受击逻辑,而怪物具备AI行为,如石像鬼无限血量且能探照攻击,幽灵具有巡逻和追逐状态。同时,武器系统实现了抛出、射击功能,子弹碰撞到幽灵时造成伤害。整个Demo充分利用各类场景互动物体丰富游戏玩法,展现了一种结合了策略、动作与解谜元素的单机闯关小游戏实现思路。
转载文章

本篇文章为转载内容。原文链接:https://blog.csdn.net/Zireael2019/article/details/126690910。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

[Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

​ 一个简单的单机闯关小游戏,主角到达终点即为胜利,关卡中有两种怪物能够对主角造成伤害,此外还有灯、陷阱、宝箱等场景互动要素,主角从宝箱中获得枪后能够进行射击杀死怪物
在这里插入图片描述

游戏逻辑简述

主角

在这里插入图片描述

初始有三点血量,被怪物攻击或触发陷阱回收到伤害,血量为零时进行副本结算,成功到达终点后游戏胜利

当获得武器后可以发射子弹,子弹会沿直线飞行,碰到障碍物、怪物、墙壁后,子弹消失

怪物

石像鬼

在这里插入图片描述

无法移动,血量无限,攻击到主角会直接将主角杀死

AI:来回探照,探照到主角后将主角杀死

幽灵

在这里插入图片描述

初始九点血量,当被子弹攻击后根据角色攻击力扣除血量,血量为0后死亡,3秒后出生点符火

AI:出生后在一定范围内巡逻,被攻击后会追逐主角直到死亡

场景互动物体

灯光

灯每15秒自动亮一次,亮10秒钟自动熄灭,灯亮起时,灯光范围内的怪物死亡

主角操作开关改变当前房间灯的状态(关-》开,开-》关),状态改变后场景机制的灯重新计时。

减速陷阱

主角触发陷阱后会减少主角50%移动速度,主角离开陷阱后依然会持续5秒减速效果。

地刺陷阱

每间隔3秒会伸出尖刺,持续3秒,尖刺缩回,重新开始计时。当尖刺处于伸出状态时,主角在陷阱范围,每秒会受到1点伤害。

宝箱

打开宝箱后主角可以获得一把武器

实现简述

由于实现功能较为简单,因此只简述实现思路

类组织结构

使用彩色建模的思想组织类结构,类图:
在这里插入图片描述

SceneObject

所有场景物体包括主角、怪物、互动物体等的抽象基类,仅有init()抽象方法

Character

拥有血量和攻击力的实体继承自Character,同时实现getATK()beDamage()抽象方法用于处理攻击和受击逻辑

SceneItem

其他场景实体继承自SceneItem,无特殊属性和方法

Scene

场景管理类,能偶根据Json文件生成场景物体,保存了实体预制体,还拥有一个静态List和静态方法用于运行时向场景中添加新实体

InteractionMI

用于处理单个实体无法处理或不属于单个实体的逻辑,包括:

  • 幽灵追踪主角时获取角色位置
  • 帮助实体初始化定时器组件
  • 减速陷阱是否可以回复主角速度
  • 主角与灯、宝箱、武器的交互

DamageMI

包含静态方法Damage()专门用于处理伤害逻辑,方便后续服务器验证等逻辑

逻辑实现

主角

Protagonist类用于处理主角相关逻辑

受击逻辑

当主角不处于无敌状态,播放受击动画,扣除血量并进入无敌状态,定时器定时一秒后关闭无敌状态

交互逻辑

用户输入交互信号后,交由InteractionMI判断交互是否成功,返回交互信息,主角播放对应动画

武器逻辑

当主角获得武器后,主角身上保存武器的引用,与武器交互直接调用武器的对应方法(Drop(),Fire())

结算逻辑

当主角HP小于等于0时,调用Scene的静态方法,请求场景结算

怪物

石像鬼

血量无限,没有受击逻辑,当检测组件检测到主角时,调用继承的Attack方法,攻击主角

幽灵

三种状态:die、patrol,chase

死亡状态下三秒后会在第一个导航点复活

巡逻状态下检测到主角会调用继承的Attack方法攻击主角

追逐状态下会每帧获得主角位置追逐主角

其他场景物品

灯光

初始化时添加计时器用于控制自动开关,用户交互后重置计时器

开启时使用一个锥形的检测器检测幽灵是否在范围内,如果在调用Damage对幽灵造成伤害

存在一个Box Collider,当玩家进入时,调用InteractionMI的方法,将InteractionMI保存的静态SwitchableLight引用置为自己,当玩家交互时这个引用不为null,则调用这个引用的SwitchableLight的ChangeLight方法完成开关灯的交互

减速陷阱

当玩家进入时,调用InteractionMI的方法,使其内置的静态_slowDownCount计数加一,并调用玩家的SetSpeedRatio方法使玩家减速

当玩家离开,设置计时器5秒后调用InteractionMI的方法,使其内置的静态_slowDownCount计数减一,当计数为零时才可以调用玩家的SetSpeedRatio方法使玩家回复正常速度

地刺陷阱

初始化时设置计时器,每三秒改变一次状态,当玩家进入,设置计时器每一秒对玩家造成一次伤害,当玩家离开,取消计时器

宝箱

内置public GameObject GWeapon;用于保存要生成的枪的预制体

当玩家第一次与宝箱交互,播放开宝箱动画,设置计时器1.2秒后根据预制体克隆一个武器,并将武器通过Scene的静态方法加入到Scene维护的SceneObject列表中,自身保存新生成的武器的引用

当武器生成后玩家再与宝箱交互则通过InteractionMI的方法将武器父节点设为玩家,玩家获得武器的引用,自身武器引用置为null

武器

内置private Transform _parent = null;用于保存父物体

Drop方法被调用时,若父物体不为空,设置自身刚体属性,设置速度使武器有抛出效果,设置计时器1秒后恢复到没有物理效果的状态,父物体置为空

Fire方法被调用,若能够开火,则生成并初始化一个子弹,生成时将保存的父物体的Transform给子弹,保证子弹能够向角色前方发射,开火后设置开火状态为不能开火,设置计时器0.5秒后恢复开火状态

当父物体信息为空,与其他交互逻辑类似,通过InteractionMI完成武器捡起的交互逻辑

子弹

初始化时设置初速度,启动定时器1秒后若没有销毁则自动销毁,若碰撞到幽灵,对幽灵造成伤害,其他碰撞销毁自己

本篇文章为转载内容。原文链接:https://blog.csdn.net/Zireael2019/article/details/126690910。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

相关阅读
文章标题:[转载][洛谷P1082]同余方程

更新时间:2023-02-18
[转载][洛谷P1082]同余方程
文章标题:[转载]webpack优化之HappyPack实战

更新时间:2023-08-07
[转载]webpack优化之HappyPack实战
文章标题:[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

更新时间:2023-09-10
[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法
文章标题:[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

更新时间:2024-03-11
[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo
文章标题:[转载]程序员也分三六九等?等级差异,一个看不起一个!

更新时间:2024-05-10
[转载]程序员也分三六九等?等级差异,一个看不起一个!
文章标题:[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集

更新时间:2024-01-12
[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集
名词解释
作为当前文章的名词解释,仅对当前文章有效。
ECS(Entity-Component-System)架构ECS是一种在游戏开发中广泛采用的软件架构模式,尤其适用于Unity等游戏引擎。在本文所描述的游戏Demo中并未明确提及使用ECS架构,但该架构对于管理游戏中大量实体、组件和系统间的交互具有重要意义。在ECS框架下,“实体”代表游戏世界中的一个对象(如主角、怪物或场景物品);“组件”则是实体具备的特定属性或行为(如血量、攻击力、移动能力等);“系统”负责处理具有特定组件的实体的行为逻辑(如物理系统处理所有带有物理组件的实体)。通过解耦实体与行为,ECS使得代码更易于维护、扩展和优化。
强化学习强化学习是一种机器学习方法,在游戏AI设计中应用广泛,用于训练智能体通过不断试错学习最优策略。尽管本文未直接涉及强化学习技术,但在Unity ML-Agents工具包的支持下,开发者可以利用强化学习来提升石像鬼或幽灵等怪物的智能程度,让它们能够根据环境和玩家行为动态调整攻击策略,实现更为真实和挑战性的游戏体验。
动态碰撞检测在游戏中,动态碰撞检测是指实时计算游戏世界中物体间是否发生碰撞以及如何响应碰撞的过程。在本文所述的射击闯关游戏中,动态碰撞检测的应用体现在子弹与怪物、墙壁等障碍物的碰撞上,以及主角与陷阱、宝箱等场景物品的互动中。例如,当子弹沿直线飞行并碰到怪物或墙壁时,会触发碰撞检测逻辑,导致子弹消失;同样地,主角进入减速陷阱区域时,也会触发碰撞检测从而减少主角的移动速度。这种机制确保了游戏世界的物理规则得以正确执行,增强了游戏的真实感和可玩性。
延伸阅读
作为当前文章的延伸阅读,仅对当前文章有效。
在体验了Unity制作的俯视角射击闯关游戏Demo后,读者可能会对游戏开发中AI设计、场景互动元素的实现以及如何利用Unity引擎优化游戏性能产生浓厚兴趣。近日,Unity官方博客发布了一篇题为“深入Unity ML-Agents:强化学习在游戏AI中的实践应用”的文章,其中详细阐述了如何借助Unity ML-Agents工具包,将强化学习技术应用于游戏角色AI的设计与训练,让怪物行为更加智能和真实。
同时,针对场景互动要素的重要性,知名游戏开发者网站Gamasutra近期分享了一篇名为“创建沉浸式游戏环境:场景交互设计的关键原则”的深度解析。文中强调了动态场景与玩家行为之间的反馈循环,以及通过物体状态变化增强游戏叙事和挑战性的方式方法,对于提升类似闯关游戏中灯光开关、陷阱触发等互动机制设计具有指导意义。
此外,在游戏开发社区Reddit上,一则关于“Unity Physics and Collision Detection in 2D Games(Unity在2D游戏中的物理系统与碰撞检测)”的讨论帖热度不减,众多开发者就如何优化子弹飞行轨迹、角色移动与场景障碍物的碰撞检测等问题展开了深入交流,这些实战经验对于进一步完善本文所描述的射击游戏Demo中子弹碰撞与销毁逻辑提供了宝贵参考。
综上所述,以上延伸阅读资源均为 Unity 游戏开发领域的最新研究与实践经验,不仅有助于深化理解本文提及的游戏设计与实现要点,还能帮助读者紧跟行业前沿趋势,为实际项目开发提供有力支持。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
netstat -tulpn - 查看网络连接状态、监听端口等信息。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
Go Iris中前端表单配置与后端验证逻辑问题剖析 03-04 简单响应式jQuery Tabs选项卡插件 04-02 Go语言中os包与io/ioutil实现文件系统操作:精准错误检查、并发控制与同步互斥实践 02-24 Consul中服务实例自动注销问题解析:健康检查、稳定性与Agent配置的影响及解决策略 01-22 jquery改变文本框字体 12-10 Hessian在大数据量传输中的高效序列化与反序列化实践:HTTP请求与Socket编程 11-16 Scala中处理null值:理解Option类型与使用if-else、map和filter方法避免ClassCastException与NullPointerException 11-11 jQuery和CSS3响应式TAB选项卡样式幻灯片特效 11-01 响应式刑事辩护律师事务所类企业前端CMS模板下载 10-14 本次刷新还10个文章未展示,点击 更多查看。
Redis在微服务设计中实现数据字典存储与分布式锁:高并发、高性能与持久化实践 08-02 ZooKeeper性能指标监控详解:聚焦延迟、吞吐量与并发连接数,及实用工具ZooInspector与ZooKeeper Metrics的运用 05-20 C#中安全关键操作引发的SecurityCriticalException:权限不足时的异常处理与最小权限原则实践 05-12 vue合计 04-27 jQuery和HTML5打造的网页背景视觉差滚动效果 04-01 响应式化妆美容香水类企业前端CMS模板下载 03-16 航运设备造船厂类企业前端模板下载 03-11 个性自适应程序员求职简历网站静态模板 02-15 蓝色后台数据管理网站模板下载 02-14 [转载]4.2创建自定义Spring Boot自动配置Starter 02-10 Groovy中遭遇`groovylangGroovyBugError`:识别、版本更新与官方资源利用解决运行时异常指南 01-11
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"