public void CreateRandomItem(ItemCreatePointComponent comp) { //创建一个可以捡的道具 CollisionComponent colc = new CollisionComponent(); colc.area.direction = new Vector3(1, 0, 0); colc.area.position = comp.pos.ToVector(); colc.area.areaType = AreaType.Circle; colc.area.radius = 0.5f; //colc.isStatic = true; ItemComponent ic = new ItemComponent(); AssetComponent assert = new AssetComponent(); TransfromComponent tc = new TransfromComponent(); tc.pos = comp.pos; int r = m_world.GetRandom() % comp.randomList.Count; //Debug.Log("r " + r + " comp.randomList.Count " + comp.randomList.Count); string itemID = comp.randomList[r]; ic.ItemData = DataGenerateManager <ItemsDataGenerate> .GetData(itemID); assert.m_assetName = ic.ItemData.m_modelid; ic.ItemID = int.Parse(itemID); string identify = comp.Entity.ID + "Item" + comp.pos.ToVector(); //通过标识符保证唯一ID m_world.CreateEntity(identify, colc, ic, assert, tc); }
void CreateFlyObject(SkillDataGenerate skillData, EntityBase skiller) { CampComponent campComp = skiller.GetComp <CampComponent>(); //Debug.Log("CreateFlyObject " + skiller.ID + " " + campComp.creater); if (skillData.m_FlyObjectName.Length != 0) { List <CreatPostionInfo> poss = GetCreatePostionInfos(skillData, skiller, skillData.m_FlyObjectName.Length); for (int i = 0; i < poss.Count; i++) { FlyDataGenerate flyData = DataGenerateManager <FlyDataGenerate> .GetData(skillData.m_FlyObjectName[i]); TransfromComponent tc = new TransfromComponent(); tc.pos = poss[i].m_pos; tc.dir = poss[i].m_dir; MoveComponent mc = new MoveComponent(); mc.pos = poss[i].m_pos; mc.dir = poss[i].m_dir; mc.m_velocity = flyData.m_Speed; LifeSpanComponent lsc = new LifeSpanComponent(); lsc.lifeTime = flyData.m_LiveTime; AssetComponent ac = new AssetComponent(); ac.m_assetName = flyData.m_ModelName; CampComponent cp = new CampComponent(); cp.camp = campComp.camp; cp.creater = campComp.creater; CollisionComponent cc = new CollisionComponent(); cc.area.areaType = AreaType.Circle; cc.area.radius = flyData.m_Radius / 1000; FlyObjectComponent fc = new FlyObjectComponent(); fc.createrID = skiller.ID; fc.damage = skillData.m_FlyDamageValue; fc.flyObjectID = skillData.m_FlyObjectName[i]; string identify = skiller.ID + "FlyObject" + i + poss[i].m_pos; m_world.CreateEntity(identify, tc, mc, ac, cp, lsc, cc, fc); } } }
void BuffEffect(EntityBase entity, BuffInfo bi, BuffEffectComponent bec) { BuffEffectPackage bep = bec.GetBuffEffectPackage(bi.buffID); if (bep == null) { bep = new BuffEffectPackage(); bep.buffID = bi.buffID; bec.effectList.Add(bep); } if (bi.BuffData.m_BuffFX != "null") { if (bep.buffEffectID != 0 && !m_world.GetEntityIsExist(bep.buffEffectID)) { bep.buffEffectID = 0; } if (bep.buffEffectID == 0) { TransfromComponent mc = new TransfromComponent(); mc.parentID = entity.ID; AssetComponent ac = new AssetComponent(); ac.m_assetName = bi.BuffData.m_BuffFX; string identifier = "BuffEffect" + entity.ID + bi.buffID; int EffectID = m_world.GetEntityID(identifier); m_world.CreateEntity(identifier, mc, ac); bep.buffEffectID = EffectID; Debug.Log("创建BUFF " + EffectID); } else { Debug.Log("已存在"); } } }
public override void OnEntityOptimizeCreate(EntityBase entity) { if (GetAllExistComp(new string[] { "AssetComponent", "TransfromComponent" }, entity)) { Debug.Log("接收到创建 "); AddComp(entity); AssetComponent ac = entity.GetComp <AssetComponent>(); TransfromComponent tc = entity.GetComp <TransfromComponent>(); PerfabComponent comp = entity.GetComp <PerfabComponent>(); comp.perfab = GameObjectManager.CreateGameObject(ac.m_assetName); comp.hardPoint = comp.perfab.GetComponent <HardPointComponent>(); if (tc.parentID == 0) { comp.perfab.transform.position = tc.pos.ToVector(); } else { EntityBase parent = m_world.GetEntity(tc.parentID); //if (parent.GetExistComp<PerfabComponent>()) //{ // PerfabComponent pc = parent.GetComp<PerfabComponent>(); // comp.perfab.transform.SetParent(pc.perfab.transform); //} comp.perfab.transform.localPosition = tc.pos.ToVector(); } //创建动画组件 if (comp.perfab.GetComponent <Animator>() != null) { AnimComponent anc = entity.AddComp <AnimComponent>(); anc.anim = comp.perfab.GetComponent <Animator>(); anc.perfab = comp.perfab; anc.waistNode = comp.hardPoint.waistNode; } } }
public static void TokenUseSkill(WorldBase world, int createrID, string skillID, Vector3 pos, Vector3 dir) { //Debug.Log("TokenUseSkill pos" + pos + " frame " + world.FrameCount + " skillID" + skillID); if (skillID != null && skillID != "null" && skillID != "Null") { SkillStatusComponent ssc = new SkillStatusComponent(); ssc.m_skillTime = 0; ssc.m_skillStstus = SkillStatusEnum.Before; ssc.m_isTriggerSkill = false; ssc.m_isHit = false; ssc.m_skillList.Add(new SkillData(skillID)); ssc.m_currentSkillData = ssc.GetSkillData(skillID); ssc.m_currentSkillData.UpdateInfo(); ssc.skillDir.FromVector(dir); if (ssc.m_currentSkillData.LaterTime == 0) { Debug.LogError("技能代 " + skillID + "的持续时间不能为 0 !"); return; } TransfromComponent tc = new TransfromComponent(); tc.pos.FromVector(pos); tc.dir.FromVector(dir); //打印 Debug.DrawRay(tc.pos.ToVector(), -tc.dir.ToVector(), Color.green, 10); CampComponent cc = new CampComponent(); cc.creater = createrID; LifeSpanComponent lsc = new LifeSpanComponent(); lsc.lifeTime = (int)(ssc.m_currentSkillData.LaterTime * 1000); world.CreateEntity(createrID + "SkillToken", tc, ssc, cc, lsc); } }
public void CreateEffect(EntityBase entity, string effectName, HardPointEnum hardPoint, float time, float offset) { PerfabComponent pc = entity.GetComp <PerfabComponent>(); SkillStatusComponent ssc = entity.GetComp <SkillStatusComponent>(); MoveComponent mc = entity.GetComp <MoveComponent>(); //挂载点完全放弃了 Transform creatPoint = pc.hardPoint.hardPoint.GetHardPoint(hardPoint); Vector3 createPos = mc.pos.ToVector() + ssc.skillDir.ToVector() * offset; Vector3 charactorEugle = Vector3.zero; Vector3 m_aimWaistDir = ssc.skillDir.ToVector(); float euler = Mathf.Atan2(m_aimWaistDir.x, m_aimWaistDir.z) * Mathf.Rad2Deg; if (m_aimWaistDir.z == 0) { euler = 0; } charactorEugle.y = euler; TransfromComponent etc = new TransfromComponent(); etc.pos.FromVector(createPos); etc.dir.FromVector(m_aimWaistDir); AssetComponent eac = new AssetComponent(); eac.m_assetName = effectName; LifeSpanComponent elc = new LifeSpanComponent(); elc.lifeTime = (int)(time * 1000); m_world.CreateEntity("Effect" + effectName + entity.ID + createPos, etc, eac, elc); }
public void CreateRandomItem(ItemCreatePointComponent comp) { //创建一个可以捡的道具 CollisionComponent colc = new CollisionComponent(); colc.area.position = comp.pos.ToVector(); colc.area.areaType = AreaType.Circle; colc.area.radius = 0.5f; ItemComponent ic = new ItemComponent(); AssetComponent assert = new AssetComponent(); TransfromComponent tc = new TransfromComponent(); tc.pos = comp.pos; Random random = new Random(); int r = random.Next() % comp.randomList.Count; assert.m_assetName = comp.randomList[r]; string identify = comp.Entity.ID + "Item" + comp.pos.ToVector(); //通过标识符保证唯一ID m_world.CreateEntity(identify, colc, ic, assert, tc); }
public void PlayerJoin(EntityBase entity) { PlayerComponent playerComp = null; if (!entity.GetExistComp <PlayerComponent>()) { playerComp = new PlayerComponent(); playerComp.characterID = "1"; playerComp.nickName = "Test model"; ElementData e1 = new ElementData(); e1.id = 100; e1.num = 10; playerComp.elementData.Add(e1); ElementData e2 = new ElementData(); e2.id = 101; e2.num = 10; playerComp.elementData.Add(e2); ElementData e3 = new ElementData(); e3.id = 102; e3.num = 10; playerComp.elementData.Add(e3); ElementData e4 = new ElementData(); e4.id = 103; e4.num = 00; playerComp.elementData.Add(e4); entity.AddComp(playerComp); } if (!entity.GetExistComp <CommandComponent>()) { CommandComponent c = new CommandComponent(); entity.AddComp(c); } if (!entity.GetExistComp <TransfromComponent>()) { TransfromComponent c = new TransfromComponent(); entity.AddComp(c); } if (!entity.GetExistComp <AssetComponent>()) { AssetComponent c = new AssetComponent(); c.m_assetName = "famale_01"; entity.AddComp(c); } if (!entity.GetExistComp <MoveComponent>()) { MoveComponent c = new MoveComponent(); c.pos.FromVector(new Vector3(15, 0, 0)); entity.AddComp(c); } if (!entity.GetExistComp <SkillStatusComponent>()) { SkillStatusComponent c = new SkillStatusComponent(); DataTable data = DataManager.GetData("SkillData"); for (int i = 0; i < data.TableIDs.Count; i++) { c.m_skillList.Add(new SkillData(data.TableIDs[i], i)); } entity.AddComp(c); } if (!entity.GetExistComp <CDComponent>()) { CDComponent c = new CDComponent(); entity.AddComp(c); } if (!entity.GetExistComp <CampComponent>()) { CampComponent c = new CampComponent(); c.creater = entity.ID; entity.AddComp(c); } if (!entity.GetExistComp <MoveComponent>()) { MoveComponent c = new MoveComponent(); entity.AddComp(c); } if (!entity.GetExistComp <CollisionComponent>()) { CollisionComponent c = new CollisionComponent(); c.area.areaType = AreaType.Circle; c.area.radius = 0.5f; entity.AddComp(c); } if (!entity.GetExistComp <LifeComponent>()) { LifeComponent c = new LifeComponent(); c.maxLife = playerComp.CharacterData.m_hp; c.life = playerComp.CharacterData.m_hp; entity.AddComp(c); } if (!entity.GetExistComp <BlowFlyComponent>()) { BlowFlyComponent c = new BlowFlyComponent(); entity.AddComp(c); } }
public void PlayerJoin(EntityBase entity) { ConnectionComponent connectComp = entity.GetComp <ConnectionComponent>(); PlayerComponent playerComp = null; if (!entity.GetExistComp <PlayerComponent>()) { playerComp = new PlayerComponent(); entity.AddComp(playerComp); } else { playerComp = entity.GetComp <PlayerComponent>(); } //将角色ID传入游戏 playerComp.characterID = connectComp.m_session.player.characterID; playerComp.nickName = connectComp.m_session.player.playerID; ElementData e1 = new ElementData(); e1.id = 100; e1.num = 10; playerComp.elementData.Add(e1); ElementData e2 = new ElementData(); e2.id = 101; e2.num = 10; playerComp.elementData.Add(e2); ElementData e3 = new ElementData(); e3.id = 102; e3.num = 10; playerComp.elementData.Add(e3); ElementData e4 = new ElementData(); e4.id = 103; e4.num = 00; playerComp.elementData.Add(e4); if (!entity.GetExistComp <CommandComponent>()) { CommandComponent c = new CommandComponent(); entity.AddComp(c); } if (!entity.GetExistComp <TransfromComponent>()) { TransfromComponent c = new TransfromComponent(); c.pos.FromVector(new Vector3(15, 0, 0)); entity.AddComp(c); } if (!entity.GetExistComp <AssetComponent>()) { AssetComponent c = new AssetComponent(); c.m_assetName = playerComp.CharacterData.m_ModelID; entity.AddComp(c); } if (!entity.GetExistComp <MoveComponent>()) { MoveComponent c = new MoveComponent(); c.pos.FromVector(new Vector3(15, 0, 0)); entity.AddComp(c); } if (!entity.GetExistComp <SkillStatusComponent>()) { SkillStatusComponent c = new SkillStatusComponent(); DataTable data = DataManager.GetData("SkillData"); for (int i = 0; i < data.TableIDs.Count; i++) { c.m_skillList.Add(new SkillData(data.TableIDs[i], i)); } entity.AddComp(c); } if (!entity.GetExistComp <CDComponent>()) { CDComponent c = new CDComponent(); entity.AddComp(c); } if (!entity.GetExistComp <CampComponent>()) { CampComponent c = new CampComponent(); c.creater = entity.ID; entity.AddComp(c); } if (!entity.GetExistComp <MoveComponent>()) { MoveComponent c = new MoveComponent(); entity.AddComp(c); } if (!entity.GetExistComp <CollisionComponent>()) { CollisionComponent c = new CollisionComponent(); c.area.areaType = AreaType.Circle; c.area.radius = 0.5f; entity.AddComp(c); } if (!entity.GetExistComp <LifeComponent>()) { LifeComponent c = new LifeComponent(); c.maxLife = playerComp.CharacterData.m_hp; c.life = playerComp.CharacterData.m_hp; entity.AddComp(c); } if (!entity.GetExistComp <BlowFlyComponent>()) { BlowFlyComponent c = new BlowFlyComponent(); entity.AddComp(c); } //预测一个输入 //TODO 放在框架中 if (entity.GetExistComp <ConnectionComponent>()) { ConnectionComponent cc = entity.GetComp <ConnectionComponent>(); cc.m_lastInputCache = new CommandComponent(); cc.m_defaultInput = new CommandComponent(); } GameTimeComponent gtc = m_world.GetSingletonComp <GameTimeComponent>(); gtc.GameTime = 10000 * 1000; }