powers0010 发表于 2017-10-15 17:03:48

求教AIController中调用MoveToActor,无法触发RequestDirectMove的问题.

如题,AIController调用MoveToActor,在Pawn中覆写RequestDirectMove来控制移动,本来好好地,突然就没用反应了,求教。AIController里面:

void AAITankController::Tick(float DeltaTime)
{
        Super::Tick(DeltaTime);

        auto PlayerTank = GetWorld()->GetFirstPlayerController()->GetPawn();
        auto ControlledPawn = GetPawn();

        if (!PlayerTank || !ControlledPawn) { return; }

                //向玩家移动
        MoveToActor(PlayerTank,AcceptRadiu);   //在这里调用MoveToActor

}

//Pawn的MovementComponent里面
void UTankMovementComponent::RequestDirectMove(const FVector& MoveVelocity, bool bForceMaxSpeed)
{
      UE_LOG(LogTemp, Warning, TEXT("Moveing to actor"));
}

       


mknmknmk 发表于 2017-10-16 11:22:23

复写 方法里 没有调用父类的方法名没有 override 关键字

powers0010 发表于 2017-10-16 12:18:21

mknmknmk 发表于 2017-10-16 11:22
复写 方法里 没有调用父类的方法名没有 override 关键字

我是属于覆写啊。。。。。
“要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。”
“override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。”
看意思,应该是需要的吧

mknmknmk 发表于 2017-10-16 13:43:32

https://wiki.unrealengine.com/Debugging_How_To_Debug_Packaged_Games

debug 一下
页: [1]
查看完整版本: 求教AIController中调用MoveToActor,无法触发RequestDirectMove的问题.