// Fill out your copyright notice in the Description page of Project Settings.#pragmaonce#include"CoreMinimal.h"#include"GameFramework/Pawn.h"#include"MyCharacter.generated.h"UCLASS()classCITYTWIN_API AMyCharacter :public APawn
{GENERATED_BODY()public:// Sets default values for this pawn's propertiesAMyCharacter();//box作为根组件UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Camera")classUBoxComponent* CollisionBox;//相机组件UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Camera")classUCameraComponent* FollowCamera;//相机臂组件UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Camera")classUSpringArmComponent* CameraBoom;protected:// Called when the game starts or when spawnedvirtualvoidBeginPlay()override;public:// Called every framevirtualvoidTick(float DeltaTime)override;// Called to bind functionality to inputvirtualvoidSetupPlayerInputComponent(classUInputComponent* PlayerInputComponent)override;};
声明创建组件,硬编码一些基本属性
// Fill out your copyright notice in the Description page of Project Settings.#include"MyCharacter.h"#include"Components/BoxComponent.h"#include"Camera/CameraComponent.h"#include"GameFramework/SpringArmComponent.h"// Sets default valuesAMyCharacter::AMyCharacter(){// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick =true;
CollisionBox =CreateDefaultSubobject<UBoxComponent>(TEXT("CollisionBox"));
CollisionBox->SetupAttachment(GetRootComponent());
CameraBoom =CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
CameraBoom->SetupAttachment(CollisionBox);
CameraBoom->TargetArmLength =1500.f;
CameraBoom->bUsePawnControlRotation =false;
CameraBoom->bEnableCameraLag =true;//摄像机臂平滑
CameraBoom->bEnableCameraRotationLag =true;//启用相机旋转延迟
CameraBoom->bDoCollisionTest =false;//关闭摄像机臂碰撞
FollowCamera =CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
FollowCamera->SetupAttachment(CameraBoom);
FollowCamera->bUsePawnControlRotation =false;}// Called when the game starts or when spawnedvoidAMyCharacter::BeginPlay(){Super::BeginPlay();}// Called every framevoidAMyCharacter::Tick(float DeltaTime){Super::Tick(DeltaTime);}// Called to bind functionality to inputvoidAMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent){Super::SetupPlayerInputComponent(PlayerInputComponent);}
创建这个Pawn类的蓝图进行之前登录页面动画的视角旋转方向问题的解决
首先将蓝图生成对齐到视角
将Pawn类自动接收玩家0
然后删除PlayerStart
运行结果
移动增强输入系统
在项目建立.cs文件中添加这个模块
绑定增强输入系统操作
MyCharacter.h
// Fill out your copyright notice in the Description page of Project Settings.#pragmaonce#include"CoreMinimal.h"#include"GameFramework/Pawn.h"#include"../../../../UE_5.2.1/UE_5.2/Engine/Plugins/EnhancedInput/Source/EnhancedInput/Public/InputActionValue.h"#include"MyCharacter.generated.h"UCLASS()classCITYTWIN_API AMyCharacter :public APawn
{GENERATED_BODY()public:// Sets default values for this pawn's propertiesAMyCharacter();//box作为根组件UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Camera")classUBoxComponent* CollisionBox;//相机组件UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Camera")classUCameraComponent* FollowCamera;//相机臂组件UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Camera")classUSpringArmComponent* CameraBoom;//绑定映射UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Input")classUInputMappingContext* MappingContext;//移动绑定UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Input")classUInputAction* LeftButtonAction;protected:// Called when the game starts or when spawnedvirtualvoidBeginPlay()override;//鼠标按下操作事件voidLeftMouseDown(const FInputActionValue& value);voidLeftMouseUp(const FInputActionValue& value);public:// Called every framevirtualvoidTick(float DeltaTime)override;// Called to bind functionality to inputvirtualvoidSetupPlayerInputComponent(classUInputComponent* PlayerInputComponent)override;};
MyCharacter.cpp
// Fill out your copyright notice in the Description page of Project Settings.#include"MyCharacter.h"#include"Components/BoxComponent.h"#include"Camera/CameraComponent.h"#include"GameFramework/SpringArmComponent.h"#include"EnhancedInputSubsystems.h"#include"EnhancedInputComponent.h"// Sets default valuesAMyCharacter::AMyCharacter(){// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick =true;
CollisionBox =CreateDefaultSubobject<UBoxComponent>(TEXT("CollisionBox"));
CollisionBox->SetupAttachment(GetRootComponent());
CameraBoom =CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
CameraBoom->SetupAttachment(CollisionBox);
CameraBoom->TargetArmLength =1500.f;
CameraBoom->bUsePawnControlRotation =false;
CameraBoom->bEnableCameraLag =true;//摄像机臂平滑
CameraBoom->bEnableCameraRotationLag =true;//启用相机旋转延迟
CameraBoom->bDoCollisionTest =false;//关闭摄像机臂碰撞
FollowCamera =CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
FollowCamera->SetupAttachment(CameraBoom);
FollowCamera->bUsePawnControlRotation =false;}// Called when the game starts or when spawnedvoidAMyCharacter::BeginPlay(){Super::BeginPlay();
APlayerController* PlayerController =Cast<APlayerController>(Controller);if(PlayerController){
UEnhancedInputLocalPlayerSubsystem* Subsystem =
ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController->GetLocalPlayer());if(Subsystem){
Subsystem->AddMappingContext(MappingContext,0);}}}voidAMyCharacter::LeftMouseDown(const FInputActionValue& value){}voidAMyCharacter::LeftMouseUp(const FInputActionValue& value){}// Called every framevoidAMyCharacter::Tick(float DeltaTime){Super::Tick(DeltaTime);}// Called to bind functionality to inputvoidAMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent){Super::SetupPlayerInputComponent(PlayerInputComponent);
UEnhancedInputComponent* EnhancedInputConponent =Cast<UEnhancedInputComponent>(PlayerInputComponent);if(EnhancedInputConponent){
EnhancedInputConponent->BindAction(LeftButtonAction, ETriggerEvent::Started,this,&AMyCharacter::LeftMouseDown);
EnhancedInputConponent->BindAction(LeftButtonAction, ETriggerEvent::Completed,this,&AMyCharacter::LeftMouseUp);}}
解题思路 相关代码
class Solution {public boolean checkSubarraySum(int[] nums, int k) {int s[] new int[nums.length1];for(int i1;i<nums.length;i) s[i]s[i-1]nums[i-1];Set<Integer> set new HashSet<>(); for(int i2;i<nums.length;i){set.ad…