Unity技术分享】帧动画,开关门,光幕
01 物品拾取、动画与特效
让我们先来看看第一个要实现的效果。
这是一个钥匙卡的模型加动画加特效。
那么这个效果是如何实现的呢?
我来给大家拆分下。
首先在整个模型上添加一个球形碰撞体SphereColloder,用于人物触碰到的时候做捡取操作。
-
获取人物身上的背包管理脚本
-
当该碰撞体(钥匙卡)被碰触到时,判断碰触对象是不是人物
-
是人物的话,将钥匙卡的id添加进人物背包,销毁自身
然后在模型上加一个Animator动画组件,Controller中绑上一个简单的状态机。
上图的Spin即是之前所示的Animation动画,每帧实现简单的位置和角度变化。当然也可以用代码实现它的位置变换,不过用动画灵活性更高。
02 开关门逻辑
捡取钥匙后第一件事情肯定是用来开门啦!让我们来实现开关门逻辑。
当人物靠近门的时候,门会自动检测玩家背包中是否有钥匙,要是有的话,会自动开门,要是没有的话,门将不会打开,玩家离开门一定范围时,门会自动关闭。
首先还是在门上挂上碰撞体。
来看看代码。
1.用小count来计数,代表当前是0还是1,大于0,门开,等于0,门合上
2-3.用大Count 的set方法来做一些操作,当Count被set(设置)时,将会执行set里面的操作
4.开关门播放声音
5.将count值进行设置
此处为开关门逻辑
1.假如Count大于零,此处是实行Count的get方法,返回的是小count的值
2.插值运算,将门的位置,从当前位置移到目标位置
3.to,from为之前初始设置的三维向量
此处为有物体到门前一定范围将处理的逻辑。
1.系统自带的进入触发器,进入时自动调用
2.触发它的物体是什么,是玩家的话,就执行以下操作
3.是否需要钥匙卡,因为有些门是不需要钥匙卡的
4.如果此门需要钥匙卡,判断背包中是否有钥匙卡,有的话开门(执行Count的set方法)
5.没有的话播放没有钥匙卡的提示音
6.假如触发体的标签是敌人,并且触发体是胶囊碰撞体或其父类型(is表示前者是后者类型或者是后者类型的父类型则返回true)
以下是退出触发器范围逻辑。
1.系统自带退出触发器方法
2.取两者之间最大值,Count执行set逻辑
03 激光射线光幕
首先在整块激光幕上绑上BoxCollider组件。
1.当物体停留在触发器内时,此方法会持续调用
2.若当前时间大于上次时间加扣血间隔时间时执行接下来的逻辑,注意lastDamageTime初始值为0,Time.time很大,所以第一次调用此方法时固定执行if内方法,不需要再单独写个OnTriggerEnter方法
3.调用角色健康管理脚本,执行扣血逻辑
4.保存此次扣血的时间,方便判断合适执行下次扣血逻辑
好了,今天的3个内容就讲完了,希望大家有所收获。文章来源:https://www.toymoban.com/news/detail-829321.html
如果大家有想了解的知识和内容可以添加微信
文章来源地址https://www.toymoban.com/news/detail-829321.html
到了这里,关于Unity技术分享】帧动画,开关门,光幕的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!