kizumi_header_banner_img

Hello! Beautiful Kizumi!

加载中

文章导读

鬼鬼鬼战斗系统


avatar
Yuyas 2025年12月19日 17

角色控制器基类

特性[RequireComponent(Type)]在挂载该脚本时会自动挂载Type类型的组件,这里挂载CharacterController组件

自身重力实现

角色控制器

实现移动,转向逻辑

对应逻辑要执行动画的播放

相机控制(碰撞检测)

这里用一个空物体作为主相机的父亲,相机的鼠标控制旋转逻辑由相机本身GameObject控制,碰撞的距离变化由父物体控制,实现逻辑分离

Physical.SphereCast检测后方是否有物体

obj.TransformPoint(pos) 相对位置转世界位置

攀爬

可以在角色基类里实现

hit.collider.bounds 获取对应碰撞体的轴对齐包围盒,包含了盒子的大小等一些数据,这里主要用于检测墙体高度

在攀爬动作上挂载StateMachineBehaviour脚本,在OnStateUpdate(动画更新)函数中使用_animator.MatchTarget匹配到对应要抓取的位置

抓取位置通过全局事件从角色基类里实现射线检测墙体后传递过来

抓取墙体的高度应为_hitOfClimbWall.collider.bounds.size.y / 2 + _hitOfClimbWall.collider.transform.position.y

事件中心管理器

用于全局调用方法

用Dictionary实现字符串映射对应的事件

使用IEventCenter接口作为Value事件,方便使用泛型父类继承IEventCenter,实现多参数传递

Animator动画相关

使用AnimationStringToHash将动画名称或Animator变量转化为对应得Hash值,实现高速调用

角色招式系统

使用ScriptableObject实现招式逻辑与数据分离

用ComboDataSO存储单个招式,包含招式名称,CD(冷却到可以衔接下一招),伤害等

用ComboSO存储连招,表现为List<ComboDataSO>,提供方法获取对应ComboDataSO的相关信息,方便在实现ComboControl时获取消息

连招攻击间隔由计时器帮助实现,在一招打出时_canCombo=false,用计时器定时在对应CD后执行事件将_canCombo=ture

计时器

分为GameTimer和GameTimerManager

主要作用为倒计时执行事件

音效

使用对象池缓存音效的GameObject,挂载音效播放脚本

音效数据使用ScriptableObject配置

音效播放使用AnimationEvent



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码

个人信息

avatar

24
文章
1
评论
1
用户

近期文章