主相机绑定小地图

 

  1. 资源初始化:在类中通过 @property 装饰器定义主相机、小地图相机、小地图精灵等资源属性,便于在编辑器中赋值。在 start 方法里,当确认这些资源存在后,创建渲染纹理并设置其大小,将渲染纹理与小地图相机关联,再创建精灵帧并把渲染纹理应用到精灵帧上,最后将精灵帧设置给小地图精灵,完成小地图显示的初始化配置。
  2. 位置跟随:在 update 方法中,不断检查主相机和小地图相机是否存在,若存在则获取主相机位置,让小地图相机的 xy 坐标跟随主相机,同时保持小地图相机的 z 轴坐标不变,以维持稳定视角,实现小地图相机对主相机位置的实时跟随。
  3. 交互功能处理:定义 calculateAndSetOrthoHeight 方法,用于实现小地图的缩放功能。该方法先获取小地图相机当前的正交高度,依据鼠标滚轮滚动方向计算新的正交高度,并对新高度进行范围检查,保证其在合理区间内才更新小地图相机的正交高度。通过 onMouseWheel 方法监听鼠标滚轮事件,获取滚轮滚动值并调用 calculateAndSetOrthoHeight 方法,从而实现用户通过鼠标滚轮操作来缩放小地图的交互功能。
import { _decorator, Component, Camera, Node, RenderTexture, SpriteFrame, Sprite, Vec3, Canvas, EventMouse, Vec2 } from 'cc';
const { ccclass, property } = _decorator;@ccclass('MainCameraBindMiniController')
export class MainCameraController extends Component {// 主摄像机@property(Camera)mainCamera: Camera | null = null;// 小地图摄像机@property(Camera)miniMapCamera: Camera | null = null;// 小地图展示的精灵@property(Sprite)miniMapSprite: Sprite | null = null;// 小地图的大小private miniMapSize = { width: 200, height: 200 };// 缩放速度@propertyzoomSpeed: number = 0.02;// 移动速度因子@propertymoveSpeedFactor: number = 1;// 小地图的渲染纹理private renderTexture: RenderTexture | null = null;start() {if (this.mainCamera && this.miniMapCamera && this.miniMapSprite) {// 创建一个渲染纹理this.renderTexture = new RenderTexture();this.renderTexture.reset({width: this.miniMapSize.width,height: this.miniMapSize.height});// 将渲染纹理设置给小地图摄像机this.miniMapCamera.targetTexture = this.renderTexture;// 创建一个精灵帧,并将渲染纹理应用到精灵帧const spriteFrame = new SpriteFrame();spriteFrame.texture = this.renderTexture;// 将精灵帧设置到小地图的精灵上this.miniMapSprite.spriteFrame = spriteFrame;// 小地图反转(如果需要)this.miniMapCamera.node.scale = new Vec3(1, 1, 1);}}update(deltaTime: number) {if (this.mainCamera && this.miniMapCamera) {// 获取主摄像机的位置const mainCameraPos = this.mainCamera.node.position;// 让小地图摄像机的位置跟随主摄像机// 小地图摄像机的 Z 轴保持不变,确保它的视角稳定this.miniMapCamera.node.setPosition(new Vec3(mainCameraPos.x, mainCameraPos.y, this.miniMapCamera.node.position.z));}}calculateAndSetOrthoHeight(move: Vec3) {if (this.miniMapCamera) {// 获取摄像机的正交高度let currentOrthoHeight = this.miniMapCamera.orthoHeight;// 计算新的正交高度let newOrthoHeight = currentOrthoHeight + (move.y < 0 ? -this.zoomSpeed : this.zoomSpeed);// 确保新的正交高度在合理范围内if (newOrthoHeight > 500 && newOrthoHeight < 1000000) {this.miniMapCamera.orthoHeight = newOrthoHeight;}}}onMouseWheel(event: EventMouse) {let scrollValueY = event.getScrollY();this.calculateAndSetOrthoHeight(new Vec3(0, scrollValueY, 0));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux-core分析-柔性数组越界访问

文章目录 core的调用栈core分析修改修改原因柔性数组定义代码修改总结core的调用栈 vocb core 崩溃:core的大小都是573M左右 Program terminated with signal SIGSEGV, Segmentation fault. #0 0x0000007f789af0d0 in strlen () from /lib/libc.so.6[Current thread is 1 (LW…

leetcode 代码随想录 数组-区间和

题目 给定一个整数数组 Array&#xff0c;请计算该数组在每个指定区间内元素的总和。 输入&#xff1a; 第一行输入&#xff1a;为整数数组 Array 的长度 n&#xff0c;接下来 n 行&#xff0c;每行一个整数&#xff0c;表示数组的元素。随后的输入为需要计算总和的区间&…

部署nerdctl工具

nerdctl 是一个专为Containerd设计的容器管理命令行工具&#xff0c;旨在提供类似 Docker 的用户体验&#xff0c;同时支持 Containerd 的高级特性&#xff08;如命名空间、compose等&#xff09;。 1、下载安装 wget https://github.com/containerd/nerdctl/releases/downlo…

【论文笔记】DeepSeek-R1 技术报告

最强开源LLM&#xff0c;性能和效果都很棒&#xff1b;在数学、代码这种有标准正确答案的场景&#xff0c;表现尤为突出&#xff1b;一些其他场景的效果&#xff0c;可能不如DeepSeek-V3和Qwen。 Deepseek-R1没有使用传统的有监督微调sft方法来优化模型&#xff0c;而使用了大规…

YOLO学习笔记 | 基于YOLOv5的车辆行人重识别算法研究(附matlab代码)

基于YOLOv5的车辆行人重识别算法研究 🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥 摘要 本文提出了一种基于YOLOv5的车辆行人重识别(ReID)算法,结合目标检测与特征匹配技术,实现高效的多目标跟踪与识别。通过引入注意力机制、优化损失函数和轻量化网络结构…

Buildroot与Yocto介绍比对

Buildroot 和 Yocto 是嵌入式 Linux 领域最常用的两大系统构建工具&#xff0c;它们在功能定位、使用方法和适用场景上有显著差异。以下从专业角度对两者进行对比分析&#xff1a; 一、Buildroot 核心功能与特点 1. 功能定位 轻量级系统构建工具&#xff1a;专注于快速生成精…

VUE3初始化项目安装

本次就是作为实验使用&#xff0c;包括安装过程中遇到的问题&#xff0c;供大家提供参考&#xff0c;话不多说&#xff0c;看过程&#xff1a; 第1步&#xff1a;首先分别安装node.js和npm&#xff0c;这步网上有很多资料&#xff0c;很简单&#xff0c;过程省略了&#xff0c…

GO语言学习(17)Gorm的数据库操作

目录 &#x1f3c6;前言 1.Gorm的简介 2.GORM连接数据库 2.1 配置DSN Mysql&#xff0c;TiDB&#xff0c;MariaDB PostgreSQL SQL Server SQLite 2.2 gorm.Open连接数据库 3.数据库连接池的配置 4.使用GORM对数据库进行操作&#xff08;重点&#xff09; 4.1 创…

【JavaEE】网络原理详解

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

第十五届蓝桥杯单片机省赛程序设计试题

同时也是积分赛——测量NE555输出脉冲频率 第十五届 蓝桥杯 单片机设计与开发项目 省赛1 第二部分 程序设计试题&#xff08;85 分&#xff09; &#xff08;大学组&#xff09; 一 基本要求 1、使用大赛组委会统一提供的四梯单片机竞赛实训平台&#xff0c;完成本试题程序…

JavaScript智能对话机器人——企业知识库自动化

引言 内部知识管理常面临信息分散、查找困难的问题。本文将使用Node.js和虎跃办公的智能对话API&#xff0c;构建企业级知识问答机器人&#xff0c;支持自然语言查询和自动学习。 核心技术 自然语言处理&#xff08;NLP&#xff09;意图识别机器学习模型微调REST API集成 代…

元宇宙浪潮下,前端开发如何“乘风破浪”?

一、元宇宙对前端开发的新要求 元宇宙的兴起&#xff0c;为前端开发领域带来了全新的挑战与机遇。元宇宙作为一个高度集成、多维互动的虚拟世界&#xff0c;要求前端开发不仅具备传统网页开发的能力&#xff0c;还需要掌握虚拟现实&#xff08;VR&#xff09;、增强现实&#…

Spring Boot 3.4.3 基于 Caffeine 实现本地缓存

在现代企业级应用中,缓存是提升系统性能和响应速度的关键技术。通过减少数据库查询或复杂计算的频率,缓存可以显著优化用户体验。Spring Boot 3.4.3 提供了强大的缓存抽象支持,而 Caffeine 作为一款高性能的本地缓存库,因其优异的吞吐量和灵活的配置,成为许多开发者的首选…

QT Quick(C++)跨平台应用程序项目实战教程 6 — 弹出框

目录 1. Popup组件介绍 2. 使用 上一章内容完成了音乐播放器程序的基本界面框架设计。本小节完成一个简单的功能。单击该播放器顶部菜单栏的“关于”按钮&#xff0c;弹出该程序的相关版本信息。我们将使用Qt Quick的Popup组件来实现。 1. Popup组件介绍 Qt 中的 Popup 组件…

DuckDB系列教程:如何分析Parquet文件

Parquet 是一种强大的、基于列的存储格式&#xff0c;适用于实现更快捷和更高效的数据分析。您可以使用 DuckDB 这种内存型分析数据库来处理 Parquet 文件并运行查询以对其进行分析。 在这篇文章中&#xff0c;我们将逐步介绍如何使用 DuckDB 对存储在 Parquet 文件中的餐厅订单…

异步框架使用loguru和contextvars实现日志按Id输出

需求阐述 工作中使用fastStream模块消费kafka事件的时候&#xff0c;遇到以下问题。1. 由于main.py模块要用到许多其他模块 &#xff0c;main模块&#xff0c;和其他模块都有日志输出。2. 要实现异步消费事件&#xff0c;但是又不希望日志打印的很乱。3. 想着在每次消费事件的…

【HTTPS协议】

文章目录 一、HTTPS二、HTTPS协议五种加密方案1.只使用对称加密2.只使用非对称加密3.双方都使用非对称加密4.对称加密非对称加密中间人攻击理解数字签名CA机构和证书 5. 对称加密非对称加密证书认证中间人篡改证书&#xff1f;中间人调包整个证书&#xff1f; 常见问题总结 一、…

算法设计学习8

实验目的及要求&#xff1a; 通过深入学习树&#xff08;Tree&#xff09;和二叉树&#xff08;Binary Tree&#xff09;这两种重要的数据结构&#xff0c;掌握它们的基本概念、性质和操作&#xff0c;提高对树形结构的理解和应用能力。通过本实验&#xff0c;学生将深化对树和…

P17_ResNeXt-50

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、模型结构 ResNeXt-50由多个残差块&#xff08;Residual Block&#xff09;组成&#xff0c;每个残差块包含三个卷积层。以下是模型的主要结构&#xff1…

【YOLO系列(V5-V12)通用数据集-剪刀石头布手势检测数据集】

YOLO格式的剪刀石头布手势检测数据集&#xff0c;适用于YOLOv5-v11所有版本&#xff0c;可以用于本科毕设、发paper、做课设等等&#xff0c;有需要的在这里获取&#xff1a; 【YOLO系列&#xff08;V5-V12&#xff09;通用数据集-剪刀石头布手势检测数据集】 数据集专栏地址&a…