UE4 射线检测

1.获得射线起点

FVector StartLocation;
	FRotator PlayerRotation;

	this->GetWorld()->GetFirstPlayerController()
		->GetPlayerViewPoint(StartLocation, PlayerRotation);

2.获得射线终点

FVector EndLocation = PlayerRotation.Vector() * RayLength;

3.获得射线路径

FVector LineTrace = StartLocation + EndLocation;

4.画出射线


	DrawDebugLine(GetWorld(), StartLocation, LineTrace, FColor(255, 0, 0),
		false, 0.0f, 0.0f, 10.0f);

5.发出射线,并返回被击中物体

FHitResult HitResult;	
	FCollisionQueryParams QueryParams = FCollisionQueryParams("", false, GetOwner());
	GetWorld()->LineTraceSingleByObjectType(HitResult, StartLocation,
			LineTrace,
		FCollisionObjectQueryParams(ECollisionChannel::ECC_PhysicsBody), 
		QueryParams );

6.打印目标名字

AActor *HitObject = HitResult.GetActor();
	if (HitObject != nullptr)
	{
		UE_LOG(LogTemp, Warning, TEXT("Name: %s"), *(HitObject->GetName()));
	}

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值