//创建本地玩家 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>(); }
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); }
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; }
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); }