UE4 如何获取鼠标点击时的坐标
来源:
52vr |
责任编辑:传说的落叶 |
发布时间: 2019-06-04 08:29 | 浏览量:
使用PlayerController获取
1,获取鼠标在当前场景中坐标系统的中的position,加入场景地图的范围是一千平方米,那么这个position的范围也是1000米x1000米。
注册鼠标事件
- FInputActionBinding &action1 = InputComponent->BindAction("SetDestination", IE_Pressed, this, &AHPlayerController::OnSetDestinationPressed);
函数实现MoveToMouseCursor(),此函数放在PlayerController::PlayerTick()内调用,重写下PlayerTick():
- void AHPlayerController::MoveToMouseCursor()
- {
- // Trace to see what is under the mouse cursor
- FHitResult Hit;
- GetHitResultUnderCursor(ECC_Visibility, false, Hit);
- if (Hit.bBlockingHit)
- {
- // We hit something, move there
- SetNewMoveDestination(Hit.ImpactPoint);
- }
- }
2,获取鼠标再显示屏内的坐标系统的position。假如屏幕分辨率是1280x720,那么这个position的范围就是(0, 0)到(1280, 720)。PlayerController::GetMousePosition()。
- AHPlayerController* PC = ...
- float LocX = 0;
- float LocY = 0;
- PC->GetMousePosition(LocX, LocY);
3,触屏设备上获取场景内点击的position,其范围与第1种情况相同。
注册touch事件
- InputComponent->BindTouch(EInputEvent::IE_Pressed, this, &AHPlayerController::MoveToTouchLocation);
函数实现:
- void AHPlayerController::MoveToTouchLocation(const ETouchIndex::Type FingerIndex, const FVector Location)
- {
- FVector2D ScreenSpaceLocation(Location);
- // Trace to see what is under the touch location
- FHitResult HitResult;
- GetHitResultAtScreenPosition(ScreenSpaceLocation, CurrentClickTraceChannel, true, HitResult);
- if (HitResult.bBlockingHit)
- {
- // We hit something, move there
- SetNewMoveDestination(HitResult.ImpactPoint);
- }
- }
使用Viewport接口获取
- //坐标值是整数
- FIntPoint MousePoint;
- GEngine->GameViewport->Viewport->GetMousePos(MousePoint);
- //坐标是标准float
- FVector2D CursorPos;
- GEngine->GameViewport->GetMousePosition(CursorPos);
相关文章
网友评论
全部评论:0条
推荐
热门