简书链接:ue射线点击任意位置人物移动办法点击物品,相机移动办法
文章字数:354,阅读全文大约需要1分钟
第一种方法是在事件里面写
获取单元向量(pawn位置,点击的物体位置)->添加移动输入()
这里第二种瞬移 消除高度
设置acotr位置等于 点击的位置就行
vector 5,5,5x vector1,1,1等于原数 ,vector5,5,5+0,0,0也是
这里可以创建vector方法来实现新的构造
*一个新的用来分解,也可以直接分解,但是我这其他地方要用到就没这么做 .
image.png

最后按通道获取光标下的命中结果-中断命中结果-localtion=设置actor位置

解决和旋转冲突问题

在按下的时候get game time for seconds ,松开的时候也获取, 相减 返回的一般是0.3 0.5之类的玩意.判断小于1就行
另外多个actor 都有鼠标单击事件就右键设置这个事件为不消耗就行

2023-7-13 14:39:38
人物移动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

void UEUtil::PositionToActor(APlayerController* controler, AActor* actor)
{
if (controler && actor)
{
FBox BoundingBox = actor->GetComponentsBoundingBox();
const FVector Center = BoundingBox.GetCenter();
float Radius = BoundingBox.GetExtent().Length();
float CameraFov = controler->PlayerCameraManager->GetFOVAngle();
float AspectRatio = controler->PlayerCameraManager->DefaultAspectRatio;
if (AspectRatio > 1.0f)
{
Radius *= AspectRatio;
}
float Distance = Radius / FMath::Tan(FMath::DegreesToRadians(CameraFov / 2));
FVector ResultLocation = Center - controler->PlayerCameraManager->GetCameraRotation().Vector() * Distance;
APawn* pawn = controler->GetPawn();
FHitResult SweepHitResult; // 创建默认的 FHitResult 对象
pawn->K2_SetActorLocation(ResultLocation, false, SweepHitResult, false);
}


}