Forráskód Böngészése

相机渲染 图像倒向问题

woso_javan 1 hónapja
szülő
commit
cc7316c371

+ 10 - 12
assets/module_aliens/Prefabs/Levels/lvl_1.prefab

@@ -89,16 +89,16 @@
     },
     "_lpos": {
       "__type__": "cc.Vec3",
-      "x": 23.664,
-      "y": 17.998,
-      "z": 45.026
+      "x": 24.8183218323274,
+      "y": 19.927527582093262,
+      "z": 48.15841224561584
     },
     "_lrot": {
       "__type__": "cc.Quat",
-      "x": -0.16428906233997534,
-      "y": 0.23613984841848343,
-      "z": 0.040553683530286246,
-      "w": 0.9568711902531463
+      "x": -0.12438937106114993,
+      "y": 0.23974066634042776,
+      "z": 0.03098832124105253,
+      "w": 0.9623364386826058
     },
     "_lscale": {
       "__type__": "cc.Vec3",
@@ -110,9 +110,9 @@
     "_layer": 1073741824,
     "_euler": {
       "__type__": "cc.Vec3",
-      "x": -19.484973127341156,
-      "y": 27.72548944759218,
-      "z": 0.0010837096768557496
+      "x": -14.730165897228124,
+      "y": 27.97794115787076,
+      "z": 2.6637145457256954e-14
     },
     "_id": ""
   },
@@ -177,8 +177,6 @@
       "__id__": 0
     },
     "fileId": "02VZniVslEUIamHwPF076C",
-    "instance": null,
-    "targetOverrides": null,
     "nestedPrefabInstanceRoots": null
   },
   {

+ 17 - 17
assets/module_aliens/Script/Components/ScreenShotComponent.ts

@@ -12,8 +12,13 @@ export class ScreenShot extends Component {
 
     _renderTex: RenderTexture | null = null;
 
-    start() {
+    private _originalTargetTexture: RenderTexture | null = null;
+
+    async start() {
         this.registerEvent();
+        //获取相机组件 
+        const camera = await this.getSceneCamera();
+        this._originalTargetTexture = camera.targetTexture;
     }
 
     private registerEvent(){
@@ -26,12 +31,11 @@ export class ScreenShot extends Component {
 
     //截图
     public async screenShot() {
+        this.node.active = true;
         //获取相机组件 
         const camera = await this.getSceneCamera();
-        console.log(`相机组件:${camera}`);
         //获取目标节点
         const targetNode = await this.getTargetNode();
-        console.log(`目标节点:${targetNode}`);
 
         const spriteFrame = this.sprite.spriteFrame!;
         const sp = new SpriteFrame();
@@ -51,28 +55,23 @@ export class ScreenShot extends Component {
             width: 280,  // 直接设置为最终大小
             height: 180,
         });
-    
-        // 保存相机原始状态
-        const originalCameraPos = camera.node.position.clone();
-        const originalTargetTexture = camera.targetTexture;
-        // console.log(`相机原始Texture:${originalTargetTexture}`);
-        
+
         if (targetNode) {
             // 设置渲染纹理
             sp.texture = renderTex;
+            // 关键修改:通过设置flipUV来翻转图像
+            sp.flipUVY = true;
             this.sprite.spriteFrame = sp;
-            
+
             // 移动相机对准目标节点
-            const targetPos = targetNode.position.clone();
-            camera.node.position = targetPos.add(new Vec3(0, 0, 5));
+            const targetPos = targetNode.worldPosition.clone();
+            camera.node.lookAt(targetPos, Vec3.UP);
             camera.targetTexture = renderTex;
             
-            console.log(`相机位置:${camera.node.position}`);
             // 确保渲染完成
             this.scheduleOnce(() => {
                 // 恢复相机状态
-                camera.node.position = originalCameraPos;
-                camera.targetTexture = originalTargetTexture;
+                camera.targetTexture = this._originalTargetTexture;
                 // 强制更新材质
                 this.sprite.markForUpdateRenderData();
             }, 0.1);  // 稍微延长等待时间确保渲染完成
@@ -83,10 +82,11 @@ export class ScreenShot extends Component {
     private async getSceneCamera() :Promise<Camera>{
         return new Promise<Camera>((resolve, reject) => {
             const levelNode = AliensGlobalInstance.instance.levels.children[0];
+            if(!levelNode){return;}
+
             const camera = levelNode.getComponentInChildren(Camera)!;
             resolve(camera);
         });
-
     }
 
     //获取目标节点
@@ -94,7 +94,7 @@ export class ScreenShot extends Component {
         return new Promise<Node>((resolve, reject) => {
             const levelNode = AliensGlobalInstance.instance.levels.children[0];
             const et = levelNode.getChildByName('et');
-            resolve(et.children[2]);
+            resolve(et.children[0]);
         });
     }
 

+ 2 - 1
assets/module_aliens/Script/LevelAction.ts

@@ -4,6 +4,7 @@ import { GameEvent } from './Enum/GameEvent';
 import { LineDrawer } from './LineDrawer';
 import { EnemyComponent } from './Components/EnemyComponent';
 import { AliensGlobalInstance } from './AliensGlobalInstance';
+import { ScreenShot } from './Components/ScreenShotComponent';
 
 const { ccclass, property } = _decorator;
 
@@ -53,7 +54,7 @@ export class LevelAction extends Component {
     private initilizeUI(){
         const renderNode = AliensGlobalInstance.instance.renderNode;
         const aimTarget = AliensGlobalInstance.instance.aimTarget;
-        // renderNode.active = false;
+        renderNode.active = false;
         aimTarget.active = false;
     }
 

+ 14 - 14
profiles/v2/packages/scene.json

@@ -1189,24 +1189,24 @@
     },
     "773de0b0-468b-4fbb-965c-36c47d7a4c94": {
       "position": {
-        "x": 386.1541630144772,
-        "y": 816.108871236521,
-        "z": 43.68671055825214
+        "x": 404.8183218323274,
+        "y": 819.9275275820933,
+        "z": 48.15841224561584
       },
       "rotation": {
-        "x": -0.16725090141551563,
-        "y": 0.1983957289347194,
-        "z": 0.034380964764070446,
-        "w": 0.9651343015239111
+        "x": -0.12438937106114993,
+        "y": 0.23974066634042776,
+        "z": 0.03098832124105253,
+        "w": 0.9623364386826058
       },
       "viewCenter": {
-        "x": 367.97172583025576,
-        "y": 799.6384417216512,
-        "z": 1.3295237138349272
+        "x": 403.11489468038684,
+        "y": 818.9729032166156,
+        "z": 44.95175402793793
       },
       "contentRect": {
-        "x": 34.54399999999998,
-        "y": 437,
+        "x": 388.044,
+        "y": 801,
         "width": 0,
         "height": 0
       },
@@ -1214,8 +1214,8 @@
     },
     "19323c5d-5d36-438a-86ee-8288c690e5b0": {
       "position": {
-        "x": 45.096666666666664,
-        "y": 96.0033333333333,
+        "x": 63.841666666666654,
+        "y": 135.9083333333333,
         "z": 5000
       },
       "rotation": {