这一次开始制作人物的攻击。首先打开之前的HeroDemo,添加一个函数
void Attack();
并在SetPlayerComponent中绑定按键
PlayerInputComponent->BindAction("Attack", IE_Pressed, this, &AHeroDemo::Att
并在项目管理器中添加该 *** 作。
选择使用的骨骼体,并将蒙太奇命名为AttackM。
进入界面后,在资源管理器中选择合适的攻击动画并拖拽到蒙太奇中,结果如下。
点击分段,将default重命名为Attack。这里名称将会在后续代码中使用。
接着打开动画蓝图,从状态机引一根线出来,搜索slot,调用插槽DefaultSlot,再与输出姿势连接。
然后返回场景界面,选择已经创建的人物,搜索Montage,选用已经制作好的AttackM。下面继续完善代码。
在头文件添加如下代码,创建一个Montage类对象,用于控制蒙太奇动画播放等 *** 作。
UPROPERTY(EditAnywhere, Category = Montage) class UAnimMontage* AttackMontage;
下面编写Attack函数的代码。
void AHeroDemo::Attack() { UAnimInstance* AnimInstance = Cast(GetMesh()->GetAnimInstance()); //为动画蓝图的C++版本 熟练后可自己编写来创建逻辑。 if (AnimInstance != nullptr) { if (!AnimInstance->Montage_IsPlaying(AttackMontage)) { AnimInstance->Montage_Play(AttackMontage); //播放使用的蒙太奇 AnimInstance->Montage_JumpToSection(FName("Attack"), AttackMontage); //Fname()中的内容为分段时设置的名称Attack。 } } }
返回编辑器进行编译、运行。点击鼠标左键,成功播放攻击动画。
但是我们会发现攻击时可以跳跃和移动,此时的动作会变得很不协调,我们需要在攻击时禁止移动和跳跃。且攻击方式很单一,在这里一并进行扩展。
且听下回分解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)