本项目为使用虚幻4引擎开发的VR小游戏,使用头显设备Oculus Quest 2
在游戏中,玩家可以在大世界中自由探索,使用近战武器与危险的动物展开搏斗,灵活运用闪避技巧躲避攻击,或使用潜行技巧巧妙接近动物,或者用弓箭远程射击。
项目中提供测试关卡用于测试游戏中各种机制。
由于资源大小问题,部分资源不会上传。
未上传git资源:
动物资源包:虚幻商城 Animal Variety Pack
武器资源包:虚幻商城 Free Fantasy Weapon Sample Pack
大地图:虚幻商城 Landscape Pro 2.0 Auto-Generated Material
大作业提交中,由于大地图过于巨大(3.0G),未上传教学网,并且已在程序中删除进入大地图的入口。其余资源已上传
首先将Oculus Quest 2连接至电脑,使用Unreal Engine 4.27打开HuntCraft.uproject,点击引擎中的VR运行。
-
操作介绍
左手柄摇杆:前后左右移动
左手柄菜单:打开游戏菜单
右手柄摇杆:打开传送模式
右手柄A键和B键:跳跃
左右手柄握把键:抓取物体
菜单模式中,左手柄摇杆用于选择菜单栏,左手柄扳机用于选择确认
-
武器使用
打开菜单栏,选择对应武器可以召唤武器
剑:单手握持(可以使用左右手),可以对动物直接进行挥砍造成伤害,伤害:50
矛:可以单手握持,也可以双手握持,双手握持时由两只手共同决定矛的方向。单手伤害:40,双手伤害:70
弓:需要双手握持进行射击。双手握持时,后手拉弓,拉弓到一定距离后会在弓上生成箭,后手松手时,箭被释放射出,伤害与箭击中物体的速度有关,平均伤害约为50
-
潜行
在现实中下蹲到一定高度可以进入潜行模式,此时行走时只会发出微小的声音,更不容易被动物听见
蹲下时,人物身高变矮,可以闪避掉动物的跳跃攻击,也可以通过一些比较矮的通道。
-
动物
狐狸是和平动物,不会攻击玩家。当狐狸发现玩家后(听见或看见),会像同伴发起警告,快速远离玩家
狼是攻击性动物,当其发现玩家后,会像玩家发起攻击,若狼攻击到玩家,玩家会立即死亡。
- Config文件夹:项目以及引擎设置,定义了按键映射,游戏运行的主类等信息
- Content文件夹:工程的主体,包括各种蓝图,材质,音效等
Content中,由我们自己编写的代码均在ours文件夹中。另外,STF中大地图中添加了动物等操作。
- AnimalVarietyPack:动物模型、材质、骨骼等
- Bow_Arrow:弓和箭的模型、材质、骨骼等
- Geometry:基础方块以及地板模型
- STF:大地图
- VRSpectator,VRTemplate:虚幻自带的VR控制模板,我们的设计主要继承这里面的类并写在了ours文件夹里
- Weapon_Pack:武器模型、材质
-
actors:包含Target蓝图类,定义了移动的靶方块,被武器击中会发出爆炸声并变色,用于在靶场测试
-
AI_utils:动物AI相关类
-
AI:包含和平动物和攻击动物的AI类。AIController定义了AI运行的哪一个行为树算法,并且定义了AI的听觉和视觉感知
BT前缀为AI的行为树,BB前缀为行为树使用的黑板。AIController与行为树之间使用黑板交互。
-
BTService:行为树使用的服务模块
-
BTTask:行为树使用的任务模块,包含动物攻击模块,修改速度模块,计算随机游走位置模块,逃跑模块等
-
-
Animal:动物相关类。其中Animal类为所有动物的父类,定义了动物的共同行为,如受到伤害、惊吓等虚函数,骨骼模型,碰撞箱等共有模块
- Fox:定义了动物狐狸,具体化了模型,各种事件处理等。FoxAnimation为动画类,使用状态机模型运行动画。
- Wolf:定义了动物狼,与狐狸类似。
-
maps:两个测试地图,用于调试的test地图和靶场地图
-
Sound:音效和背景音乐,取材至互联网
-
UI:用户界面,角色死亡界面和动物血条
-
VRutil:VR相关功能
- GrabbleActor:可抓取物品的基类
- GrabComponentTwoHands:双手抓取的组件,定义双手抓取时物体的旋转逻辑
- GrabTowHandActor:可双手抓取物体的基类
- ReleaseArrowEffect:射箭的震动特效
-
weapon:武器相关功能。weapon:武器的基类,包括武器在场景中为漂浮可拾取状态等功能。其余类均为对应武器的实现。
-
TestVRCharacter:VR角色控制类,用于控制自己角色,包括移动跳跃,控制器等
-
TestCharacter:键盘控制的角色类