【问题标题】:Unreal 4 C++ Actor MovementUnreal 4 C++ 演员动作
【发布时间】:2016-08-29 02:43:38
【问题描述】:

我有一个演员动作的数据,该数据是在游戏开始时从文件中读取的。读入的数据包含 Actor 应该移动到的下一个向量位置。我目前让 Actor 从 Position 移动到 Position 没问题...直到我开始将动画添加到附加到 Actor 的骨架网格体中。

我的问题:我如何找出速度来确定播放空闲、步行、慢跑和跑步的动画?它目前没有速度,因为我正在调整位置:

SetActorLocation(FMath::Lerp(GetActorLocation(), newPos, 0.01));

关于如何根据距离和速度设置正确的动画有什么想法吗?

我是否应该将我的 Actors 运动移动到 Character 以便我可以使用 AddMovementInput 来获得速度。那么,如果我走那条路,我该怎么说:

在 X 时间内将此角色从我当前的位置移动到我的下一个位置,为角色提供在动画选择中使用的正确速度。

【问题讨论】:

    标签: c++ animation unreal-engine4


    【解决方案1】:

    您能否标准化两个向量长度之间的差异 (GetWorldLocation) 并使用 abs(floating point) 结果作为 X 变量放入 1D 混合空间中以在您的动画 BP 中进行空闲、步行、慢跑和跑步?还要确保考虑“接受半径”,否则一旦到达位置,它就无法完全找到它并继续快速转弯。

    不确定您为什么要从 Vector 到 Vector。我会亲自使用(MoveToActor 或 MoveToLocation):

    AMyPawn->MoveToActor(AMyActor, 90.f,true,true,false,0,true);
    

    干净多了!还有 MoveToLocation,使用 BT/BB。

    【讨论】:

    • 感谢您的回复!我有一些问题:我应该使用哪个类作为我的演员的基础,由正在读入的数据控制?演员/角色/典当/ - 为什么?移动它的最佳方法是什么?勒普位置?移动到?
    • Def 典当/角色。我实际上有一个 EnemyCharacter (AEnemyCharacter.h + cpp) 类,它继承自 ACharacter (Character.h + cpp),它本质上是从 APawn (Pawn.h + cpp) 继承的。角色已经内置了移动逻辑!他们负责玩家或 AI 与世界之间的所有物理交互。您可以直接引导角色移动组件,并为电机供电。您可以使用 MoveToLocation、MoveTo 或直接移动。这些都在您的行为树中可用。您还可以使用不同的敌人目标设置 Blackboard!
    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2013-05-19
    • 2016-12-28
    • 2018-07-10
    • 2015-11-24
    相关资源
    最近更新 更多