3D游戏(7)——模型与动画

1、智能巡逻兵

游戏设计要求

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

程序设计要求

  • 必须使用订阅与发布模式传消息
    • subject:OnLostGoal
    • Publisher: ?
    • Subscriber: ?
  • 工厂模式生产巡逻兵

友善提示1:生成 3~5个边的凸多边型

  • 随机生成矩形
  • 在矩形每个边上随机找点,可得到 3 - 4 的凸多边型
  • 5 ?

友善提示2:参考以前博客,给出自己新玩法

游戏程序设计

首先,在找素材的时候找到一个别具一格的素材。Scivolo Character Controller

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

素材包里面不仅有一个有趣的地形(可供巡逻兵游戏的进行),还实现了第三人称的玩家模型,不仅可以通过鼠标来控制视图,可以上下左右走动,还可以跳,爬楼梯的更是不在话下。

因而,地图稍微改改布局,改宽改大,就直接用作本次游戏的场景了。人物的话计划也是改改模型即可,脚本还是用原来的。怎一个舒服了得

在这里插入图片描述

稍微将原来的地图改改,适当加几个AreaCollider,用于后续触发巡逻兵的追捕,如此一来这个游戏的地图就完成了。

在这里插入图片描述

需要注意的是AreaCollider里面的碰撞体需要设置isTrigger。

可惜的是,如此好的一个地图却无法做成预制,或许是因为这个资源包里面的Mesh Filter缺少的缘故,做成预制之后再拖出来就复原不了现在这个样子了。

在这里插入图片描述

原因就是做成预制之后上图的Mesh就变成了空。

这么一来的话,做不成预制,就无法像以往那样在运行时再实例化地图了,只能够通过修改Active这种蠢蠢的方式了。手动狗头

在这里插入图片描述

在这里插入图片描述

人物模型的话呢,我也找到了一个不错的,VoxelCharacters。在这里我们用到三种人物预制。

在这里插入图片描述

Hero用作玩家。

在这里插入图片描述

Zombie用作巡逻兵。

在这里插入图片描述

当然,为给游戏增加一点趣味性,BlueIdol用作我们此次任务需要拯救的公主。手动狗头

动作的话,三者都是一样的,新建一个Animator Controllerperson

在这里插入图片描述

设置好参数,状态,触发isWin的话就跳到win状态,触发isDead的话就跳到die状态,isRunning为true的话就转到状态run,否则保持在Initial State。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四个状态的动作设置如上图所示,用的全都是素材包VoxelCharacters里面的动作。

毋庸置疑,事先需要把该添加的组件(动画,刚体,碰撞体),添加好。

在这里插入图片描述

Zombie和BlueIdol的设置都是一样的,现在任务就是把前面下载到的玩家资源里面的模型更换掉。

在这里插入图片描述

在这里插入图片描述

把原来的除了Camera Target以外的都可以删掉了,把Hero模型添加进来,同时为了方便,也可以把摄像机(素材包里面挂了脚本OrbitingCamera的摄像机,不是普通摄像机)拖进来。

这样一来直接运行的话肯定是bug一大堆,需要稍作修改。

在这里插入图片描述

Camera Target的高度需要调调,

在这里插入图片描述

脚本OrbitingCamera里面的Distance也需要调,

在这里插入图片描述

脚本CharacterCapsule里面的胶囊碰撞体的半径和高度要调,这里因为在脚本里面有添加碰撞体,因而在Hero里面就不需要添加刚体和碰撞体组件。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值