主相機綁定小地圖

?

  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.pswp.cn/bicheng/75670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75670.shtml
英文地址,請注明出處:http://en.pswp.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…