[UE4]使用PlayerController获取鼠标点击时的坐标
2024-08-24 09:48:03
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 = ;
float LocY = ;
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);
}
}
最新文章
- IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)
- html初学者笔记01
- Metro UI 菜单(Winform)
- 解决多网卡SNMP获取不到数据的问题
- Oracle建表实例
- 【转】SVN服务器端安装、配置与管理--不错
- redis缓存工具Jedis进行跨jvm加锁(分布式应用)--不幸暂弃用--能够做第三方锁使用
- 我的Python成长之路---第二天---Python基础(7)---2016年1月9日(晴)
- appium实例编写(1)---以ContactsTest.apk 操作为例
- JavaSe:UncaughtExceptionHandler
- JS实现快速排序,冒泡排序
- .NET Core 多项目工程生成EF迁移代码
- mysql 开发基础系列20 事务控制和锁定语句(上)
- Java面试题详解四:==和equals的去别
- Compiling U-Boot
- ubuntu下安装bin文件
- viewer.js使用
- 6、Redis中对Hash类型的操作命令
- 创建 React-Native 工程时,如何指定特定的 React-Native 版本
- 股票的历史市盈率查询PE