Example #1
0
        //创建本地玩家
        private void CreateLocalUnit(M2C_InViewUnits message)
        {
            var localUnit = MongoHelper.FromBson <Unit>(message.SelfUnit.bytes);

            Unit.LocalUnit = localUnit;
            Log.Debug($"localUnit.Position {localUnit.Position} ");
            Log.Debug($"localUnit.Position {localUnit.Components.Count} ");
            //Log.Debug($"localUnit.Position  {localUnit.GetComponent<TransformComponent>()}");
            var go = UnityEngine.Object.Instantiate(PrefabHelper.GetUnitPrefab("LocalUnit"));

            go.transform.position = localUnit.Position;
            GameObject.DontDestroyOnLoad(go);
            foreach (var item in localUnit.Components.Values)
            {
                Log.Debug($"{item.GetType().Name}");
                ETModel.Game.EventSystem.RegisterSystem(item);
                item.Parent = localUnit;
            }
            //var unit = ETModel.EntityFactory.CreateWithId<Unit>(ETModel.Game.Scene, localUnit.Id);
            ETModel.Game.EventSystem.Awake(localUnit);
            localUnit.Awake(go);
            UnitComponent.Instance.Add(localUnit);
            //go.transform.GetChild(2).parent = null;
            //go.transform.GetChild(1).parent = null;
            localUnit.Position = localUnit.Position;
            Game.Scene.AddComponent <OperaComponent>();
        }
Example #2
0
 public static async ETTask <ETModel.Entity> OnEnterView(EntiyInfo entityInfo)
 {
     try
     {
         Log.Debug($"{EntityDefine.GetType(entityInfo.Type).Name}");
         if (entityInfo.Type == EntityDefine.GetTypeId <Unit>())
         {
             var remoteUnit = MongoHelper.FromBson <Unit>(entityInfo.BsonBytes.bytes);
             foreach (var item in remoteUnit.Components)
             {
                 Log.Debug($"remoteUnit {item.GetType().Name}");
             }
             //remoteUnit.Domain = ETModel.Game.Scene;
             //Unit unit = UnitFactory.Create(ETModel.Game.Scene, remoteUnit.Id);
             var go = UnityEngine.Object.Instantiate(PrefabHelper.GetUnitPrefab("RemoteUnit"));
             go.transform.position = remoteUnit.Position;
             GameObject.DontDestroyOnLoad(go);
             //var unit = EntityFactory.CreateWithId<Unit>(domain, id);
             ETModel.Game.EventSystem.RegisterSystem(remoteUnit);
             ETModel.Game.EventSystem.Awake(remoteUnit);
             remoteUnit.Awake(go);
             UnitComponent.Instance.Add(remoteUnit);
             remoteUnit.Position = remoteUnit.Position;
             //remoteUnit.Dispose();
             return(remoteUnit);
         }
         if (entityInfo.Type == EntityDefine.GetTypeId <Bullet>())
         {
             var remoteBullet = MongoHelper.FromBson <Bullet>(entityInfo.BsonBytes.bytes);
             //Log.Debug($"{remoteBullet}");
             //var bullet = ETModel.EntityFactory.CreateWithId<Bullet>(ETModel.Game.Scene, remoteBullet.Id);
             Log.Debug($"{remoteBullet.Components.Count}");
             ETModel.Game.EventSystem.RegisterSystem(remoteBullet);
             ETModel.Game.EventSystem.Awake(remoteBullet);
             BulletComponent.Instance.Add(remoteBullet);
             //remoteBullet.Dispose();
             return(remoteBullet);
         }
         if (entityInfo.Type == EntityDefine.GetTypeId <Monster>())
         {
             var remote = MongoHelper.FromBson <Monster>(entityInfo.BsonBytes.bytes);
             Log.Debug($"HealthComponent HP{remote.GetComponent<HealthComponent>().HP}");
             remote.Awake();
             remote.Domain   = ETModel.Game.Scene;
             remote.BodyView = GameObject.Instantiate(PrefabHelper.GetUnitPrefab("Monster"));
             GameObject.DontDestroyOnLoad(remote.BodyView);
             //var monster = MonsterFactory.Create(ETModel.Game.Scene, remote.Id);
             MonsterComponent.Instance.Add(remote);
             //remote.Position = remote.Position;
             //remote.Dispose();
             return(remote);
         }
     }
     catch (System.Exception e)
     {
         Log.Error(e);
     }
     return(null);
 }
Example #3
0
        public override async ETTask M2C_OnEnterViewHandler(ETModel.Session session, M2C_OnEnterView message)
        {
            var entity = await OnEnterView(message.EnterEntity);

            if (entity is Bullet bullet)
            {
                var pos = new Vector3(message.X / 100f, message.Y / 100f, message.Z / 100f);
                bullet.BodyView      = GameObject.Instantiate(PrefabHelper.GetUnitPrefab("BulletSmallBlue"), pos, Quaternion.identity);
                bullet.BodyView.name = $"Bullet#{bullet.Id}";
                bullet.TransformComponent.transform = bullet.BodyView.transform;
                bullet.TransformComponent.SetPosition(pos);
                Log.Debug($"bullet {pos}");
            }
            await ETTask.CompletedTask;
        }
Example #4
0
        public static GameObject Fire(this Unit self, Vector3 targetPoint, int bulletType, long bulletId)
        {
            var Position = self.Position;
            var BodyView = self.BodyView;

            GizmosDebug.Instance.Path.Clear();
            var p1 = Position + Vector3.up;
            var p2 = targetPoint;

            var bulletColliderObj = GameObject.Instantiate(PrefabHelper.GetUnitPrefab("BulletCollider"), p1, Quaternion.identity);

            bulletColliderObj.name = $"Bullet|{bulletType}|{bulletId}";
            var bulletModelObj = GameObject.Instantiate(PrefabHelper.GetUnitPrefab("BulletSmallBlue"), p1, Quaternion.identity);

            bulletModelObj.transform.parent = bulletColliderObj.transform;
            bulletColliderObj.transform.DOMove(p2, 1).onComplete = () => { GameObject.Destroy(bulletColliderObj); };
            return(bulletColliderObj);
        }