58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
|
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||
|
|
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
#include "CoreMinimal.h"
|
||
|
|
#include "GameFramework/PlayerController.h"
|
||
|
|
#include "RoverController.generated.h"
|
||
|
|
|
||
|
|
/**
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
UCLASS()
|
||
|
|
class BXSSP_API ARoverController : public APlayerController
|
||
|
|
{
|
||
|
|
GENERATED_BODY()
|
||
|
|
public:
|
||
|
|
ARoverController();
|
||
|
|
|
||
|
|
// 设置鼠标显示状态
|
||
|
|
UFUNCTION(BlueprintCallable)
|
||
|
|
void SetMouseShowStatus(bool bStatus);
|
||
|
|
|
||
|
|
// 获得鼠标下撞击点位置
|
||
|
|
UFUNCTION(BlueprintCallable)
|
||
|
|
bool GetUnderMouseHitPosition(FHitResult& HitResult);
|
||
|
|
|
||
|
|
// 获得屏幕中心撞击位置
|
||
|
|
UFUNCTION(BlueprintPure)
|
||
|
|
bool GetUnderscreenCenterHitPosition(FHitResult& HitResult);
|
||
|
|
bool GetUnderScreenHitPosition(const FVector2D& ScreenPosition, FHitResult& HitResult);
|
||
|
|
UFUNCTION(BlueprintPure)
|
||
|
|
static FVector2D GetScreenCenterPosition();
|
||
|
|
protected:
|
||
|
|
|
||
|
|
virtual void BeginPlay()override;
|
||
|
|
|
||
|
|
private:
|
||
|
|
// 重置鼠标位置到点击点
|
||
|
|
void ResetMousePositionToClickPoint();
|
||
|
|
UFUNCTION()
|
||
|
|
void RotateCameraToTargetPoint(FRotator Rotation);
|
||
|
|
private:
|
||
|
|
|
||
|
|
// 把鼠标位置重置到屏幕开始点击时的位置(用于防止鼠标拖到屏幕边界出现不能拖动情况)
|
||
|
|
FTimerHandle ResetMousePositionTimer;
|
||
|
|
|
||
|
|
FVector2D ClickMousePosition;
|
||
|
|
|
||
|
|
|
||
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Player, meta = (AllowPrivateAccess = "true"))
|
||
|
|
class ARover* Rover;
|
||
|
|
public:
|
||
|
|
static ARoverController* PlayerController;
|
||
|
|
// (当开始自动旋转时,先让摄像机看向目标对象)时用的计时器
|
||
|
|
FTimerHandle RotateCameraTimer;
|
||
|
|
|
||
|
|
};
|