diff --git a/DungeonShooting_Godot/src/framework/common/Utils.cs b/DungeonShooting_Godot/src/framework/common/Utils.cs index 8f95edf..832f3b2 100644 --- a/DungeonShooting_Godot/src/framework/common/Utils.cs +++ b/DungeonShooting_Godot/src/framework/common/Utils.cs @@ -13,7 +13,7 @@ static Utils() { - _random = new Random(123); + _random = new Random(999); } /// diff --git a/DungeonShooting_Godot/src/framework/map/DungeonTile.cs b/DungeonShooting_Godot/src/framework/map/DungeonTile.cs index 3f1ba07..78648b7 100644 --- a/DungeonShooting_Godot/src/framework/map/DungeonTile.cs +++ b/DungeonShooting_Godot/src/framework/map/DungeonTile.cs @@ -98,19 +98,19 @@ var rectPos = roomInfo.RoomSplit.RoomInfo.Position; var template = ResourceManager.Load(roomInfo.RoomSplit.ScenePath); var tileInstance = template.Instantiate(); - //物体标记 - var activityMarks = tileInstance.GetMarks(); - var offset = roomInfo.GetOffsetPosition(); - foreach (var activityMark in activityMarks) - { - activityMark.GetParent().RemoveChild(activityMark); - var pos = activityMark.GlobalPosition - offset; - _tileRoot.AddChild(activityMark); - activityMark.Visible = false; - activityMark.GlobalPosition = roomInfo.GetWorldPosition() + pos; - activityMark.Visible = false; - activityMark.SetActive(false); - } + //物体标记 + var activityMarks = tileInstance.GetMarks(); + var offset = roomInfo.GetOffsetPosition(); + foreach (var activityMark in activityMarks) + { + activityMark.GetParent().RemoveChild(activityMark); + var pos = activityMark.GlobalPosition - offset; + _tileRoot.AddChild(activityMark); + activityMark.Owner = _tileRoot; + activityMark.GlobalPosition = roomInfo.GetWorldPosition() + pos; + activityMark.Visible = false; + activityMark.SetActive(false); + } roomInfo.ActivityMarks.AddRange(activityMarks); //填充tile操作 @@ -132,7 +132,7 @@ } } - tileInstance.QueueFree(); + tileInstance.CallDeferred(Node.MethodName.QueueFree); } //铺过道 diff --git a/DungeonShooting_Godot/src/game/room/RoomDoor.cs b/DungeonShooting_Godot/src/game/room/RoomDoor.cs index 3f78acf..369eedd 100644 --- a/DungeonShooting_Godot/src/game/room/RoomDoor.cs +++ b/DungeonShooting_Godot/src/game/room/RoomDoor.cs @@ -50,10 +50,13 @@ IsClose = false; Visible = false; Collision.Disabled = true; - _door.Navigation.OpenNavigationNode.Enabled = true; - _door.Navigation.OpenNavigationNode.Visible = true; - _door.Navigation.CloseNavigationNode.Enabled = false; - _door.Navigation.CloseNavigationNode.Visible = false; + if (_door.Navigation != null) + { + _door.Navigation.OpenNavigationNode.Enabled = true; + _door.Navigation.OpenNavigationNode.Visible = true; + _door.Navigation.CloseNavigationNode.Enabled = false; + _door.Navigation.CloseNavigationNode.Visible = false; + } } /// @@ -64,9 +67,12 @@ IsClose = true; Visible = true; Collision.Disabled = false; - _door.Navigation.OpenNavigationNode.Enabled = false; - _door.Navigation.OpenNavigationNode.Visible = false; - _door.Navigation.CloseNavigationNode.Enabled = true; - _door.Navigation.CloseNavigationNode.Visible = true; + if (_door.Navigation != null) + { + _door.Navigation.OpenNavigationNode.Enabled = false; + _door.Navigation.OpenNavigationNode.Visible = false; + _door.Navigation.CloseNavigationNode.Enabled = true; + _door.Navigation.CloseNavigationNode.Visible = true; + } } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/room/RoomManager.cs b/DungeonShooting_Godot/src/game/room/RoomManager.cs index 02a61d5..a11490f 100644 --- a/DungeonShooting_Godot/src/game/room/RoomManager.cs +++ b/DungeonShooting_Godot/src/game/room/RoomManager.cs @@ -57,15 +57,15 @@ _font = ResourceManager.Load(ResourcePath.resource_font_cn_font_36_tres); //绑定事件 - //EventManager.AddEventListener(EventEnum.OnEnemyDie, OnEnemyDie); EventManager.AddEventListener(EventEnum.OnPlayerFirstEnterRoom, OnPlayerFirstEnterRoom); EventManager.AddEventListener(EventEnum.OnPlayerEnterRoom, OnPlayerEnterRoom); - + var nowTicks = DateTime.Now.Ticks; //生成地牢房间 _generateDungeon = new GenerateDungeon(); _generateDungeon.Generate(); + //填充地牢 _autoTileConfig = new AutoTileConfig(); _dungeonTile = new DungeonTile(TileRoot); @@ -81,7 +81,7 @@ _roomStaticNavigationList.AddRange(_dungeonTile.GetConnectDoorPolygonData()); //初始化所有房间 _generateDungeon.EachRoom(InitRoom); - + GD.Print("生成地牢用时: " + (DateTime.Now.Ticks - nowTicks) / 10000 + "毫秒"); //播放bgm @@ -94,9 +94,15 @@ Player.PutDown(RoomLayerEnum.YSortLayer); Player.PickUpWeapon(ActivityObject.Create(ActivityIdPrefix.Weapon + "0001")); - // Player.PickUpWeapon(ActivityObject.Create(ActivityIdPrefix.Weapon + "0002")); - // Player.PickUpWeapon(ActivityObject.Create(ActivityIdPrefix.Weapon + "0004")); - // Player.PickUpWeapon(ActivityObject.Create(ActivityIdPrefix.Weapon + "0003")); + Player.PickUpWeapon(ActivityObject.Create(ActivityIdPrefix.Weapon + "0002")); + ActivityObject.Create(ActivityIdPrefix.Weapon + "0003").PutDown(new Vector2(10, 10), RoomLayerEnum.NormalLayer); + + // for (int i = 0; i < 10; i++) + // { + // var enemy = ActivityObject.Create(ActivityIdPrefix.Enemy + "0001"); + // enemy.PutDown(new Vector2(100 + i * 20, 100), RoomLayerEnum.YSortLayer); + // enemy.PickUpWeapon(ActivityObject.Create(ActivityIdPrefix.Weapon + Utils.RandomChoose("0001", "0002", "0003"))); + // } //相机跟随玩家 GameCamera.Main.SetFollowTarget(Player);