简单说下我的想法,首先是创建了一个用来创建蒙太奇的数组,然后添加一个整数变量让动画每次按下鼠标左键都能按顺序播放,因此,我想要在每个蒙太奇之间插入一个动画,触发条件是没有按下任何一个按键和距离上一次按下鼠标左键几秒后自动触发插入的动画,说人话就是:按“F”键是攻击,想要让连招之间加入一个待机动画。麻烦了。
ue动画蒙太奇,连招系统
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 阿里嘎多学长 2024-07-19 07:13关注
以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:
在虚幻引擎(UE)中实现你描述的连招系统和动画蒙太奇,可以通过以下步骤来实现:
1. 创建蒙太奇数组
首先,你需要在角色蓝图中创建一个数组来存储蒙太奇动画。这可以通过在角色蓝图中添加一个数组变量来完成。
- 打开角色蓝图。
- 在“变量”选项卡中,添加一个新的数组变量,类型选择“Animation Sequence”或“Animation Montage”。
- 命名这个数组,例如“ComboAnimations”。
2. 实现动画顺序播放
你需要一个整数变量来控制当前播放的动画索引,并在按下鼠标左键时更新这个索引。
- 在角色蓝图中添加一个新的整数变量,例如“CurrentAnimationIndex”。
- 在“事件图表”中,添加一个“Input Action”事件,绑定到鼠标左键的点击事件。
- 在这个事件的执行流中,增加逻辑来更新“CurrentAnimationIndex”的值,并播放对应的动画。
+-----------------+ | Mouse Left Click | +-----------------+ | v +-----------------+ | Update Index | +-----------------+ | v +-----------------+ | Play Animation | +-----------------+
3. 插入待机动画
在蒙太奇动画之间自动插入待机动画,可以通过检测按键状态和时间来实现。
- 在角色蓝图中添加一个布尔变量,例如“IsIdle”。
- 在“事件图表”中,添加一个“Tick”事件,用于定时检查。
- 在“Tick”事件中,添加逻辑来检测是否没有任何按键被按下,并且距离上一次按下鼠标左键已经过去了几秒。
+-----------------+ | Tick Event | +-----------------+ | v +-----------------+ | Check Key Press | +-----------------+ | v +-----------------+ | Check Time | +-----------------+ | v +-----------------+ | Play Idle Anim | +-----------------+
4. 实现攻击连招
通过按“F”键触发攻击动作,并在攻击动作之间加入待机动画。
- 在角色蓝图中添加一个“Input Action”事件,绑定到“F”键的按下事件。
- 在这个事件的执行流中,播放攻击动画,并在动画结束后重置“CurrentAnimationIndex”以便开始下一个连招。
+-----------------+ | F Key Press | +-----------------+ | v +-----------------+ | Play Attack Anim| +-----------------+ | v +-----------------+ | Reset Index | +-----------------+
示例代码
以下是一些示例代码片段,展示如何在角色蓝图中实现这些功能:
// 更新动画索引 Event Mouse Left Click { Self.CurrentAnimationIndex = Self.CurrentAnimationIndex + 1; Play Animation Montage by Index (Self.ComboAnimations, Self.CurrentAnimationIndex); } // Tick 事件 Event Tick { bool bIsAnyKeyHeld = false; if (IsInputKeyHeld("Left Mouse Button") || IsInputKeyHeld("F")) { bIsAnyKeyHeld = true; } float DeltaTime = GetWorld().GetDeltaSeconds(); float TimeSinceLastClick = GetWorld().GetTimeSeconds() - Self.LastMouseClickTime; if (!bIsAnyKeyHeld && TimeSinceLastClick > 3.0) { Self.IsIdle = true; Play Animation Montage (Self.IdleAnimation); } else { Self.IsIdle = false; } } // F 键按下事件 Event Input Action F { Play Animation Montage (Self.AttackAnimation); Self.LastMouseClickTime = GetWorld().GetTimeSeconds(); Self.CurrentAnimationIndex = 0; }
通过这些步骤和示例代码,你可以实现一个基本的连招系统和动画蒙太奇,其中在连招之间自动插入待机动画。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 35114 SVAC视频验签的问题
- ¥15 impedancepy
- ¥15 在虚拟机环境下完成以下,要求截图!
- ¥15 求往届大挑得奖作品(ppt…)
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图
- ¥15 UE5.1局部变量对蓝图不可见