您的位置:首页 > 编程语言 > C语言/C++

UE4学习4 用射线控制物体转圈圈 C++

2017-03-04 10:15 417 查看
上一篇博客里 咱已经在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());
}
}嗯。就是酱紫
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ UE4