UE4.9:移动字符(未设置位置)

时间:2015-11-18 15:39:33

标签: c++ unreal-engine4

我正在从我编写的外部应用程序发送命令。此外部应用程序通过UDP将键盘上按下的键发送到UE4。 当UE4获取消息(按下的键,例如:'w')时,我想让角色向前走(只有1个字符)。

while (true)
{

    int32 bytes_read = 0;

    if (Socket->Recv(data, sizeof(data), bytes_read)){
        data[bytes_read] = 0;

       //Should I use this, instead of SetActorLocation?
        APlayerController* playerController = World->GetFirstPlayerController();

        ACharacter* myCharacter = UGameplayStatics::GetPlayerCharacter(World, 0);
        FVector characterLocation = myCharacter->GetActorLocation();
        FVector newCharacterLocation = characterLocation + FVector(10, 0, 0);

        //This just moves the character, but does not walk and no collision is included
        myCharacter->SetActorLocation(newCharacterLocation); 

        //FPlatformProcess::Sleep(0.1);
    }
}

注意:循环正在另一个线程上执行

SetActorLocation()对我来说不起作用,因为它会移动角色,但实际上只是“传送”。我想指示角色移动,好像我正在玩游戏并以正常方式控制角色。

我想通过外部应用程序控制角色。我应该怎样做才能使角色移动,就像我自己玩游戏并按下,例如:'w',向前移动?

1 个答案:

答案 0 :(得分:0)

我明白了......

  while (true)
    {
        int32 bytes_read = 0;
        if (Socket->Recv(data, sizeof(data), bytes_read)){
            data[bytes_read] = 0;
            ACharacter* myCharacter = UGameplayStatics::GetPlayerCharacter(World, 0);
            myCharacter->AddMovementInput(FVector(10, 0, 0), 5.0);
        }
    }