Why does not collision event invoked at Tick() function one more than?

Hi!

I changed SetWorldLocation to AddActorWorldOffset. But it was not worked.
OnHit not called.

//-------------------------------------------------------------------------------------------------------------------------------

MyActor::MyActor(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{

CollisionComponent = ObjectInitializer.CreateDefaultSubobject(this, TEXT(“CollisionComponent”));

CollisionComponent->InitSphereRadius(30.0f);

CollisionComponent->SetNotifyRigidBodyCollision(true);

CollisionComponent->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);

CollisionComponent->SetCollisionObjectType(ECollisionChannel::ECC_PhysicsBody);

CollisionComponent->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Block);

CollisionComponent->bGenerateOverlapEvents = true;

RootComponent = CollisionComponent;

PrimaryActorTick.bCanEverTick = true;

}

void MyActor::init()
{

OnActorHit.AddDynamic(this, &MyActor::OnHit);

ActorPosition = FVector(0.0f, 0.0f, 0.0f);

}

void MyActor::OnHit()
{

MessageBox(NULL, TEXT(“Hit OK!”), TEXT(“COMMENT”), MB_OK);

}

void MyActor::Tick(float DeltaTime)

{

/----------------------------------------------------------------------------------------------------------/

RootComponent->SetWorldLocation(ActorPosition);

→ RootComponent->AddActorWorldOffset(ActorPosition - GetActorLocation());

RootComponent->SetWorldLocation(ActorPosition + FVector(0.0f, 0.0f, 10000.0f);

→ RootComponent->AddActorWorldOffset(ActorPosition + FVector(0.0f, 0.0f, 10000.0f) - GetActorLocation());

RootComponent->SetWorldLocation(ActorPosition + FVector(0.0f, 0.0f, -10000.0f);

→ RootComponent->AddActorWorldOffset(ActorPosition + FVector(0.0f, 0.0f, -10000.0f) - GetActorLocation());

/----------------------------------------------------------------------------------------------------------/

}

Engine Version : 4.6.1

OS : Windows 7