上一篇博客里 咱已經在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()); } }嗯。就是醬紫
新聞熱點
疑難解答
圖片精選