private void InitComponent(EnemyData data, EnemyType type, Sprite sprite, ITrajectoryData trajectoryData) { //更新飞机图片 Renderer = gameObject.AddOrGet <RenderComponent>(); Renderer.Init(); Renderer.SetSprite(sprite); //路径初始化 _path = new PathMgr(); _path.Init(transform, data, trajectoryData); gameObject.AddOrGet <CameraMove>().enabled = _path.NeedMoveWithCamera(); gameObject.AddOrGet <AutoDespawnComponent>(); gameObject.AddOrGet <EnemyTypeComponent>().Init(type); var lifeC = gameObject.AddOrGet <LifeComponent>(); lifeC.Init(data.life); gameObject.AddOrGet <EnemyBehaviour>().Init(data); _moveComponent = gameObject.AddOrGet <MoveComponent>(); _moveComponent.Init((float)data.speed); gameObject.AddOrGet <ColliderComponent>(); gameObject.AddOrGet <PlaneCollideMsgComponent>(); var bulletMgr = transform.Find("BulletRoot").AddOrGet <EnemyBulletMgr>(); bulletMgr.Init(data); if (_lifeView == null) { var lifeGo = LoadMgr.Single.LoadPrefabAndInstantiate(Paths.PREFAB_ENEMY_LIFE, transform); _lifeView = lifeGo.AddComponent <EnemyLifeView>(); } _lifeView.Init(); }
public void SetupDungeon() { CAMap(0.465f, 2, 4, 5); Print(map_draft); List <MapTile> region = FindLargestRegion(map_draft); playerEntity = Instantiate(actorEntityPrefab); playerEntity.Setup(); RenderComponent rc = playerEntity.GetComponent <RenderComponent>(); rc.SetSprite(spriteManager.GetSpriteByName("knight")); rc.GetComponent <RenderComponent>().SetColor(new Color(0.964f, 0.839f, 0.741f, 1f)); playerEntity.AddComponent(playerEntity.gameObject.AddComponent <MeleeCombatComponent>()); playerEntity.AddComponent(playerEntity.gameObject.AddComponent <PlayerComponent>()); NameComponent nc = playerEntity.GetComponent <NameComponent>(); nc.SetData("Player", "c3a38a"); playerEntity.AddComponent(nc); playerEntity.AddComponent("OrganicCreature"); CameraTrackObject.instance.trackObject = playerEntity.gameObject; EquipSlotsComponent esc = playerEntity.GetComponent <EquipSlotsComponent>(); esc.AddSlot("LeftHand"); esc.AddSlot("Chest"); entityList.Add(playerEntity); MapTile start = region[Random.Range(0, region.Count)]; map.PutEntityAt(playerEntity, start.x, start.y); playerEntity.PropagateEvent(new FEvent(FEventCodes.ENTITY_SPAWN, "x", start.x, "y", start.y)); FEntity sword = GambitPrototypes.instance.SpawnPrototype("sword", -1, -1); sword.PropagateEvent(new FEvent(FEventCodes.PICKED_UP, "carrier", playerEntity)); playerEntity.PropagateEvent(new FEvent(FEventCodes.RECEIVE_ITEM, "item", sword)); playerEntity.PropagateEvent(new FEvent(FEventCodes.EQUIP_ITEM, "item", sword, "slotName", "LeftHand")); FEntity armor = GambitPrototypes.instance.SpawnPrototype("armor", -1, -1); //Player can't die. armor.AddComponent("InvulnerableComponent"); armor.PropagateEvent(new FEvent(FEventCodes.PICKED_UP, "carrier", playerEntity)); playerEntity.PropagateEvent(new FEvent(FEventCodes.RECEIVE_ITEM, "item", armor)); playerEntity.PropagateEvent(new FEvent(FEventCodes.EQUIP_ITEM, "item", armor, "slotName", "Chest")); nonPlayerAgents = new List <FEntity>(); for (int i = 0; i < 10; i++) { start = region[Random.Range(0, region.Count)]; SpawnPrototypeAt("skeleton_fighter", start.x, start.y); } for (int i = 0; i < 5; i++) { start = region[Random.Range(0, region.Count)]; SpawnPrototypeAt("healingpotion", start.x, start.y); } for (int i = 0; i < 20; i++) { start = region[Random.Range(0, region.Count)]; SpawnPrototypeAt("grass", start.x, start.y); } }