首页 > 其他分享 >UE5学习笔记3-关于charactor的相机和弹簧臂组件

UE5学习笔记3-关于charactor的相机和弹簧臂组件

时间:2024-08-04 19:54:58浏览次数:12  
标签:ABlasterCharacter void 弹簧 组件 CameraBoom FollowCamera UE5 include charactor

一、环境说明,UE5.4 + vs2022 + win11

二、相机和弹簧臂的作用

        个人理解上,相机的作用相当于一个视角,我将其理解成是一个人在哪个地方朝向哪个方向看,弹簧臂的用用我将其理解成为一个将人的视角和人物模型或其他模型连接的桥梁

三、相机和弹簧臂的代码

        xxx.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "BlasterCharacter.generated.h"

UCLASS()
class BLASTER_API ABlasterCharacter : public ACharacter
{
	GENERATED_BODY()

public:
	// Sets default values for this character's properties
	ABlasterCharacter();	
	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	// Called to bind functionality to input
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

private:
	/** 弹簧臂组件类声明 属性设置为在任何地方可视 类别是摄像机 */
	UPROPERTY(VisibleAnywhere, Category = Camera)
	class USpringArmComponent* CameraBoom;

	/** 摄像机类声明 属性设置为在任何地方可视 类别是摄像机 */
	UPROPERTY(VisibleAnywhere, Category = Camera)
	class UCameraComponent* FollowCamera;
public:	

};

        xxx.cpp 

// Fill out your copyright notice in the Description page of Project Settings.


#include "BlasterCharacter.h"
#include "GameFramework/SpringArmComponent.h"
#include "Camera/CameraComponent.h"

// Sets default values
ABlasterCharacter::ABlasterCharacter()
{
 	// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));/** 创建类 */
	CameraBoom->SetupAttachment(GetMesh());/** SetupAttachment()将弹簧臂固定在网格上 GetMesh()获得角色的网格(胶囊体) */
	CameraBoom->TargetArmLength = 600.f;/** 设置臂长 */
	CameraBoom->bUsePawnControlRotation = true;/** 是否控制旋转 */

	FollowCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
	/** 设置附件 将摄像机连接到弹簧臂上,通过USpringArmComponent的指针和USpringArmComponent的名字USpringArmComponent::SocketName*/
	FollowCamera->SetupAttachment(CameraBoom,USpringArmComponent::SocketName);
	/** 跟随摄像头无需使用旋转 旋转在CameraBoom  CameraBoom是FollowCamera的组件 */
	FollowCamera->bUsePawnControlRotation = false;
}

// Called every frame
void ABlasterCharacter::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

}

// Called to bind functionality to input
void ABlasterCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
}


// Called when the game starts or when spawned
void ABlasterCharacter::BeginPlay()
{
	Super::BeginPlay();
	
}

 四、效果展示

        打开刚才创建的蓝图选择右面的CameraBoom,在没选择之前只会看见一个摄像机,选中后可以看见摄像机和人物之间有一条红线,红线就是弹簧臂,可以将代码中有关弹簧臂的代码注释掉在打开蓝图观察。刚开始时摄像机会在地面上,找到右面的细节界面将变换中的位置中的Z改成98或则其他数值,点击编译,点击保存

        在UE5的界面中点击绿色箭头运行实例效果如图所示,角色头上的字母是之后的东西,当前的地图可以在epic launch中的虚幻商城中搜索虚幻嘘唏工具包找到对用的地图资源

 

 五、补充说明,将人物放到场景中

        点击人物的蓝图类拖动到地图资源界面中松开鼠标后人物添加到对应位置

        1.拖动前

        2.拖动中

        3.拖动后

        4.保存 

标签:ABlasterCharacter,void,弹簧,组件,CameraBoom,FollowCamera,UE5,include,charactor
From: https://blog.csdn.net/m0_53219246/article/details/140910334

相关文章

  • NGUI Tweens组件:实现流畅动画的魔法
    引言在Unity游戏开发中,UI动画是提升用户界面交互性和吸引力的重要手段。NGUI(Next-GenUI)框架中的Tweens组件,为UI元素提供了平滑且高效的动画效果。本文将详细介绍NGUITweens的使用方法和技巧,帮助你轻松实现UI动画效果。NGUITweens简介NGUITweens是NGUI框架中的一组用......
  • vue 组件透传所有属性—useAttrs
    vue组件透传所有属性——useAttrs引言在对某些基础组件进行封装的时候,可能无法通过props将所有可能的属性都声明了,这时候就可以使用useAttrs,拿到不通过props声明的属性<scriptlang="ts">import{defineComponent,computed}from'vue'import{useAttrs}from'v......
  • 父子组件通信
    一、父子组件通信1、父传子第1步:在父组件中传入num1,注意:num1是在父组件的data定义的数据```html<!--调用子组件:--><my-comp1num="{{num1}}"></my-comp1><my-comp1></my-comp1>```第2步:在子组件中定义好props数据,在微信小程序中不叫props,而叫properties在comp1.js......
  • react、vue组件编译区别&template解析原理
    react、vue组件打包编译为js时的区别1.react组件打包为js后,jsx会被编译为React.createElement.比如:antd的button.js(函数式组件直接returnjsx)constInternalButton=(props,ref)=>{//React.createElement第三个参数children一般兼容传数组和分开多个参数传递俩种形式......
  • ArkTS #01# 组件通信
    一、通过Prop单向传递/**单双向绑定都有*父组件@State,子组件@Link,孙组件@Prop*数据流向:父组件<-->子组件-->孙组件*/@Entry@ComponentexportstructBothBinding{@StatefatherValue:number=0//表示组件中的状态变量,这个状态变化会引起UI变更buil......
  • 深入探究 Vue.js 高级技术:从响应式系统到高效组件设计的实战指南
    这里有一些实用的Vue.js高级示例,涵盖了前面提到的高级知识点,适合在实际项目中应用:1.自定义响应式数据使用Vue3的customRefAPI创建一个自定义的响应式输入框,带有防抖功能。import{customRef}from'vue';functionuseDebouncedRef(value,delay=300){......
  • element的table组件总计功能的一些问题
    问题1:默认数据为空时,element认为不需要总计,当接口调用结束赋上数据时,总计行才会渲染,但因为之前element没有计算好高度,导致总计行从底部上升出来这一样式bug,解决方法是设置tableData:[{}]为初始值,使初始状态下具有总计行,这样初始计算过总计行高度后,后续在修改数据也不会产生样式bug......
  • HarmonyOS — Stage模型、模块和UIAbility组件
    每一个UIAbility实例,都对应与一个最近的任务列表中的任务。UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互一个应用可以一个模块或多个模块,一个模块中可以有一个UIAbility也可以有多个UIAbility单个UIAbility:任务列表只有一个任务多个UIAbility:任务列表......
  • UE5-自定义插件使用第三方库
    制作插件使用到了第三方库,后面很长时间没有用这个插件,导致插件启用不了,吃亏了,所以记录下制作过程。第一步:在继承ModuleRules的C#脚本里添加代码:privatestringModulePath { get { returnModuleDirectory; } } privatestringThirdPartyPath { get{re......
  • 写一个显示图像的widget,替换VisionMaster的组件
            前面在VisionMaster二次开发时使用了QAxWidget嵌入了一个控件,加载过程有点慢,鼠标操作习惯也不合适,还不如自己写一个。以前用QGraphics框架实现过,要写好几个文件,有点麻烦,现在用一个QWidget自己绘制下。1.鼠标在图像上移动实时显示图像位置和像素值2.按住鼠标......