Browse Source

AI初始 修改

woso_javan 2 tháng trước cách đây
mục cha
commit
ec92f9f389

+ 9 - 20
assets/module_storm_sunder/Script/Component/TornadoAIComponent.ts

@@ -22,31 +22,20 @@ export class TornadoAIComponent extends TornadoComponent {
     protected start(): void {
         super.start();
         this.ai = true;
-    }
-
-    public initPlayer(count?: number): void {
-        //DOTO 根据配置设置属性
-        this.attack_ai = 999;
-        this.speed_ai = 2;
-        this.expPower_ai = 1;
-
-        this.ai = true;
-        this.nickName = "AI" + count;
 
-        console.log(`ai count:${count}`);
+        this.playerInfo.nickName = '阿西吧 ai';
+        this.playerInfo.level = 1;
 
-        this.playerInfo = {
-            nickName: this.nickName,
-            level: 1,
-            exp: 0,
-        }
+        console.log('playerInfo:', this.playerInfo);
+        this.onPlayerInfoHandler();
     }
 
-    protected initilizeUI(): void {
-        super.initilizeUI();
+    protected onTriggerEnter(event: ITriggerEvent): void {
+        super.onTriggerEnter(event)
     }
 
-    protected update(dt: number): void {
-        super.update(dt);
+    protected onTriggerStay(event: ITriggerEvent): void {
+        super.onTriggerStay(event);
+        console.log('阿西吧 干它!!!!!!!!!!!!!!!!!!');
     }
 }

+ 4 - 3
assets/module_storm_sunder/Script/Component/TornadoComponent.ts

@@ -164,13 +164,13 @@ export class TornadoComponent extends Component {
     protected update(deltaTime: number) {
         if (GameMgr.inst.gameStatus != GameStatus.Playing) return;
 
-        this.onPlayerInfoHandler();
         this.onMoveHandler();
         this.onRotateHandler();
+        this.onPlayerInfoHandler();
     }
 
-    protected async onPlayerInfoHandler() {
-        await Effect2DUIMgr.inst.addPlayerInfo(this.node, this.playerInfo);
+    protected onPlayerInfoHandler() {
+        Effect2DUIMgr.inst.addPlayerInfo(this.node, this.playerInfo);
     }
 
     onRotateHandler(): void {
@@ -179,6 +179,7 @@ export class TornadoComponent extends Component {
 
     onMoveHandler(): void {
         if (this.isColliding || this.ai) return;
+
         const playerDir = UIJoyStick.ins.dir;
         const playerX = playerDir.x * this.speed * game.deltaTime;
         const playerZ = playerDir.y * this.speed * game.deltaTime;

+ 1 - 1
assets/module_storm_sunder/Script/GameUtil.ts

@@ -218,7 +218,7 @@ export class GameUtil {
         const mainCamera = StormSunderGlobalInstance.instance.camera;
         const screenPos = mainCamera.worldToScreen(targetWorldPos);
         const uiPos = new Vec3();
-        StormSunderGlobalInstance.instance.bloodUI.getComponent(UITransform)!.convertToNodeSpaceAR(
+        StormSunderGlobalInstance.instance.effectUI.getComponent(UITransform)!.convertToNodeSpaceAR(
             new Vec3(screenPos.x, screenPos.y, 0),
             uiPos
         );

+ 33 - 13
assets/module_storm_sunder/Script/Manager/Effect2DUIMgr.ts

@@ -55,24 +55,44 @@ export class Effect2DUIMgr {
 
     /** 龙卷风添加信息预设*/
     async addPlayerInfo(target: Node, playerInfo: PlayerInfo) {
-        let infoNode = this.playerInfoMap.get(target) as any;
+        // 1. 使用占位符防止重复创建
+        if (this.playerInfoMap.has(target)) {
+            const existing = this.playerInfoMap.get(target);
+            if (existing instanceof Node) {
+                // 已有节点直接更新位置
+                const uiPos = GameUtil.worldToScreenLocal(target);
+                const offsetY = 250;
+                const offsetX = 70;
+                existing.setPosition(uiPos.x + offsetX, uiPos.y + offsetY);
+            }
+            return; // 正在加载或已存在
+        }
+
+        // 2. 设置加载占位符
+        this.playerInfoMap.set(target, null);
+        try {
+            const infoPrefab = await resLoader.loadAsync(
+                resLoader.gameBundleName,
+                "Prefabs/PlayerInfo",
+                Prefab
+            );
 
-        if (!infoNode) {
-            const infoPrefab = await resLoader.loadAsync(resLoader.gameBundleName, "Prefabs/PlayerInfo");
-            infoNode = instantiate(infoPrefab);
+            const infoNode = instantiate(infoPrefab);
             infoNode.parent = StormSunderGlobalInstance.instance.effectUI;
-            this.playerInfoMap.set(target, infoNode);
 
             const playerInfoComp = infoNode.getComponent(PlayerInfoComponent);
-            if (playerInfoComp) {
-                playerInfoComp.updateInfo(playerInfo);
-            }
-        }
+            playerInfoComp?.updateInfo(playerInfo);
 
-        const uiPos = GameUtil.worldToScreenLocal(target).clone();
-        const offsetY = 250;
-        const offsetX = 70;
-        infoNode.setPosition(uiPos.x + offsetX, uiPos.y + offsetY);
+            const uiPos = GameUtil.worldToScreenLocal(target);
+            const offsetY = 250;
+            const offsetX = 70;
+            infoNode.setPosition(uiPos.x + offsetX, uiPos.y + offsetY);
+            this.playerInfoMap.set(target, infoNode);
+        } catch (error) {
+            // 异常处理:移除占位符允许重试
+            this.playerInfoMap.delete(target);
+            console.error("加载玩家信息失败:", error);
+        }
     }
 
     //更新对应玩家信息

+ 0 - 1
assets/module_storm_sunder/Script/Manager/PlayerMgr.ts

@@ -37,7 +37,6 @@ export class PlayerMgr {
                 const point = aiPoints.children[Math.floor(Math.random() * aiPoints.children.length)];
                 infoNode.setPosition(point.worldPosition.clone());
                 infoNode.addComponent(TornadoAIComponent);
-                infoNode.getComponent(TornadoAIComponent)!.initPlayer(i);
                 resolve();
             }
         })

+ 1 - 1
assets/module_storm_sunder/Script/Manager/PropMgr.ts

@@ -58,7 +58,7 @@ export class PropMgr {
         if (currentTime - this.lastCreateTime >= this.propCreateCycle) {
             this.lastCreateTime = currentTime; // 更新上次生成时间
             this.genatorProp(); // 执行生成道具逻辑
-            console.log(`道具生成周期到达,当前道具数量:${this.curMovePropsCount}`);
+            // console.log(`道具生成周期到达,当前道具数量:${this.curMovePropsCount}`);
         }
     }
 

+ 1 - 1
assets/module_storm_sunder/Script/Manager/TimerMgr.ts

@@ -18,7 +18,7 @@ export class TimerMgr {
         return this.Instance;
     }
 
-    public countDownTime: number = 20;
+    public countDownTime: number = 120;
     private timerId: number = 0;
     private propMgr: PropMgr;
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 139 - 183
assets/module_storm_sunder/rooster_stormsunder.scene


+ 9 - 0
assets/scripts/game.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "af61cb45-b54c-4d47-b80e-84e9c4e83f63",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/scripts/game/component.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "194989d9-9e25-47ef-99ee-0d5c8540d50c",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác