新人继续求助。

[复制链接]
查看2070 | 回复2 | 2017-11-29 21:15:19 | 显示全部楼层 |阅读模式
我创建了三个BindAction的按键。
[mw_shl_code=cpp,true]        InputComponent->BindAction("DunForWard", IE_Pressed, this, &AOneCharacter:unForWard);
        InputComponent->BindAction("DunRight", IE_Pressed, this, &AOneCharacter:unRight);
        InputComponent->BindAction("DunLeft", IE_Pressed, this, &AOneCharacter:unLeft);[/mw_shl_code]


然后是用播放蒙太奇来实现动画的

[mw_shl_code=applescript,true]//Play DunForWard Montage
void AOneCharacter:unForWard()
{
        if (DunForWardMontage != NULL)
        {
                UAnimInstance* AnimInstance = Mesh1P->GetAnimInstance();

                if (AnimInstance != NULL)
                {
                        AnimInstance->Montage_Play(DunForWardMontage, 1.0f);
                }
        }
}

//Play DunRight Montage
void AOneCharacter:unRight()
{
        if (DunRightMontage != NULL)
        {
                UAnimInstance* AnimInstance = Mesh1P->GetAnimInstance();

                if (AnimInstance != NULL)
                {
                        AnimInstance->Montage_Play(DunRightMontage, 1.0f);
                }
        }
}

//Play DunLeft Montage
void AOneCharacter:unLeft()
{
        if (DunLeftMontage != NULL)
        {
                UAnimInstance* AnimInstance = Mesh1P->GetAnimInstance();

                if (AnimInstance != NULL)
                {
                        AnimInstance->Montage_Play(DunRightMontage, 1.0f);
             }
        }
}

[/mw_shl_code]

可是,播放的时候我发现蒙太奇视频有点长。停止按键之后,人物不会立马就停止动作

我试过使用IE_Releasrd,可是,我不知道要如何判断按键为假。

请问怎么样才能让它一停止按键,就会停止播放蒙太奇呢?
还有。请问如何才能用C++自定义一个按键和按键组合呢?

mknmknmk | 2017-11-30 09:42:06 | 显示全部楼层
本帖最后由 mknmknmk 于 2017-11-30 09:47 编辑

bind release 没有写

有方法 Montage_Stop
Montage_Pause  
Montage_Resume
Montage_JumpToSection
Montage_SetPlayRate
Montage_SetPosition

InputComponent->GetAxisKeyValue


PlayerController->IsInputKeyDown(EKeys::A)
回复 支持 反对

使用道具 举报

天天爱学习 | 2017-11-30 21:12:39 | 显示全部楼层
mknmknmk 发表于 2017-11-30 09:42
bind release 没有写

有方法 Montage_Stop

[mw_shl_code=cpp,true]我试了一下,发现不行,Montage_Stop的第一个参数是多少秒之后停止吗?。
void AOneCharacter::StopDunLeft()
{
        if (DunLeftMontage != NULL)
        {
                UAnimInstance* AnimInstance = Mesh1P->GetAnimInstance();

                if (AnimInstance != NULL)
                {
                        AnimInstance->Montage_Stop(0.1f, DunLeftMontage);
                }
        }
}
[/mw_shl_code]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12

主题

34

回帖

41

积分

初始化成员

积分
41