Browse Source

修改玩家单位的位置算法,可以均匀的分布在指定的扇区内

大爷 1 year ago
parent
commit
0e3db95c90

+ 6 - 7
Unity/Assets/Scripts/Codes/Hotfix/Client/battle/BattleMgr_Cmd.cs

@@ -21,7 +21,6 @@ namespace ET
             switch (a.FuncIndex)
             {
                 case (int)BattleFunc.FUNC.Start:
-                    session.Call(new C2G_BattleNotify() { Message = BattleNotify.ClientIsReady.ToString() }).Coroutine();
                     session.Call(new C2G_BattleNotify()
                     {
                         Message = BattleNotify.StartRefreshMonster.ToString()
@@ -33,8 +32,8 @@ namespace ET
                     var rand = new Random();
                     foreach (var id in units)
                     {
-                        float r = rand.Next(1000) / 30.0f + 8;
-                        double ang = rand.Next(120) / 180.0f * Math.PI + Math.PI;
+                        float r = (float)Math.Sqrt(rand.Next(1225)) + 12;
+                        double ang = rand.Next(50) / 180.0f * Math.PI + Math.PI/2.0f + Math.PI;
                         //Log.Debug($"rand unit r({r}), ang({ang})");
                         float x = centerpos.X + (float)(r * Math.Cos(ang));
                         float y = centerpos.Y - (float)(r * Math.Sin(ang));
@@ -57,8 +56,8 @@ namespace ET
                     for (int i = 0; i < 2; i++)
                     {
                         var id = units2[rand.Next(units2.Length)];
-                        float r = rand.Next(1000) / 30.0f + 8;
-                        double ang = rand.Next(120) / 180.0f * Math.PI + Math.PI;
+                        float r = (float)Math.Sqrt(rand.Next(1225)) + 12;
+                        double ang = rand.Next(50) / 180.0f * Math.PI + Math.PI / 2.0f + Math.PI;
                         float x = centerpos.X + (float)(r * Math.Cos(ang));
                         float y = centerpos.Y - (float)(r * Math.Sin(ang));
 
@@ -79,8 +78,8 @@ namespace ET
                     for (int i = 0; i < 1; i++)
                     {
                         var id = units3[rand.Next(units3.Length)];
-                        float r = rand.Next(1000) / 30.0f + 8;
-                        double ang = rand.Next(120) / 180.0f * Math.PI + Math.PI;
+                        float r = (float)Math.Sqrt(rand.Next(1225)) + 12;
+                        double ang = rand.Next(50) / 180.0f * Math.PI + Math.PI / 2.0f + Math.PI;
                         float x = centerpos.X + (float)(r * Math.Cos(ang));
                         float y = centerpos.Y - (float)(r * Math.Sin(ang));
 

+ 3 - 0
Unity/Assets/Scripts/Codes/HotfixView/Client/Camera/CameraMgr.cs

@@ -28,6 +28,9 @@ namespace ET.Client
                     playable.Play();
                     playable.stopped += (pd) =>
                     {
+                        var session = PlayerComponent.Instance.ClientScene().GetComponent<SessionComponent>().Session;
+                        session.Call(new C2G_BattleNotify() { Message = BattleNotify.ClientIsReady.ToString() }).Coroutine();
+
                         EventSystem.Instance.Publish<ShowHUDEvent>();
 
                         GameObject.Destroy(playable);