Unity技术分享】帧动画,开关门,光幕

本文介绍了使用Unity实现物品拾取、钥匙卡动画效果以及开关门逻辑,包括碰撞体的应用、动画控制器的使用和基于角色的门控制。还涉及了激光射线光幕的创建,通过触发器控制角色扣血过程。
摘要由CSDN通过智能技术生成

Unity技术分享】帧动画,开关门,光幕

01 物品拾取、动画与特效

让我们先来看看第一个要实现的效果。请添加图片描述
这是一个钥匙卡的模型加动画加特效。

那么这个效果是如何实现的呢?

我来给大家拆分下。
请添加图片描述
首先在整个模型上添加一个球形碰撞体SphereColloder,用于人物触碰到的时候做捡取操作。
请添加图片描述

  1. 获取人物身上的背包管理脚本

  2. 当该碰撞体(钥匙卡)被碰触到时,判断碰触对象是不是人物

  3. 是人物的话,将钥匙卡的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个内容就讲完了,希望大家有所收获。

如果大家有想了解的知识和内容可以添加微信
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值