三种Combat system碰撞检测方法
-
玩家射线检测: 适合弹道攻击
-
玩家扇形检测: 适合站桩攻击(Stand-Still Attack / Stand-Still DPS)
-
武器碰撞体检测: 适合滑步攻击、移动连招等。
玩家射线检测sphere trace for object 可以从玩家射出一个类圆柱体,可以适当调整range和radius,远程和近战通用。
玩家扇形检测:是从玩家位置生成球型碰撞体,并使用dot检测玩家是否面向敌人,只适合站桩攻击,灵活性非常差。
武器碰撞检测:在武器上绑定碰撞体。
按下攻击按键(如LMB)时:
1.设置isSLASHboolean为true攻击动画结束返回false(用于状态机切换条件)
2.启用碰撞体,为了确保在击打动画的持续时间内只造成一次伤害,检测到一次碰撞后立刻禁用碰撞体,直到再次按下LMB
cs
// 事件:OnAttackStart(点击左键触发攻击)
OnAttackStart:
设置 CanDealDamage 为 True // 允许造成伤害
启用 碰撞体 // 启用碰撞体以检测敌人
// 事件:OnAttackEnd(攻击动画完成时调用)
OnAttackEnd:
设置 CanDealDamage 为 False // 不再允许造成伤害
禁用 碰撞体 // 禁用碰撞体
// 事件:OnComponentBeginOverlap(碰撞检测,敌人进入碰撞体时调用)
OnComponentBeginOverlap(OtherActor):
如果 CanDealDamage 为 True 且 OtherActor 是敌人 且 EnemyHit 为 空 或 不等于 OtherActor:
调用 造成伤害(OtherActor) // 对敌人造成伤害
设置 CanDealDamage 为 False // 设置为不可重复伤害
设置 EnemyHit 为 OtherActor // 记录当前敌人已被击中
// 函数:造成伤害
造成伤害(Enemy):
Enemy.调用 受到伤害(伤害数值) // 对敌人施加一次伤害
角色动画管理:
1. Locomotion(运动)
Locomotion 通常指角色在场景中的移动动画,包括行走、跑步、跳跃、滑行等。它侧重于角色在空间中连续移动的动画过渡和流畅性,常用于角色运动的平滑过渡,比如从站立到行走,再到奔跑等。
-
主要特点:
- 动画平滑过渡:Locomotion系统通常包含Blend Spaces,用于处理从一个速度或方向切换到另一个的平滑过渡。
- 实时性:Locomotion系统基于玩家的输入(例如按下移动键)实时响应,能够根据角色的速度或方向自动选择合适的运动动画。
- 注重运动流畅性:通过Blend Space等技术,使角色的移动动画看起来更加自然,例如在从站立到跑步、再到停止的过程中无缝过渡。
-
典型使用场景:
- 角色移动动画的过渡处理,比如从走路到跑步。
- 在不同地形上调整角色的步伐和动作。
- 角色跳跃、下蹲等运动行为的实现。
2. State Machine(状态机)
State Machine 是一种管理动画状态切换的系统。在状态机中,动画状态(例如站立、行走、跳跃、攻击等)由一系列逻辑条件控制,确保角色在特定状态下执行合适的动画。状态机可以控制从一种状态到另一种状态的切换,并定义各个状态的动画。
-
主要特点:
- 逻辑控制:状态机通过逻辑条件(例如变量、标志位)来决定动画的切换,例如只有在跳跃键被按下并且角色处于地面时才允许从站立切换到跳跃。
- 状态间关系明确:定义了各个状态之间的转换条件,避免在不合适的时间触发错误的动画。例如,防止角色在空中进行地面攻击。
- 多功能性:状态机不仅用于Locomotion,还可以管理更多的复杂动画状态,例如攻击、受伤、死亡等。
-
典型使用场景:
- 管理角色的战斗动画,比如从普通状态进入攻击状态。
- 控制复杂的过渡条件,比如从跑步状态切换到跳跃状态时需要先检测是否满足跳跃条件。
- 动画的切换控制和优先级管理,确保角色只在合适的时间进行合适的动作。
3.Animation Montage长度修改
一三人称蓝图切换
混合动画(如两套上下半身分别混合)
https://www.youtube.com/watch?v=wOIlkertaLA
把武器插到skeleton bone socket上
角色重定向
就是5.4右键动画(绿)一键重定向