// 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);}}
Graveyard 题面翻译
题目描述
在一个周长为 10000 10000 10000的圆上等距分别着 n n n个雕塑。现在又有 m m m个新雕塑加入(位置可以随意),希望所有 n m nm nm个雕塑在圆周上分布均匀。这就需要移动其中一些原有的雕塑。要求 n n n个雕塑移动的总距离尽量小。
输入格式
输…
by Alexander Rush Our hope: reasoning about LLMs Our Issue 文章目录 Perpexity(Generation)Attention(Memory)GEMM(Efficiency)用矩阵乘法说明GPU的工作原理 Chinchilla(Scaling)RASP(Reasoning)结论参考资料 the five formulas perpexity —— generationattention —— m…
Stata 是一种统计分析软件,适用于数据管理、数据分析和绘图。Stata 15 for Mac 具有以下功能: 数据管理:Stata 提供强大的数据管理功能,用户可以轻松导入、清洗、整理和管理数据集。 统计分析:Stata 提供了广泛的统计…