public void Initialize(Entity _playerEntity) { m_playerEntity = _playerEntity; m_manager = World.Active.EntityManager; m_enemySys = World.Active.GetOrCreateSystem <EnemyComponentSystem>(); m_isInitialized = true; }
//------------------------------------------ // 初期化周り //------------------------------------------ #region ===== INITIALIZE ===== protected override void OnCreate() { m_entityManager = World.Active.EntityManager; m_enemySys = World.Active.GetOrCreateSystem <EnemyComponentSystem>(); }
void CreateEnemy(EnemyScriptableObject _data, World _currentWorld, int index) { EntityManager manager = _currentWorld.EntityManager; Entity model = manager.Instantiate(GameObjectConversionUtility.ConvertGameObjectHierarchy(_data.ObjectModel, _currentWorld)); #if UNITY_EDITOR manager.SetName(model, $"Enemy_{index:D4}"); #endif // Entity 管理に登録 EnemyComponentSystem enemySys = _currentWorld.GetOrCreateSystem <EnemyComponentSystem>(); int enemyId = enemySys.GetInstanceId(); enemySys.AddEnemyEntity(enemyId, model); // Enemy の基本データ EnemyData enemyData = new EnemyData() { Id = enemyId, HP = _data.HP, Score = _data.Score }; manager.AddComponentData(model, enemyData); Translation initPos = new Translation(); initPos.Value = new float3(_data.DefaultPosition); manager.SetComponentData <Translation>(model, initPos); Translation t = new Translation(); t.Value = new float3(0f, 0f, 0.0f); var moveData = new ObjectMoveData() { Speed = 0.0f, Direction = t, }; manager.AddComponentData(model, moveData); var bulletFactorySys = _currentWorld.GetOrCreateSystem <BulletFactorySystem>(); Camera cam = Camera.main; float frustumHeight = cam.transform.position.y * Mathf.Tan(cam.fieldOfView * 0.5f * Mathf.Deg2Rad); float frustumWidth = frustumHeight / Screen.height * Screen.width; float maxSize = math.max(frustumHeight * 2.0f, frustumWidth * 2.0f); for (int i = 0; i < _data.Nway; i++) { var factoryEntity = manager.CreateEntity(); var bulletFactoryData = new BulletFactoryData() { ParentEntity = model, PositionOffset = float3.zero, RotationOffset = float3.zero, SpawnCycle = _data.SpawnCycle, SpawnTimer = _data.SpawnCycle, /* バレットパラメーター */ Speed = _data.BuleltSpeed, MoveDirection = Utils.CalcDirection(i, _data.Nway - 1, new float3(0f, 0f, -1f), _data.Angle), Damage = 1, BulletType = 1, }; if (bulletFactorySys != null) { int count = BulletFactorySystem.CalcPreloadObjectCount(maxSize, bulletFactoryData.Speed, 1.0f, bulletFactoryData.SpawnCycle); bulletFactoryData.BulletListHandler = bulletFactorySys.CreateBulletObject(count, _data.BulletModel); manager.AddComponentData(factoryEntity, bulletFactoryData); // Enemy 管理システムにも登録 enemySys?.AddBulletFactoryRelation(enemyData.Id, factoryEntity); } } }