上一篇博客里 咱已经在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()); } }嗯。就是酱紫
新闻热点
疑难解答
图片精选