上一篇博客里 咱已经在TouchBegan里面获取了物体 还是射线获取滴。
思路:接下来。在TouchMove里面 再发射一条射线 然后。打中物体就按打中那里的坐标算 没打中就按射线的end坐标算
这个坐标减去物体的坐标 得到一个FVector 这个物体SetActorRotation就阔以转了
来。完整马
FCollisionQueryParams Trace(FName(TEXT("TRACE")), true, GetPawn());//建立射线
Trace.bReturnPhysicalMaterial = false;
Trace.bTraceComplex = true;
Trace.AddIgnoredActor(GetPawn());//忽略默认人物棋子
FHitResult Hit(ForceInit);//这个hit装反馈信息
UWorld*world = GetWorld();
if (world) {
ECollisionChannel CollisionChannel= ECC_Pawn;//貌似是个忽略Actor 。
world->LineTraceSingleByChannel(Hit, lbeg, lend, CollisionChannel, Trace);
if (Hit.GetActor())
{
FVector Dir = Hit.Location - Sphere->GetActorLocation();//如果打中实物 就实物坐标减去物体坐标得到一个方向FVector
Dir.Z = 0;
Sphere->SetActorRotation(Dir.Rotation());
}
else if (!Hit.GetActor()) {
FVector Dir = lend - Sphere->GetActorLocation();//没打中东西就按鼠标射线的末端算咯。。
Sphere->SetActorRotation(Dir.Rotation());
}
}
嗯。就是酱紫