当前位置: 首页 > news >正文

UE5 C++ 创建可缩放的相机

一.要将相机设置在Pawn类里

1.在MyPawn头文件里,加上摇臂和相机组件

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

2.在Pawm里声明SceneComponet,SpringArmComponent,CameraComponent组件指针

再声明一个移动缩放调用的函数

public:UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "MySceneComponent")USceneComponent* MyRoot;UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "MySceneComponent")USpringArmComponent* MySpringArm;UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "MySceneComponent")UCameraComponent* MyCamera;//鼠标划轮移动镜头缩放void Zoom(bool Direction,float ZoomSpeed);

在Pawn里将的组件通过CreateDefaultSubobject<T>(TEXT("Name"))创造命名。

根组件赋值为MyRoot的物体组件。SetupAttackment来连接子组件。将MySpringArm的bDoCollisionTest = false来停止碰撞。

AMyPawn::AMyPawn()
{// 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;MyRoot = CreateDefaultSubobject<USceneComponent>(TEXT("MyRootComponent"));MySpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("MySpringArmComponent"));MyCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("MyCameraComponent"));RootComponent = MyRoot;MySpringArm->SetupAttachment(MyRoot);MyCamera->SetupAttachment(MySpringArm);MySpringArm->bDoCollisionTest = false;  //让它无碰撞

3.设置好Pawn的Transform信息。

	FVector MyLocation = FVector(0,0,0);FRotator MyRotation = FRotator(-50,0,0);FVector MyScale = FVector(1,1,1);SetActorLocation(MyLocation);SetActorRotation(MyRotation);SetActorScale3D(MyScale);

4.在滑动函数里,将相机的伸缩臂的伸缩方向和速度的逻辑写好

void AMyPawn::Zoom(bool Direction, float ZoomSpeed)
{if (Direction) //1{if (MySpringArm->TargetArmLength >= 300 && MySpringArm->TargetArmLength < 5000)  //如果摄像机摇臂在300 到 5000之间{MySpringArm->TargetArmLength += (ZoomSpeed * 2);GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::Printf(TEXT("SpringArmLength is %f"), MySpringArm->TargetArmLength));}}else{if (MySpringArm->TargetArmLength > 300 && MySpringArm->TargetArmLength <= 5000){MySpringArm->TargetArmLength -= (ZoomSpeed * 2);GEngine->AddOnScreenDebugMessage(-1,5.0f,FColor::Red,FString::Printf(TEXT("SpringArmLength is %f"),MySpringArm->TargetArmLength));}}
}

5.在PlayerController.cpp头文件里包含Pawn。注意顺序(MyPlayerController.h要放在第一个)

#include "MyPlayerController.h"
#include "MyPawn.h"

在PlayerController.h里声明 绑定输入 和 其他功能函数

	virtual void SetupInputComponent();void WheelUpFunction();void WheelDownFunction();

设置输入绑定事件,由于要重写SetupInputComponent虚函数,首先要继承父类的Super::SetupInputComponent(); 这个在UE里要写。再加上额外添加的代理绑定功能。

通过绑定输入代理,调用PlayerController的新定义的函数

void AMyPlayerController::SetupInputComponent()
{Super::SetupInputComponent();InputComponent->BindAction("WheelUp",IE_Pressed,this,&AMyPlayerController::WheelUpFunction);InputComponent->BindAction("WheelDown",IE_Pressed,this,&AMyPlayerController::WheelDownFunction);
}

新定义的函数中,通过GetPawn()拿到,GameMode里的Pawn,把它转换为AMyPawn。如果转换成功,在调用里面的MyPawn里的Zoom函数。

void AMyPlayerController::WheelUpFunction()
{if (GetPawn()){AMyPawn* MyCameraPawn = Cast<AMyPawn>(GetPawn());if (MyCameraPawn){MyCameraPawn->Zoom(true, 10);}}
}void AMyPlayerController::WheelDownFunction()
{if (GetPawn()){AMyPawn* MyCameraPawn = Cast<AMyPawn>(GetPawn());if (MyCameraPawn){MyCameraPawn->Zoom(false, 10);}}
}

可以伸缩,并且打印SpringArm的长度

相关文章:

UE5 C++ 创建可缩放的相机

一.要将相机设置在Pawn类里 1.在MyPawn头文件里&#xff0c;加上摇臂和相机组件 #include "GameFramework/SpringArmComponent.h" #include "Camera/CameraComponent.h" 2.在Pawm里声明SceneComponet&#xff0c;SpringArmComponent,CameraComponent组件…...

Fabric中的溯源方法

背景 在Fabric链码中&#xff0c;我们可以使用PutState方法对一个key的值进行覆盖&#xff0c;当我们再使用GetState查询时是最新的值。如果我们希望找到这个key的修改记录&#xff0c;我们可以使用溯源方法GetHistoryForKey。完整源码链接&#xff1a;https://github.com/hyp…...

混子文章|蓝桥杯一题 -平方差

题目考点: 平方差 ,平方差奇偶关系 代码 #include<bits/stdc.h> #define Run 0 #define endl "\n" #define N 100005 using unl __int128_t; using ll long long; using namespace std; class Solution { public: void slove() {int sum 0;int L, R; cin &…...

计算机视觉基础:【矩阵】矩阵选取子集

OpenCV的基础是处理图像&#xff0c;而图像的基础是矩阵。 因此&#xff0c;如何使用好矩阵是非常关键的。 下面我们通过一个具体的实例来展示如何通过Python和OpenCV对矩阵进行操作&#xff0c;从而更好地实现对图像的处理。 示例 示例&#xff1a;选取矩阵中指定的行和列的…...

解决laravel-admin安装报错1071 Specified key was too long问题

在执行php artisan admin:install命令安装laravel-admin的时候&#xff0c;如果你使用的数据库是MySQL v5.7.7以下版本就会报下面的错&#xff1a; SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL:…...

【Python---六大数据结构】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Python &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; Python---六大数据结构 往期内容前言概述一下可变与不可变 Number四种不同的数值类型Number类型的创建i…...

一个简短的补充------对链表练习题的补充补充

昨天不是写了一篇有关链表的数据结构练习题嘛&#xff0c;其实那篇文章的第二道题还有许多值得我们思考的东西&#xff0c;今天就在这做一个简短的补充。补充一下运用那道题解决另一道题。 给大家看一下绿色让眼睛放松一下。 给定一个链表的头节点 head &#xff0c;返回链表…...

Spring最新核心高频面试题(持续更新)

1 什么是Spring框架 Spring框架是一个开源的Java应用程序开发框架&#xff0c;它提供了很多工具和功能&#xff0c;可以帮助开发者更快地构建企业级应用程序。通过使用Spring框架&#xff0c;开发者可以更加轻松地开发Java应用程序&#xff0c;并且可以更加灵活地组织和管理应…...

[计网底层小探索]:实现并部署多线程并发Tcp服务器框架(基于生产者消费者模型的线程池结构)

文章目录 一.网络层与传输层协议sockaddr结构体继承体系(Linux体系)贯穿计算机系统的网络通信架构图示: 二.实现并部署多线程并发Tcp服务器框架线程池模块序列化反序列化工具模块通信信道建立模块服务器主体模块任务回调模块(根据具体应用场景可重构)Tips:DebugC代码过程中遇到…...

Spring Boot 笔记 020 redis集成

1.1 安装redis Windows 下 Redis 安装与配置 教程_redis windows-CSDN博客 2.1 引入redis坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.2 配置…...

防火墙——计算机网络

前述基于密码的安全机制不能有效解决以下安全问题&#xff1a; 用户入侵&#xff1a; 利用系统漏洞进行未授权登录&#xff1b; 授权用户非法获取更高级别权限等。 软件入侵&#xff1a; 通过网络传播病毒、蠕虫和特洛伊木马。 拒绝服务攻击等。 解决方法&#xff1a; 防火墙&a…...

用html编写的招聘简历

用html编写的招聘简历 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…...

215数组中的第K个最大元素

215数组中的第K个最大元素 题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。…...

【动态规划】【矩阵快速幂】LeetCode2851. 字符串转换

作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 涉及知识点 【矩阵快速幂】封装类及测试用例及样例 LeetCode 2851. 字符串转换 给你两个长度都为 n 的字符串 s 和 t 。你可以对字符串 s 执行以下操作&#xff1a; 将 s 长度为 l &#xff08;0 <…...

【LeetCode每日一题】单调栈 402 移掉k位数字

402. 移掉 K 位数字 给你一个以字符串表示的非负整数 num 和一个整数 k &#xff0c;移除这个数中的 k **位数字&#xff0c;使得剩下的数字最小。请你以字符串形式返回这个最小的数字。 示例 1 &#xff1a; 输入&#xff1a;num "1432219", k 3 输出&#xff…...

力扣 309. 买卖股票的最佳时机含冷冻期

题目来源&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/ C题解&#xff1a;动态规划 状态1&#xff1a;表示持有股票。更新为之前持有股票&#xff08;dp[i-1][0]&#xff09;或者不持有股票且不处于冷冻期后买入&…...

2024年刷题记录

马上要开始找实习了&#xff0c;又开始重启刷题计划了&#xff01;加油冲冲冲&#xff01;刷题的顺序follow代码随想录的60天刷题计划&#xff01;感谢FuCosmo的总结&#xff01;之前都是按照C的语法进行刷题的&#xff0c;这次也同样使用C。 Day 1 数组 这些题过年前都刷过了…...

【JGit 】简述及学习资料整理

JGit 介绍 [官网](JGit | The Eclipse Foundation): https://www.eclipse.org/jgit/ 用户指南 : https://github.com/eclipse-jgit/jgit/wiki/User-Guide JGit是一个用于Java编程语言的开源Git实现。它提供了一组Java库和API&#xff0c;使开发人员可以在他们的Java应用程序…...

python数据类型-集合set

1 集合&#xff08;set&#xff09;的定义 1.1 集合是一个无序且不重复元素的序列&#xff1a; 1&#xff09;无序&#xff1a;存储顺序和添加的顺序不一定相同&#xff0c;不支持索引、切片 2&#xff09;元素不重复&#xff1a;当添加重复元素时&#xff0c;集合会自动去重…...

excel如何指定求和

在Excel中&#xff0c;你可以使用函数来实现动态求和&#xff0c;使得当指定行的数值更新后&#xff0c;和也随之更新。具体来说&#xff0c;你可以使用SUM函数结合一些动态的引用方法。以下是一种实现方式&#xff1a; 假设你要对A列&#xff08;从A1到A10&#xff0c;以示例…...

ElevenLabs高棉文语音突然失效?2024年Q2政策更新后,这6类柬埔寨手机号注册账号已被静默降权

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;ElevenLabs高棉文语音的基本能力与本地化适配现状 ElevenLabs 作为全球领先的AI语音合成平台&#xff0c;自2023年Q4起逐步支持高棉语&#xff08;Khmer&#xff0c;语言代码&#xff1a;km-KH&#xff09;&a…...

渝中区宜居、 韧性、智慧城市建设“十五五”规划(征求意见稿) 2026

这份《渝中区宜居、韧性、智慧城市建设 “十五五” 规划&#xff08;征求意见稿&#xff09;》&#xff0c;立足渝中区 “重庆母城、都市极核、品质半岛、首善之区” 定位&#xff0c;总结 “十四五” 成效、分析机遇挑战&#xff0c;明确 2026—2030 年总体目标、核心任务与保…...

保姆级教程:用ENVI+SNAP搞定哨兵1号雷达数据预处理(附水稻监测实战)

从零掌握哨兵1号雷达数据处理&#xff1a;ENVI与SNAP双软件协同实战指南 当第一次接触哨兵1号雷达数据时&#xff0c;许多研究者都会被其独特的成像机制和处理流程所困扰。与光学遥感不同&#xff0c;雷达数据需要经过一系列专业预处理才能用于分析。本文将带你系统掌握ENVI和…...

PPTist完全手册:零成本打造专业演示文稿的终极方案

PPTist完全手册&#xff1a;零成本打造专业演示文稿的终极方案 【免费下载链接】PPTist PowerPoint-ist&#xff08;/pauəpɔintist/&#xff09;, An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing for t…...

终极直播输入可视化指南:如何用开源工具展示键盘鼠标操作

终极直播输入可视化指南&#xff1a;如何用开源工具展示键盘鼠标操作 【免费下载链接】input-overlay Show keyboard, gamepad and mouse input on stream 项目地址: https://gitcode.com/gh_mirrors/in/input-overlay 在游戏直播、教学演示或技术分享中&#xff0c;观众…...

[SSD]SSD主控

SSD系统架构SSD系统由一块CPU主控&#xff0c;可以是ARM或者RISC-v&#xff1b;整个主控芯片分为三个部分&#xff0c;分别是主机接口控制器&#xff0c;缓存控制器和闪存控制器&#xff0c;它可以分为前端和后端&#xff0c;前端就是主机接口控制器和主机之间的通信&#xff0…...

113、MPC:非线性MPC与实时优化

113、MPC:非线性MPC与实时优化 从一次电机堵转说起 去年调试一个四足机器人单腿的力控,用的线性MPC,模型是简单的质量-弹簧-阻尼。空载跑得挺好,一上负载,电机堵转,电流直接爆表。查了半天,发现是关节摩擦力矩的非线性项在MPC的线性化模型里被忽略了——线性MPC把摩擦…...

Agent_Skills_万千应用_第01篇_PDF 处理 Skill:让 Agent 真正会读、会拆、会抽取 PDF

Agent Skills 万千应用 第01篇 PDF 处理 Skill&#xff1a;让 Agent 真正会读、会拆、会抽取 PDF 01&#xff5c;场景痛点开场&#xff1a;PDF 是办公室里最像“黑盒”的文件 你一定遇到过这种场景&#xff1a;老板丢来一份 80 页行业报告&#xff0c;让你 10 分钟内说清楚“…...

5步掌握Sollumz:让GTA V模型在Blender中自由编辑

5步掌握Sollumz&#xff1a;让GTA V模型在Blender中自由编辑 【免费下载链接】Sollumz Grand Theft Auto V modding suite for Blender. This add-on allows the creation of modded game assets: 3D models, maps, interiors, animations, etc. 项目地址: https://gitcode.c…...

BilibiliDown音频提取终极指南:3种方法从B站视频提取高质量音乐

BilibiliDown音频提取终极指南&#xff1a;3种方法从B站视频提取高质量音乐 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_…...